|
52 | 52 | ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM-SPIRV |
53 | 53 | ; RUN: llvm-spirv %t.rev.bc -o - -spirv-text --spirv-ext=+SPV_INTEL_subgroups | FileCheck %s --check-prefix=CHECK-SPIRV |
54 | 54 |
|
| 55 | +; Verify the mangling works correctly with the untyped pointers enabled. |
| 56 | +; RUN: llvm-spirv %s -o %t.spv --spirv-ext=+SPV_INTEL_subgroups,+SPV_KHR_untyped_pointers |
| 57 | +; RUN: llvm-spirv -r %t.spv -o %t.rev.bc |
| 58 | +; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM-UNTYPED |
| 59 | +; RUN: llvm-spirv -r %t.spv -o %t.rev.bc --spirv-target-env=SPV-IR |
| 60 | +; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM-SPIRV |
| 61 | + |
55 | 62 | ; CHECK-SPIRV: Capability SubgroupShuffleINTEL |
56 | 63 | ; CHECK-SPIRV: Capability SubgroupBufferBlockIOINTEL |
57 | 64 | ; CHECK-SPIRV: Capability SubgroupImageBlockIOINTEL |
@@ -138,6 +145,36 @@ define spir_kernel void @test(<2 x float> %x, i32 %c, ptr addrspace(1) %image_in |
138 | 145 | ; CHECK-LLVM-NEXT: call spir_func void @_Z32intel_sub_group_block_write_us16PU3AS1tDv16_t(ptr addrspace(1) [[SP]], <16 x i16> [[CALL15]]) |
139 | 146 | ; CHECK-LLVM-NEXT: ret void |
140 | 147 |
|
| 148 | +; The checks are the same as above, just skipping function parameters name check (because bitcasts in between instructions are involved). |
| 149 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x float> @_Z23intel_sub_group_shuffleDv2_fj(<2 x float> [[X:%.*]], i32 [[C:%.*]]) |
| 150 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x float> @_Z28intel_sub_group_shuffle_downDv2_fS_j(<2 x float> [[X]], <2 x float> [[X]], i32 [[C]]) |
| 151 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x float> @_Z26intel_sub_group_shuffle_upDv2_fS_j(<2 x float> [[X]], <2 x float> [[X]], i32 [[C]]) |
| 152 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x float> @_Z27intel_sub_group_shuffle_xorDv2_fj(<2 x float> [[X]], i32 [[C]]) |
| 153 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i32> @_Z27intel_sub_group_block_read214ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN:%.*]], <2 x i32> [[COORD:%.*]]) |
| 154 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z28intel_sub_group_block_write214ocl_image2d_woDv2_iDv2_j(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT:%.*]], <2 x i32> [[COORD]], <2 x i32> {{%.*}}) |
| 155 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i32> @_Z27intel_sub_group_block_read2PU3AS1Kj(ptr addrspace(1) {{%.*}}) |
| 156 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z28intel_sub_group_block_write2PU3AS1jDv2_j(ptr addrspace(1) {{%.*}}, <2 x i32> {{%.*}}) |
| 157 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i16> @_Z30intel_sub_group_block_read_us214ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN]], <2 x i32> [[COORD]]) |
| 158 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_us214ocl_image2d_woDv2_iDv2_t(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <2 x i16> {{%.*}}) |
| 159 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i16> @_Z30intel_sub_group_block_read_us2PU3AS1Kt(ptr addrspace(1) {{%.*}}) |
| 160 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_us2PU3AS1tDv2_t(ptr addrspace(1) {{%.*}}, <2 x i16> {{%.*}}) |
| 161 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i8> @_Z30intel_sub_group_block_read_uc214ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN]], <2 x i32> [[COORD]]) |
| 162 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_uc214ocl_image2d_woDv2_iDv2_h(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <2 x i8> {{%.*}}) |
| 163 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i8> @_Z30intel_sub_group_block_read_uc2PU3AS1Kh(ptr addrspace(1) {{%.*}}) |
| 164 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_uc2PU3AS1hDv2_h(ptr addrspace(1) {{%.*}}, <2 x i8> {{%.*}}) |
| 165 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i64> @_Z30intel_sub_group_block_read_ul214ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN]], <2 x i32> [[COORD]]) |
| 166 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_ul214ocl_image2d_woDv2_iDv2_m(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <2 x i64> {{%.*}}) |
| 167 | +; CHECK-LLVM-UNTYPED: call spir_func <2 x i64> @_Z30intel_sub_group_block_read_ul2PU3AS1Km(ptr addrspace(1) {{%.*}}) |
| 168 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z31intel_sub_group_block_write_ul2PU3AS1mDv2_m(ptr addrspace(1) {{%.*}}, <2 x i64> {{%.*}}) |
| 169 | +; CHECK-LLVM-UNTYPED: call spir_func <16 x i8> @_Z31intel_sub_group_block_read_uc1614ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN]], <2 x i32> [[COORD]]) |
| 170 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z32intel_sub_group_block_write_uc1614ocl_image2d_woDv2_iDv16_h(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <16 x i8> {{%.*}}) |
| 171 | +; CHECK-LLVM-UNTYPED: call spir_func <16 x i8> @_Z31intel_sub_group_block_read_uc16PU3AS1Kh(ptr addrspace(1) {{%.*}}) |
| 172 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z32intel_sub_group_block_write_uc16PU3AS1hDv16_h(ptr addrspace(1) {{%.*}}, <16 x i8> {{%.*}}) |
| 173 | +; CHECK-LLVM-UNTYPED: call spir_func <16 x i16> @_Z31intel_sub_group_block_read_us1614ocl_image2d_roDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) [[IMAGE_IN]], <2 x i32> [[COORD]]) |
| 174 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z32intel_sub_group_block_write_us1614ocl_image2d_woDv2_iDv16_t(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <16 x i16> {{%.*}}) |
| 175 | +; CHECK-LLVM-UNTYPED: call spir_func <16 x i16> @_Z31intel_sub_group_block_read_us16PU3AS1Kt(ptr addrspace(1) {{%.*}}) |
| 176 | +; CHECK-LLVM-UNTYPED: call spir_func void @_Z32intel_sub_group_block_write_us16PU3AS1tDv16_t(ptr addrspace(1) {{%.*}}, <16 x i16> {{%.*}}) |
| 177 | + |
141 | 178 | ; CHECK-LLVM-SPIRV: call spir_func <2 x float> @_Z28__spirv_SubgroupShuffleINTELDv2_fj( |
142 | 179 | ; CHECK-LLVM-SPIRV: call spir_func <2 x float> @_Z32__spirv_SubgroupShuffleDownINTELDv2_fS_j( |
143 | 180 | ; CHECK-LLVM-SPIRV: call spir_func <2 x float> @_Z30__spirv_SubgroupShuffleUpINTELDv2_fS_j( |
|
0 commit comments