xref: /llvm-project/clang/test/CodeGen/amdgpu-address-spaces.cpp (revision 082f87c9d418eb7b5a731e16b50e6649e387cb5a)
11b7a095eSJoseph Huber // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals --version 3
21b7a095eSJoseph Huber // RUN: %clang_cc1 -cc1 -triple amdgcn-amd-amdhsa -emit-llvm %s -o - | FileCheck %s
31b7a095eSJoseph Huber 
41b7a095eSJoseph Huber int [[clang::opencl_global]] a = 100;
51b7a095eSJoseph Huber int [[clang::opencl_generic]] b = 42;
61b7a095eSJoseph Huber int [[clang::opencl_constant]] c = 999;
71b7a095eSJoseph Huber [[clang::loader_uninitialized]] int [[clang::opencl_local]] d;
81b7a095eSJoseph Huber [[clang::loader_uninitialized]] int [[clang::opencl_private]] e;
91b7a095eSJoseph Huber 
101b7a095eSJoseph Huber int [[clang::address_space(1)]] x = 100;
111b7a095eSJoseph Huber int [[clang::address_space(0)]] y = 42;
121b7a095eSJoseph Huber int [[clang::address_space(4)]] z = 999;
131b7a095eSJoseph Huber [[clang::loader_uninitialized]] int [[clang::address_space(3)]] w;
141b7a095eSJoseph Huber [[clang::loader_uninitialized]] int [[clang::address_space(5)]] u;
151b7a095eSJoseph Huber 
161b7a095eSJoseph Huber int [[clang::address_space(6)]] aaa = 1000;
171b7a095eSJoseph Huber int [[clang::address_space(999)]] bbb = 1234;
181b7a095eSJoseph Huber 
191b7a095eSJoseph Huber //.
201b7a095eSJoseph Huber // CHECK: @a = addrspace(1) global i32 100, align 4
211b7a095eSJoseph Huber // CHECK: @b = global i32 42, align 4
221b7a095eSJoseph Huber // CHECK: @c = addrspace(4) constant i32 999, align 4
231b7a095eSJoseph Huber // CHECK: @d = addrspace(3) global i32 undef, align 4
241b7a095eSJoseph Huber // CHECK: @e = addrspace(5) global i32 undef, align 4
251b7a095eSJoseph Huber // CHECK: @x = addrspace(1) global i32 100, align 4
261b7a095eSJoseph Huber // CHECK: @y = global i32 42, align 4
271b7a095eSJoseph Huber // CHECK: @z = addrspace(4) global i32 999, align 4
281b7a095eSJoseph Huber // CHECK: @w = addrspace(3) global i32 undef, align 4
291b7a095eSJoseph Huber // CHECK: @u = addrspace(5) global i32 undef, align 4
301b7a095eSJoseph Huber // CHECK: @aaa = addrspace(6) global i32 1000, align 4
311b7a095eSJoseph Huber // CHECK: @bbb = addrspace(999) global i32 1234, align 4
32*082f87c9SSaiyedul Islam // CHECK: @__oclc_ABI_version = weak_odr hidden local_unnamed_addr addrspace(4) constant i32 500
331b7a095eSJoseph Huber //.
341b7a095eSJoseph Huber // CHECK-LABEL: define dso_local amdgpu_kernel void @foo(
351b7a095eSJoseph Huber // CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
361b7a095eSJoseph Huber // CHECK-NEXT:  entry:
371b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(1) @a, align 4
381b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr @b, align 4
391b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(3) @d, align 4
401b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(5) @e, align 4
411b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(1) @x, align 4
421b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr @y, align 4
431b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(3) @d, align 4
441b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(5) @u, align 4
451b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(6) @aaa, align 4
461b7a095eSJoseph Huber // CHECK-NEXT:    store i32 0, ptr addrspace(999) @bbb, align 4
471b7a095eSJoseph Huber // CHECK-NEXT:    ret void
481b7a095eSJoseph Huber //
foo()491b7a095eSJoseph Huber extern "C" [[clang::amdgpu_kernel]] void foo() {
501b7a095eSJoseph Huber   a = 0;
511b7a095eSJoseph Huber   b = 0;
521b7a095eSJoseph Huber   d = 0;
531b7a095eSJoseph Huber   e = 0;
541b7a095eSJoseph Huber 
551b7a095eSJoseph Huber   x = 0;
561b7a095eSJoseph Huber   y = 0;
571b7a095eSJoseph Huber   d = 0;
581b7a095eSJoseph Huber   u = 0;
591b7a095eSJoseph Huber 
601b7a095eSJoseph Huber   aaa = 0;
611b7a095eSJoseph Huber   bbb = 0;
621b7a095eSJoseph Huber }
63