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.
38 lines
1.2 KiB
PHP
38 lines
1.2 KiB
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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if __CLC_FPSIZE == 32
|
|
|
|
#ifndef __CLC_SCALAR
|
|
|
|
#if __CLC_VECSIZE == 3
|
|
#define __CLC_OFFSET 4
|
|
#else
|
|
#define __CLC_OFFSET __CLC_VECSIZE
|
|
#endif
|
|
|
|
FUNC(__CLC_VECSIZE, __CLC_VECSIZE, __CLC_OFFSET, __CLC_GENTYPE, __private);
|
|
FUNC(__CLC_VECSIZE, __CLC_VECSIZE, __CLC_OFFSET, __CLC_GENTYPE, __local);
|
|
FUNC(__CLC_VECSIZE, __CLC_VECSIZE, __CLC_OFFSET, __CLC_GENTYPE, __global);
|
|
FUNC(__CLC_VECSIZE, __CLC_VECSIZE, __CLC_OFFSET, __CLC_GENTYPE, __constant);
|
|
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
|
|
FUNC(__CLC_VECSIZE, __CLC_VECSIZE, __CLC_OFFSET, __CLC_GENTYPE, __generic);
|
|
#endif
|
|
|
|
#undef __CLC_OFFSET
|
|
#else
|
|
FUNC(, 1, 1, __CLC_GENTYPE, __private);
|
|
FUNC(, 1, 1, __CLC_GENTYPE, __local);
|
|
FUNC(, 1, 1, __CLC_GENTYPE, __global);
|
|
FUNC(, 1, 1, __CLC_GENTYPE, __constant);
|
|
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
|
|
FUNC(, 1, 1, __CLC_GENTYPE, __generic);
|
|
#endif
|
|
#endif
|
|
#endif
|