Files
clang-p2996/clang/test/CodeGenSYCL/address-space-mangling.cpp
Alexey Bader 7818906ca1 [SYCL] Implement SYCL address space attributes handling
Default address space (applies when no explicit address space was
specified) maps to generic (4) address space.

Added SYCL named address spaces `sycl_global`, `sycl_local` and
`sycl_private` defined as sub-sets of the default address space.

Static variables without address space now reside in global address
space when compile for SPIR target, unless they have an explicit address
space qualifier in source code.

Differential Revision: https://reviews.llvm.org/D89909
2021-04-26 13:44:10 +03:00

31 lines
1.1 KiB
C++

// RUN: %clang_cc1 -triple spir64 -fsycl-is-device -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s --check-prefix=SPIR
// RUN: %clang_cc1 -triple x86_64 -fsycl-is-device -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s --check-prefix=X86
// REQUIRES: x86-registered-target
void foo(__attribute__((opencl_global)) int *);
void foo(__attribute__((opencl_local)) int *);
void foo(__attribute__((opencl_private)) int *);
void foo(int *);
// SPIR: declare spir_func void @_Z3fooPU3AS1i(i32 addrspace(1)*) #1
// SPIR: declare spir_func void @_Z3fooPU3AS3i(i32 addrspace(3)*) #1
// SPIR: declare spir_func void @_Z3fooPU3AS0i(i32*) #1
// SPIR: declare spir_func void @_Z3fooPi(i32 addrspace(4)*) #1
// X86: declare void @_Z3fooPU8SYglobali(i32*) #1
// X86: declare void @_Z3fooPU7SYlocali(i32*) #1
// X86: declare void @_Z3fooPU9SYprivatei(i32*) #1
// X86: declare void @_Z3fooPi(i32*) #1
void test() {
__attribute__((opencl_global)) int *glob;
__attribute__((opencl_local)) int *loc;
__attribute__((opencl_private)) int *priv;
int *def;
foo(glob);
foo(loc);
foo(priv);
foo(def);
}