This commit provides definitions of builtins with the generic address space. One concept to consider is the difference between supporting the generic address space from the user's perspective and the requirement for libclc as a compiler implementation detail to define separate generic address space builtins. In practice a target (like NVPTX) might notionally support the generic address space, but it's mapped to the same LLVM target address space as another address space (often the private one). In such cases libclc must be careful not to define both private and generic overloads of the same builtin. We track these two concepts separately, and make the assumption that if the generic address space does clash with another, it's with the private one. We track the concepts separately because there are some builtins such as atomics that are defined for the generic address space but not the private address space.
23 lines
951 B
PHP
23 lines
951 B
PHP
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#define __CLC_DECLARE_SINCOS(ADDRSPACE, TYPE) \
|
|
_CLC_OVERLOAD _CLC_DEF TYPE __clc_sincos(TYPE x, ADDRSPACE TYPE *cosval) { \
|
|
*cosval = __clc_cos(x); \
|
|
return __clc_sin(x); \
|
|
}
|
|
|
|
__CLC_DECLARE_SINCOS(global, __CLC_GENTYPE)
|
|
__CLC_DECLARE_SINCOS(local, __CLC_GENTYPE)
|
|
__CLC_DECLARE_SINCOS(private, __CLC_GENTYPE)
|
|
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
|
|
__CLC_DECLARE_SINCOS(generic, __CLC_GENTYPE)
|
|
#endif
|
|
|
|
#undef __CLC_DECLARE_SINCOS
|