31
31
; intel_sub_group_block_write_ul2(image_out, coord, ul2);
32
32
; ul2 = intel_sub_group_block_read_ul2(lp);
33
33
; intel_sub_group_block_write_ul2(lp, ul2);
34
+ ;
35
+ ; uchar16 uc16 = intel_sub_group_block_read_uc16(image_in, coord);
36
+ ; intel_sub_group_block_write_uc16(image_out, coord, uc16);
37
+ ; uc16 = intel_sub_group_block_read_uc16(cp);
38
+ ; intel_sub_group_block_write_uc2(cp, uc16);
39
+ ;
40
+ ; ushort16 us16 = intel_sub_group_block_read_us16(image_in, coord);
41
+ ; intel_sub_group_block_write_us16(image_out, coord, us16);
42
+ ; us16 = intel_sub_group_block_read_us16(sp);
43
+ ; intel_sub_group_block_write_us16(sp, us16);
34
44
;}
35
45
36
46
; RUN: llvm-as %s -o %t.bc
75
85
; CHECK-SPIRV: SubgroupBlockReadINTEL
76
86
; CHECK-SPIRV: SubgroupBlockWriteINTEL
77
87
88
+ ; CHECK-SPIRV: SubgroupImageBlockReadINTEL
89
+ ; CHECK-SPIRV: SubgroupImageBlockWriteINTEL
90
+ ; CHECK-SPIRV: SubgroupBlockReadINTEL
91
+ ; CHECK-SPIRV: SubgroupBlockWriteINTEL
92
+
93
+ ; CHECK-SPIRV: SubgroupImageBlockReadINTEL
94
+ ; CHECK-SPIRV: SubgroupImageBlockWriteINTEL
95
+ ; CHECK-SPIRV: SubgroupBlockReadINTEL
96
+ ; CHECK-SPIRV: SubgroupBlockWriteINTEL
97
+
78
98
; CHECK-SPIRV-LABEL: Return
79
99
80
100
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
@@ -108,6 +128,14 @@ define spir_kernel void @test(<2 x float> %x, i32 %c, ptr addrspace(1) %image_in
108
128
; CHECK-LLVM-NEXT: call spir_func void @_Z31intel_sub_group_block_write_ul214ocl_image2d_woDv2_iDv2_m(ptr addrspace(1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <2 x i64> [[CALL10]])
109
129
; CHECK-LLVM-NEXT: [[CALL11:%.*]] = call spir_func <2 x i64> @_Z30intel_sub_group_block_read_ul2PU3AS1Km(ptr addrspace(1) [[LP:%.*]])
110
130
; CHECK-LLVM-NEXT: call spir_func void @_Z31intel_sub_group_block_write_ul2PU3AS1mDv2_m(ptr addrspace(1) [[LP]], <2 x i64> [[CALL11]])
131
+ ; CHECK-LLVM-NEXT: [[CALL12:%.*]] = call spir_func <16 x i8> @_Z31intel_sub_group_block_read_uc1614ocl_image2d_roDv2_i(ptr addrspace(1) [[IMAGE_IN]], <2 x i32> [[COORD]])
132
+ ; CHECK-LLVM-NEXT: call spir_func void @_Z32intel_sub_group_block_write_uc1614ocl_image2d_woDv2_iDv16_h(ptr addrspace(1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <16 x i8> [[CALL12]])
133
+ ; CHECK-LLVM-NEXT: [[CALL13:%.*]] = call spir_func <16 x i8> @_Z31intel_sub_group_block_read_uc16PU3AS1Kh(ptr addrspace(1) [[CP]])
134
+ ; CHECK-LLVM-NEXT: call spir_func void @_Z32intel_sub_group_block_write_uc16PU3AS1hDv16_h(ptr addrspace(1) [[CP]], <16 x i8> [[CALL13]])
135
+ ; CHECK-LLVM-NEXT: [[CALL14:%.*]] = call spir_func <16 x i16> @_Z31intel_sub_group_block_read_us1614ocl_image2d_roDv2_i(ptr addrspace(1) [[IMAGE_IN]], <2 x i32> [[COORD]])
136
+ ; CHECK-LLVM-NEXT: call spir_func void @_Z32intel_sub_group_block_write_us1614ocl_image2d_woDv2_iDv16_t(ptr addrspace(1) [[IMAGE_OUT]], <2 x i32> [[COORD]], <16 x i16> [[CALL14]])
137
+ ; CHECK-LLVM-NEXT: [[CALL15:%.*]] = call spir_func <16 x i16> @_Z31intel_sub_group_block_read_us16PU3AS1Kt(ptr addrspace(1) [[SP]])
138
+ ; CHECK-LLVM-NEXT: call spir_func void @_Z32intel_sub_group_block_write_us16PU3AS1tDv16_t(ptr addrspace(1) [[SP]], <16 x i16> [[CALL15]])
111
139
; CHECK-LLVM-NEXT: ret void
112
140
113
141
; CHECK-LLVM-SPIRV: call spir_func <2 x float> @_Z28__spirv_SubgroupShuffleINTELDv2_fj(
@@ -131,6 +159,16 @@ define spir_kernel void @test(<2 x float> %x, i32 %c, ptr addrspace(1) %image_in
131
159
; CHECK-LLVM-SPIRV: call spir_func <2 x i64> @_Z37__spirv_SubgroupBlockReadINTEL_Rlong2PU3AS1Km(
132
160
; CHECK-LLVM-SPIRV: call spir_func void @_Z31__spirv_SubgroupBlockWriteINTELPU3AS1mDv2_m(
133
161
162
+ ; CHECK-LLVM-SPIRV: call spir_func <16 x i8> @_Z43__spirv_SubgroupImageBlockReadINTEL_Rchar16PU3AS133__spirv_Image__void_1_0_0_0_0_0_0Dv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)
163
+ ; CHECK-LLVM-SPIRV: call spir_func void @_Z36__spirv_SubgroupImageBlockWriteINTELPU3AS133__spirv_Image__void_1_0_0_0_0_0_1Dv2_iDv16_h(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1)
164
+ ; CHECK-LLVM-SPIRV: call spir_func <16 x i8> @_Z38__spirv_SubgroupBlockReadINTEL_Rchar16PU3AS1Kh(
165
+ ; CHECK-LLVM-SPIRV: call spir_func void @_Z31__spirv_SubgroupBlockWriteINTELPU3AS1hDv16_h(
166
+ ; CHECK-LLVM-SPIRV: call spir_func <16 x i16> @_Z44__spirv_SubgroupImageBlockReadINTEL_Rshort16PU3AS133__spirv_Image__void_1_0_0_0_0_0_0Dv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)
167
+ ; CHECK-LLVM-SPIRV: call spir_func void @_Z36__spirv_SubgroupImageBlockWriteINTELPU3AS133__spirv_Image__void_1_0_0_0_0_0_1Dv2_iDv16_t(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1)
168
+ ; CHECK-LLVM-SPIRV: call spir_func <16 x i16> @_Z39__spirv_SubgroupBlockReadINTEL_Rshort16PU3AS1Kt(
169
+ ; CHECK-LLVM-SPIRV: call spir_func void @_Z31__spirv_SubgroupBlockWriteINTELPU3AS1tDv16_t(
170
+
171
+
134
172
entry:
135
173
%call = tail call spir_func <2 x float > @_Z23intel_sub_group_shuffleDv2_fj (<2 x float > %x , i32 %c ) #2
136
174
%call1 = tail call spir_func <2 x float > @_Z28intel_sub_group_shuffle_downDv2_fS_j (<2 x float > %x , <2 x float > %x , i32 %c ) #2
@@ -156,6 +194,16 @@ entry:
156
194
tail call spir_func void @_Z31intel_sub_group_block_write_ul214ocl_image2d_woDv2_iDv2_m (ptr addrspace (1 ) %image_out , <2 x i32 > %coord , <2 x i64 > %call10 ) #2
157
195
%call11 = tail call spir_func <2 x i64 > @_Z30intel_sub_group_block_read_ul2PU3AS1Km (ptr addrspace (1 ) %lp ) #2
158
196
tail call spir_func void @_Z31intel_sub_group_block_write_ul2PU3AS1mDv2_m (ptr addrspace (1 ) %lp , <2 x i64 > %call11 ) #2
197
+
198
+ %call12 = tail call spir_func <16 x i8 > @_Z31intel_sub_group_block_read_uc1614ocl_image2d_roDv2_i (ptr addrspace (1 ) %image_in , <2 x i32 > %coord ) #2
199
+ tail call spir_func void @_Z32intel_sub_group_block_write_uc1614ocl_image2d_woDv2_iDv16_h (ptr addrspace (1 ) %image_out , <2 x i32 > %coord , <16 x i8 > %call12 ) #2
200
+ %call13 = tail call spir_func <16 x i8 > @_Z31intel_sub_group_block_read_uc16PU3AS1Kh (ptr addrspace (1 ) %cp ) #2
201
+ tail call spir_func void @_Z32intel_sub_group_block_write_uc16PU3AS1hDv16_h (ptr addrspace (1 ) %cp , <16 x i8 > %call13 ) #2
202
+
203
+ %call14 = tail call spir_func <16 x i16 > @_Z31intel_sub_group_block_read_us1614ocl_image2d_roDv2_i (ptr addrspace (1 ) %image_in , <2 x i32 > %coord ) #2
204
+ tail call spir_func void @_Z32intel_sub_group_block_write_us1614ocl_image2d_woDv2_iDv16_t (ptr addrspace (1 ) %image_out , <2 x i32 > %coord , <16 x i16 > %call14 ) #2
205
+ %call15 = tail call spir_func <16 x i16 > @_Z31intel_sub_group_block_read_us16PU3AS1Kt (ptr addrspace (1 ) %sp ) #2
206
+ tail call spir_func void @_Z32intel_sub_group_block_write_us16PU3AS1tDv16_t (ptr addrspace (1 ) %sp , <16 x i16 > %call15 ) #2
159
207
160
208
ret void
161
209
}
@@ -220,6 +268,30 @@ declare spir_func <2 x i64> @_Z30intel_sub_group_block_read_ul2PU3AS1Km(ptr addr
220
268
; Function Attrs: convergent
221
269
declare spir_func void @_Z31intel_sub_group_block_write_ul2PU3AS1mDv2_m (ptr addrspace (1 ), <2 x i64 >) local_unnamed_addr #1
222
270
271
+ ; Function Attrs: convergent
272
+ declare spir_func <16 x i8 > @_Z31intel_sub_group_block_read_uc1614ocl_image2d_roDv2_i (ptr addrspace (1 ), <2 x i32 >) #1
273
+
274
+ ; Function Attrs: convergent
275
+ declare spir_func void @_Z32intel_sub_group_block_write_uc1614ocl_image2d_woDv2_iDv16_h (ptr addrspace (1 ), <2 x i32 >, <16 x i8 >) #1
276
+
277
+ ; Function Attrs: convergent
278
+ declare spir_func <16 x i8 > @_Z31intel_sub_group_block_read_uc16PU3AS1Kh (ptr addrspace (1 )) #1
279
+
280
+ ; Function Attrs: convergent
281
+ declare spir_func void @_Z32intel_sub_group_block_write_uc16PU3AS1hDv16_h (ptr addrspace (1 ), <16 x i8 >) #1
282
+
283
+ ; Function Attrs: convergent
284
+ declare spir_func <16 x i16 > @_Z31intel_sub_group_block_read_us1614ocl_image2d_roDv2_i (ptr addrspace (1 ), <2 x i32 >) local_unnamed_addr #1
285
+
286
+ ; Function Attrs: convergent
287
+ declare spir_func void @_Z32intel_sub_group_block_write_us1614ocl_image2d_woDv2_iDv16_t (ptr addrspace (1 ), <2 x i32 >, <16 x i16 >) local_unnamed_addr #1
288
+
289
+ ; Function Attrs: convergent
290
+ declare spir_func <16 x i16 > @_Z31intel_sub_group_block_read_us16PU3AS1Kt (ptr addrspace (1 )) local_unnamed_addr #1
291
+
292
+ ; Function Attrs: convergent
293
+ declare spir_func void @_Z32intel_sub_group_block_write_us16PU3AS1tDv16_t (ptr addrspace (1 ), <16 x i16 >) local_unnamed_addr #1
294
+
223
295
attributes #0 = { convergent nounwind "correctly-rounded-divide-sqrt-fp-math" ="false" "denorms-are-zero" ="false" "disable-tail-calls" ="false" "less-precise-fpmad" ="false" "min-legal-vector-width" ="128" "no-frame-pointer-elim" ="false" "no-infs-fp-math" ="false" "no-jump-tables" ="false" "no-nans-fp-math" ="false" "no-signed-zeros-fp-math" ="false" "no-trapping-math" ="false" "stack-protector-buffer-size" ="8" "uniform-work-group-size" ="true" "unsafe-fp-math" ="false" "use-soft-float" ="false" }
224
296
attributes #1 = { convergent "correctly-rounded-divide-sqrt-fp-math" ="false" "denorms-are-zero" ="false" "disable-tail-calls" ="false" "less-precise-fpmad" ="false" "no-frame-pointer-elim" ="false" "no-infs-fp-math" ="false" "no-nans-fp-math" ="false" "no-signed-zeros-fp-math" ="false" "no-trapping-math" ="false" "stack-protector-buffer-size" ="8" "unsafe-fp-math" ="false" "use-soft-float" ="false" }
225
297
attributes #2 = { convergent nounwind }
0 commit comments