@@ -14,7 +14,9 @@ target triple = "spir64-unknown-unknown-sycldevice"
14
14
@vg = dso_local global %"cm::gen::simd<int, 16>" zeroinitializer , align 64 #0
15
15
@vc = dso_local addrspace (1 ) global <32 x i32 > zeroinitializer
16
16
17
- define dso_local spir_func <32 x i32 > @FUNC_1 () !sycl_explicit_simd !1 {
17
+ ; LowerESIMD pass should process every function,
18
+ ; !sycl_explicit_simd metadata is not necessary.
19
+ define dso_local spir_func <32 x i32 > @FUNC_1 () {
18
20
%a_1 = alloca <32 x i64 >
19
21
%1 = load <32 x i64 >, <32 x i64 >* %a_1
20
22
%a_2 = alloca <32 x i16 >
@@ -24,7 +26,7 @@ define dso_local spir_func <32 x i32> @FUNC_1() !sycl_explicit_simd !1 {
24
26
ret <32 x i32 > %ret_val
25
27
}
26
28
27
- define dso_local spir_func <32 x i32 > @FUNC_2 () !sycl_explicit_simd !1 {
29
+ define dso_local spir_func <32 x i32 > @FUNC_2 () {
28
30
%a_1 = alloca <32 x i64 >
29
31
%1 = load <32 x i64 >, <32 x i64 >* %a_1
30
32
%a_2 = alloca <32 x i32 >
@@ -36,7 +38,7 @@ define dso_local spir_func <32 x i32> @FUNC_2() !sycl_explicit_simd !1 {
36
38
ret <32 x i32 > %ret_val
37
39
}
38
40
39
- define dso_local spir_func <32 x i32 > @FUNC_3 () !sycl_explicit_simd !1 {
41
+ define dso_local spir_func <32 x i32 > @FUNC_3 () {
40
42
%a_1 = alloca <32 x i64 >
41
43
%1 = load <32 x i64 >, <32 x i64 >* %a_1
42
44
%a_2 = alloca <32 x i32 >
@@ -50,21 +52,21 @@ define dso_local spir_func <32 x i32> @FUNC_3() !sycl_explicit_simd !1 {
50
52
ret <32 x i32 > %ret_val
51
53
}
52
54
53
- define dso_local spir_func <32 x i32 > @FUNC_4 () !sycl_explicit_simd !1 {
55
+ define dso_local spir_func <32 x i32 > @FUNC_4 () {
54
56
%ret_val = call spir_func <32 x i32 > @_Z33__esimd_flat_block_read_unalignedIjLi32ELN2cm3gen9CacheHintE0ELS2_0EENS1_13__vector_typeIT_XT0_EE4typeEy (i64 0 )
55
57
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.block.ld.unaligned.v32i32.i64(i64 0)
56
58
ret <32 x i32 > %ret_val
57
59
}
58
60
59
- define dso_local spir_func void @FUNC_5 () !sycl_explicit_simd !1 {
61
+ define dso_local spir_func void @FUNC_5 () {
60
62
%a_1 = alloca <32 x i32 >
61
63
%1 = load <32 x i32 >, <32 x i32 >* %a_1
62
64
call spir_func void @_Z24__esimd_flat_block_writeIjLi32ELN2cm3gen9CacheHintE0ELS2_0EEvyNS1_13__vector_typeIT_XT0_EE4typeE (i64 0 , <32 x i32 > %1 )
63
65
; CHECK: call void @llvm.genx.svm.block.st.i64.v32i32(i64 0, <32 x i32> %{{[0-9a-zA-Z_.]+}})
64
66
ret void
65
67
}
66
68
67
- define dso_local spir_func <32 x i32 > @FUNC_6 () !sycl_explicit_simd !1 {
69
+ define dso_local spir_func <32 x i32 > @FUNC_6 () {
68
70
%a_1 = alloca <32 x i64 >
69
71
%1 = load <32 x i64 >, <32 x i64 >* %a_1
70
72
%a_2 = alloca <32 x i16 >
@@ -74,7 +76,7 @@ define dso_local spir_func <32 x i32> @FUNC_6() !sycl_explicit_simd !1 {
74
76
ret <32 x i32 > %ret_val
75
77
}
76
78
77
- define dso_local spir_func void @FUNC_7 () !sycl_explicit_simd !1 {
79
+ define dso_local spir_func void @FUNC_7 () {
78
80
%a_1 = alloca <32 x i64 >
79
81
%1 = load <32 x i64 >, <32 x i64 >* %a_1
80
82
%a_2 = alloca <32 x i32 >
@@ -86,7 +88,7 @@ define dso_local spir_func void @FUNC_7() !sycl_explicit_simd !1 {
86
88
ret void
87
89
}
88
90
89
- define dso_local spir_func <16 x i16 > @FUNC_8 () !sycl_explicit_simd !1 {
91
+ define dso_local spir_func <16 x i16 > @FUNC_8 () {
90
92
%a_1 = alloca <16 x i16 >
91
93
%1 = load <16 x i16 >, <16 x i16 >* %a_1
92
94
%a_2 = alloca <16 x i16 >
@@ -96,7 +98,7 @@ define dso_local spir_func <16 x i16> @FUNC_8() !sycl_explicit_simd !1 {
96
98
ret <16 x i16 > %ret_val
97
99
}
98
100
99
- define dso_local spir_func <1 x float > @FUNC_9 () !sycl_explicit_simd !1 {
101
+ define dso_local spir_func <1 x float > @FUNC_9 () {
100
102
%a_1 = alloca <1 x float >
101
103
%1 = load <1 x float >, <1 x float >* %a_1
102
104
%a_2 = alloca <1 x float >
@@ -106,15 +108,15 @@ define dso_local spir_func <1 x float> @FUNC_9() !sycl_explicit_simd !1 {
106
108
ret <1 x float > %ret_val
107
109
}
108
110
109
- define dso_local spir_func <8 x float > @FUNC_10 () !sycl_explicit_simd !1 {
111
+ define dso_local spir_func <8 x float > @FUNC_10 () {
110
112
%a_1 = alloca <16 x float >
111
113
%1 = load <16 x float >, <16 x float >* %a_1
112
114
%ret_val = call spir_func <8 x float > @_Z16__esimd_rdregionIfLi16ELi8ELi0ELi8ELi1ELi0EEN2cm3gen13__vector_typeIT_XT1_EE4typeENS2_IS3_XT0_EE4typeEt (<16 x float > %1 , i16 zeroext 0 )
113
115
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <8 x float> @llvm.genx.rdregionf.v8f32.v16f32.i16(<16 x float> %{{[0-9a-zA-Z_.]+}}, i32 0, i32 8, i32 1, i16 0, i32 0)
114
116
ret <8 x float > %ret_val
115
117
}
116
118
117
- define dso_local spir_func <16 x float > @FUNC_11 () !sycl_explicit_simd !1 {
119
+ define dso_local spir_func <16 x float > @FUNC_11 () {
118
120
%a_1 = alloca <16 x float >
119
121
%1 = load <16 x float >, <16 x float >* %a_1
120
122
%a_2 = alloca <8 x float >
@@ -124,36 +126,36 @@ define dso_local spir_func <16 x float> @FUNC_11() !sycl_explicit_simd !1 {
124
126
ret <16 x float > %ret_val
125
127
}
126
128
127
- define dso_local spir_func <32 x i32 > @FUNC_21 (%opencl.image2d_ro_t addrspace (1 )* %0 , i32 %1 , i32 %2 ) !sycl_explicit_simd !1 {
129
+ define dso_local spir_func <32 x i32 > @FUNC_21 (%opencl.image2d_ro_t addrspace (1 )* %0 , i32 %1 , i32 %2 ) {
128
130
%ret_val = call spir_func <32 x i32 > @_Z24__esimd_media_block_loadIiLi4ELi8E14ocl_image2d_roEN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeEjT2_jjjj (i32 0 , %opencl.image2d_ro_t addrspace (1 )* %0 , i32 0 , i32 32 , i32 %1 , i32 %2 )
129
131
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.media.ld.v32i32(i32 0, i32 %{{[0-9a-zA-Z_.]+}}, i32 0, i32 32, i32 %{{[0-9a-zA-Z_.]+}}, i32 %{{[0-9a-zA-Z_.]+}})
130
132
ret <32 x i32 > %ret_val
131
133
}
132
134
133
- define dso_local spir_func void @FUNC_22 (%opencl.image2d_wo_t addrspace (1 )* %0 , i32 %1 , i32 %2 ) !sycl_explicit_simd !1 {
135
+ define dso_local spir_func void @FUNC_22 (%opencl.image2d_wo_t addrspace (1 )* %0 , i32 %1 , i32 %2 ) {
134
136
%a_3 = alloca <32 x i32 >
135
137
%4 = load <32 x i32 >, <32 x i32 >* %a_3
136
138
call spir_func void @_Z25__esimd_media_block_storeIiLi4ELi8E14ocl_image2d_woEvjT2_jjjjN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeE (i32 0 , %opencl.image2d_wo_t addrspace (1 )* %0 , i32 0 , i32 32 , i32 %1 , i32 %2 , <32 x i32 > %4 )
137
139
; CHECK: call void @llvm.genx.media.st.v32i32(i32 0, i32 %{{[0-9a-zA-Z_.]+}}, i32 0, i32 32, i32 %{{[0-9a-zA-Z_.]+}}, i32 %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}})
138
140
ret void
139
141
}
140
142
141
- define dso_local spir_func <16 x i32 > @FUNC_23 () !sycl_explicit_simd !1 {
143
+ define dso_local spir_func <16 x i32 > @FUNC_23 () {
142
144
%ret_val = call spir_func <16 x i32 > @_Z13__esimd_vloadIiLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_ (<16 x i32 > addrspace (4 )* addrspacecast (<16 x i32 >* getelementptr inbounds (%"cm::gen::simd<int, 16>" , %"cm::gen::simd<int, 16>" * @vg , i32 0 , i32 0 ) to <16 x i32 > addrspace (4 )*))
143
145
; CHECK: %ret_val1 = load <16 x i32>, <16 x i32> addrspace(4)* addrspacecast (<16 x i32>* getelementptr inbounds (%"cm::gen::simd<int, 16>", %"cm::gen::simd<int, 16>"* @vg, i32 0, i32 0) to <16 x i32> addrspace(4)*), align 64
144
146
; TODO: testcase to generate this:
145
147
; CxHECK: %{{[0-9a-zA-Z_.]+}} = call <16 x i32> @llvm.genx.vload.v16i32.p4v16i32(<16 x i32> addrspace(4)* {{.*}})
146
148
ret <16 x i32 > %ret_val
147
149
}
148
150
149
- define dso_local spir_func void @FUNC_28 (<32 x i32 > %0 ) !sycl_explicit_simd !1 {
151
+ define dso_local spir_func void @FUNC_28 (<32 x i32 > %0 ) {
150
152
call spir_func void @_Z14__esimd_vstoreIiLi32EEvPN2cm3gen13__vector_typeIT_XT0_EE4typeES5_ (<32 x i32 > addrspace (4 )* addrspacecast (<32 x i32 > addrspace (1 )* @vc to <32 x i32 > addrspace (4 )*), <32 x i32 > %0 )
151
153
; CHECK: store <32 x i32> %0, <32 x i32> addrspace(4)* addrspacecast (<32 x i32> addrspace(1)* @vc to <32 x i32> addrspace(4)*), align 128
152
154
153
155
ret void
154
156
}
155
157
156
- define dso_local spir_func void @FUNC_29 () !sycl_explicit_simd !1 {
158
+ define dso_local spir_func void @FUNC_29 () {
157
159
%a_1 = alloca <32 x i32 >
158
160
%1 = addrspacecast <32 x i32 >* %a_1 to <32 x i32 > addrspace (4 )*
159
161
%a_2 = alloca <32 x i32 >
@@ -163,15 +165,15 @@ define dso_local spir_func void @FUNC_29() !sycl_explicit_simd !1 {
163
165
ret void
164
166
}
165
167
166
- define dso_local spir_kernel void @FUNC_30 () !sycl_explicit_simd !1 {
167
- ; CHECK: define dso_local spir_kernel void @FUNC_30() !sycl_explicit_simd !1
168
+ define dso_local spir_kernel void @FUNC_30 () {
169
+ ; CHECK: define dso_local spir_kernel void @FUNC_30()
168
170
call spir_func void @_ZN2cl4sycl5INTEL3gpu8slm_initEj (i32 1023 )
169
171
ret void
170
172
; CHECK-NEXT: ret void
171
173
}
172
174
173
- define dso_local spir_kernel void @FUNC_31 () !sycl_explicit_simd !1 {
174
- ; CHECK: define dso_local spir_kernel void @FUNC_31() !sycl_explicit_simd !1
175
+ define dso_local spir_kernel void @FUNC_31 () {
176
+ ; CHECK: define dso_local spir_kernel void @FUNC_31()
175
177
%call = call spir_func i64 @_Z27__spirv_LocalInvocationId_xv ()
176
178
; CHECK-NEXT: %call.esimd = call <3 x i32> @llvm.genx.local.id.v3i32()
177
179
; CHECK-NEXT: %local_id.x = extractelement <3 x i32> %call.esimd, i32 0
@@ -180,7 +182,7 @@ define dso_local spir_kernel void @FUNC_31() !sycl_explicit_simd !1 {
180
182
; CHECK-NEXT: ret void
181
183
}
182
184
183
- define dso_local spir_func <16 x i32 > @FUNC_32 () !sycl_explicit_simd !1 {
185
+ define dso_local spir_func <16 x i32 > @FUNC_32 () {
184
186
%a_1 = alloca <16 x i32 >
185
187
%1 = load <16 x i32 >, <16 x i32 >* %a_1
186
188
%a_2 = alloca <16 x i32 >
@@ -192,7 +194,7 @@ define dso_local spir_func <16 x i32> @FUNC_32() !sycl_explicit_simd !1 {
192
194
ret <16 x i32 > %ret_val
193
195
}
194
196
195
- define dso_local spir_func <16 x i32 > @FUNC_33 () !sycl_explicit_simd !1 {
197
+ define dso_local spir_func <16 x i32 > @FUNC_33 () {
196
198
%a_1 = alloca <16 x i32 >
197
199
%1 = load <16 x i32 >, <16 x i32 >* %a_1
198
200
%a_2 = alloca <16 x i32 >
@@ -204,7 +206,7 @@ define dso_local spir_func <16 x i32> @FUNC_33() !sycl_explicit_simd !1 {
204
206
ret <16 x i32 > %ret_val
205
207
}
206
208
207
- define dso_local spir_func <16 x i32 > @FUNC_34 () !sycl_explicit_simd !1 {
209
+ define dso_local spir_func <16 x i32 > @FUNC_34 () {
208
210
%a_1 = alloca <16 x i32 >
209
211
%1 = load <16 x i32 >, <16 x i32 >* %a_1
210
212
%a_2 = alloca <16 x i32 >
@@ -216,7 +218,7 @@ define dso_local spir_func <16 x i32> @FUNC_34() !sycl_explicit_simd !1 {
216
218
ret <16 x i32 > %ret_val
217
219
}
218
220
219
- define dso_local spir_func <16 x i32 > @FUNC_35 () !sycl_explicit_simd !1 {
221
+ define dso_local spir_func <16 x i32 > @FUNC_35 () {
220
222
%a_1 = alloca <16 x i32 >
221
223
%1 = load <16 x i32 >, <16 x i32 >* %a_1
222
224
%a_2 = alloca <16 x i32 >
@@ -228,7 +230,7 @@ define dso_local spir_func <16 x i32> @FUNC_35() !sycl_explicit_simd !1 {
228
230
ret <16 x i32 > %ret_val
229
231
}
230
232
231
- define dso_local spir_func <16 x i32 > @FUNC_36 () !sycl_explicit_simd !1 {
233
+ define dso_local spir_func <16 x i32 > @FUNC_36 () {
232
234
%a_1 = alloca <16 x i32 >
233
235
%1 = load <16 x i32 >, <16 x i32 >* %a_1
234
236
%a_2 = alloca <16 x i32 >
@@ -240,7 +242,7 @@ define dso_local spir_func <16 x i32> @FUNC_36() !sycl_explicit_simd !1 {
240
242
ret <16 x i32 > %ret_val
241
243
}
242
244
243
- define dso_local spir_func <16 x i32 > @FUNC_37 () !sycl_explicit_simd !1 {
245
+ define dso_local spir_func <16 x i32 > @FUNC_37 () {
244
246
%a_1 = alloca <16 x i32 >
245
247
%1 = load <16 x i32 >, <16 x i32 >* %a_1
246
248
%a_2 = alloca <16 x i32 >
@@ -252,7 +254,7 @@ define dso_local spir_func <16 x i32> @FUNC_37() !sycl_explicit_simd !1 {
252
254
ret <16 x i32 > %ret_val
253
255
}
254
256
255
- define dso_local spir_func <16 x i32 > @FUNC_38 () !sycl_explicit_simd !1 {
257
+ define dso_local spir_func <16 x i32 > @FUNC_38 () {
256
258
%a_1 = alloca <16 x i32 >
257
259
%1 = load <16 x i32 >, <16 x i32 >* %a_1
258
260
%a_2 = alloca <16 x i32 >
@@ -264,7 +266,7 @@ define dso_local spir_func <16 x i32> @FUNC_38() !sycl_explicit_simd !1 {
264
266
ret <16 x i32 > %ret_val
265
267
}
266
268
267
- define dso_local spir_func <16 x i32 > @FUNC_39 () !sycl_explicit_simd !1 {
269
+ define dso_local spir_func <16 x i32 > @FUNC_39 () {
268
270
%a_1 = alloca <16 x i32 >
269
271
%1 = load <16 x i32 >, <16 x i32 >* %a_1
270
272
%a_2 = alloca <16 x i32 >
@@ -276,25 +278,25 @@ define dso_local spir_func <16 x i32> @FUNC_39() !sycl_explicit_simd !1 {
276
278
ret <16 x i32 > %ret_val
277
279
}
278
280
279
- define dso_local spir_func <8 x i32 > @FUNC_40 () !sycl_explicit_simd !1 {
281
+ define dso_local spir_func <8 x i32 > @FUNC_40 () {
280
282
%ret_val = call spir_func <8 x i32 > @_Z22__esimd_slm_block_readIiLi8EEN2cl4sycl5INTEL3gpu11vector_typeIT_XT0_EE4typeEj (i32 0 )
281
283
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <8 x i32> @llvm.genx.oword.ld.v8i32(i32 0, i32 254, i32 0)
282
284
ret <8 x i32 > %ret_val
283
285
}
284
286
285
- define dso_local spir_func void @FUNC_41 () !sycl_explicit_simd !1 {
287
+ define dso_local spir_func void @FUNC_41 () {
286
288
call spir_func void @_Z16__esimd_sbarrierN2cl4sycl5INTEL3gpu17EsimdSbarrierTypeE (i8 zeroext 1 )
287
289
; CHECK: call void @llvm.genx.sbarrier(i8 1)
288
290
ret void
289
291
}
290
292
291
- define dso_local spir_func void @FUNC_42 () !sycl_explicit_simd !1 {
293
+ define dso_local spir_func void @FUNC_42 () {
292
294
call spir_func void @_Z16__esimd_sbarrierN2cl4sycl5INTEL3gpu17EsimdSbarrierTypeE (i8 zeroext 0 )
293
295
; CHECK: call void @llvm.genx.sbarrier(i8 0)
294
296
ret void
295
297
}
296
298
297
- define dso_local spir_func <8 x i32 > @FUNC_43 () !sycl_explicit_simd !1 {
299
+ define dso_local spir_func <8 x i32 > @FUNC_43 () {
298
300
%a_1 = alloca <16 x i32 >
299
301
%1 = load <16 x i32 >, <16 x i32 >* %a_1
300
302
%a_2 = alloca <8 x i16 >
@@ -304,7 +306,7 @@ define dso_local spir_func <8 x i32> @FUNC_43() !sycl_explicit_simd !1 {
304
306
ret <8 x i32 > %ret_val
305
307
}
306
308
307
- define dso_local spir_func <16 x i32 > @FUNC_44 () !sycl_explicit_simd !1 {
309
+ define dso_local spir_func <16 x i32 > @FUNC_44 () {
308
310
%a_1 = alloca <16 x i32 >
309
311
%1 = load <16 x i32 >, <16 x i32 >* %a_1
310
312
%a_2 = alloca <8 x i32 >
0 commit comments