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