xref: /llvm-project/clang/test/CodeGenOpenCL/opencl_types.cl (revision 1100d6a995fe392b3885b8d2bd5afed2bd57e80c)
1// RUN: %clang_cc1 -cl-std=CL2.0 %s -triple "spir-unknown-unknown" -emit-llvm -o - -O0 | FileCheck %s --check-prefix=CHECK-SPIR
2// RUN: %clang_cc1 -cl-std=CL2.0 %s -triple "amdgcn--amdhsa" -emit-llvm -o - -O0 | FileCheck %s --check-prefix=CHECK-AMDGCN
3
4#define CLK_ADDRESS_CLAMP_TO_EDGE       2
5#define CLK_NORMALIZED_COORDS_TRUE      1
6#define CLK_FILTER_NEAREST              0x10
7#define CLK_FILTER_LINEAR               0x20
8
9constant sampler_t glb_smp = CLK_ADDRESS_CLAMP_TO_EDGE|CLK_NORMALIZED_COORDS_TRUE|CLK_FILTER_NEAREST;
10
11void fnc1(image1d_t img) {}
12// CHECK-SPIR: @fnc1(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 0)
13// CHECK-AMDGCN: @fnc1(ptr addrspace(4)
14
15void fnc1arr(image1d_array_t img) {}
16// CHECK-SPIR: @fnc1arr(target("spirv.Image", void, 0, 0, 1, 0, 0, 0, 0)
17// CHECK-AMDGCN: @fnc1arr(ptr addrspace(4)
18
19void fnc1buff(image1d_buffer_t img) {}
20// CHECK-SPIR: @fnc1buff(target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 0)
21// CHECK-AMDGCN: @fnc1buff(ptr addrspace(4)
22
23void fnc2(image2d_t img) {}
24// CHECK-SPIR: @fnc2(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)
25// CHECK-AMDGCN: @fnc2(ptr addrspace(4)
26
27void fnc2arr(image2d_array_t img) {}
28// CHECK-SPIR: @fnc2arr(target("spirv.Image", void, 1, 0, 1, 0, 0, 0, 0)
29// CHECK-AMDGCN: @fnc2arr(ptr addrspace(4)
30
31void fnc3(image3d_t img) {}
32// CHECK-SPIR: @fnc3(target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0)
33// CHECK-AMDGCN: @fnc3(ptr addrspace(4)
34
35void fnc4smp(sampler_t s) {}
36// CHECK-SPIR-LABEL: define {{.*}}void @fnc4smp(target("spirv.Sampler")
37// CHECK-AMDGCN-LABEL: define {{.*}}void @fnc4smp(ptr addrspace(4)
38
39kernel void foo(image1d_t img) {
40  sampler_t smp = CLK_ADDRESS_CLAMP_TO_EDGE|CLK_NORMALIZED_COORDS_TRUE|CLK_FILTER_LINEAR;
41  // CHECK-SPIR: alloca target("spirv.Sampler")
42  // CHECK-AMDGCN: alloca ptr addrspace(4)
43  event_t evt;
44  // CHECK-SPIR: alloca target("spirv.Event")
45  // CHECK-AMDGCN: alloca ptr
46  clk_event_t clk_evt;
47  // CHECK-SPIR: alloca target("spirv.DeviceEvent")
48  // CHECK-AMDGCN: alloca ptr addrspace(1)
49  queue_t queue;
50  // CHECK-SPIR: alloca target("spirv.Queue")
51  // CHECK-AMDGCN: alloca ptr addrspace(1)
52  reserve_id_t rid;
53  // CHECK-SPIR: alloca target("spirv.ReserveId")
54  // CHECK-AMDGCN: alloca ptr addrspace(1)
55  // CHECK-SPIR: store target("spirv.Sampler")
56  // CHECK-AMDGCN: store ptr addrspace(4)
57  fnc4smp(smp);
58  // CHECK-SPIR: call {{.*}}void @fnc4smp(target("spirv.Sampler")
59  // CHECK-AMDGCN: call {{.*}}void @fnc4smp(ptr addrspace(4)
60  fnc4smp(glb_smp);
61  // CHECK-SPIR: call {{.*}}void @fnc4smp(target("spirv.Sampler")
62  // CHECK-AMDGCN: call {{.*}}void @fnc4smp(ptr addrspace(4)
63}
64
65kernel void foo_ro_pipe(read_only pipe int p) {}
66// CHECK-SPIR: @foo_ro_pipe(target("spirv.Pipe", 0) %p)
67// CHECK-AMDGCN: @foo_ro_pipe(ptr addrspace(1) %p)
68
69kernel void foo_wo_pipe(write_only pipe int p) {}
70// CHECK-SPIR: @foo_wo_pipe(target("spirv.Pipe", 1) %p)
71// CHECK-AMDGCN: @foo_wo_pipe(ptr addrspace(1) %p)
72
73void __attribute__((overloadable)) bad1(image1d_t b, image2d_t c, image2d_t d) {}
74// CHECK-SPIR-LABEL: @{{_Z4bad114ocl_image1d_ro14ocl_image2d_roS0_|"\\01\?bad1@@\$\$J0YAXPAUocl_image1d_ro@@PAUocl_image2d_ro@@1@Z"}}
75// CHECK-AMDGCN-LABEL: @{{_Z4bad114ocl_image1d_ro14ocl_image2d_roS0_|"\\01\?bad1@@\$\$J0YAXPAUocl_image1d_ro@@PAUocl_image2d_ro@@1@Z"}}(ptr addrspace(4){{.*}}ptr addrspace(4){{.*}}ptr addrspace(4){{.*}})
76
77
78// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image1d_array_ro(ptr addrspace(4) %img)
79__attribute__((overloadable))
80void img_type_mangle_test(read_only image1d_array_t img) {}
81
82// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image1d_array_wo(ptr addrspace(4) %img)
83__attribute__((overloadable))
84void img_type_mangle_test(write_only image1d_array_t img) {}
85
86// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image1d_array_rw(ptr addrspace(4) %img)
87__attribute__((overloadable))
88void img_type_mangle_test(read_write image1d_array_t img) {}
89
90
91// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test21ocl_image1d_buffer_ro(ptr addrspace(4) %img)
92__attribute__((overloadable))
93void img_type_mangle_test(read_only image1d_buffer_t img) {}
94
95// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test21ocl_image1d_buffer_wo(ptr addrspace(4) %img)
96__attribute__((overloadable))
97void img_type_mangle_test(write_only image1d_buffer_t img) {}
98
99// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test21ocl_image1d_buffer_rw(ptr addrspace(4) %img)
100__attribute__((overloadable))
101void img_type_mangle_test(read_write image1d_buffer_t img) {}
102
103
104// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image2d_array_ro(ptr addrspace(4) %img)
105__attribute__((overloadable))
106void img_type_mangle_test(read_only image2d_array_t img) {}
107
108// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image2d_array_wo(ptr addrspace(4) %img)
109__attribute__((overloadable))
110void img_type_mangle_test(write_only image2d_array_t img) {}
111
112// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test20ocl_image2d_array_rw(ptr addrspace(4) %img)
113__attribute__((overloadable))
114void img_type_mangle_test(read_write image2d_array_t img) {}
115
116
117// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image1d_ro(ptr addrspace(4) %img)
118__attribute__((overloadable))
119void img_type_mangle_test(read_only image1d_t img) {}
120
121// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image1d_wo(ptr addrspace(4) %img)
122__attribute__((overloadable))
123void img_type_mangle_test(write_only image1d_t img) {}
124
125// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image1d_rw(ptr addrspace(4) %img)
126__attribute__((overloadable))
127void img_type_mangle_test(read_write image1d_t img) {}
128
129
130// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image2d_ro(ptr addrspace(4) %img)
131__attribute__((overloadable))
132void img_type_mangle_test(read_only image2d_t img) {}
133
134// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image2d_wo(ptr addrspace(4) %img)
135__attribute__((overloadable))
136void img_type_mangle_test(write_only image2d_t img) {}
137
138// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image2d_rw(ptr addrspace(4) %img)
139__attribute__((overloadable))
140void img_type_mangle_test(read_write image2d_t img) {}
141
142
143// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image3d_ro(ptr addrspace(4) %img)
144__attribute__((overloadable))
145void img_type_mangle_test(read_only image3d_t img) {}
146
147// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image3d_wo(ptr addrspace(4) %img)
148__attribute__((overloadable))
149void img_type_mangle_test(write_only image3d_t img) {}
150
151// CHECK-AMDGCN: define dso_local void @_Z20img_type_mangle_test14ocl_image3d_rw(ptr addrspace(4) %img)
152__attribute__((overloadable))
153void img_type_mangle_test(read_write image3d_t img) {}
154