1
1
// RUN: %clang_cc1 -fsycl-is-device -internal-isystem %S/Inputs -triple spir64-unknown-unknown-sycldevice -disable-llvm-passes -sycl-std=2020 -emit-llvm -o - %s | FileCheck %s
2
2
3
3
// Tests for IR of [[intel::scheduler_target_fmax_mhz()]], [[intel::num_simd_work_items()]],
4
- // [[intel::no_global_work_offset()]], [[intel::no_global_work_offset ()]], [[sycl::reqd_sub_group_size()]],
4
+ // [[intel::no_global_work_offset()]], [[intel::max_global_work_dim ()]], [[sycl::reqd_sub_group_size()]],
5
5
// [[sycl::reqd_work_group_size()]], [[intel::kernel_args_restrict]], [[intel::max_work_group_size()]],
6
6
// and [[intel::sycl_explicit_simd]] function attributes in SYCL 2020.
7
7
@@ -73,7 +73,7 @@ class Foo4 {
73
73
class Functor4 {
74
74
public:
75
75
void operator ()() const {
76
- foo ();
76
+ foo4 ();
77
77
}
78
78
};
79
79
@@ -146,134 +146,148 @@ class Functor10 {
146
146
147
147
int main () {
148
148
q.submit ([&](handler &h) {
149
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name1() #0 {{.*}} !scheduler_target_fmax_mhz ![[NUM1:[0-9]+]]
149
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name1() #0 !kernel_arg_buffer_location ![[NUM:[0-9]+]] !scheduler_target_fmax_mhz ![[NUM1:[0-9]+]]
150
150
Foo boo;
151
151
h.single_task <class kernel_name1 >(boo);
152
152
153
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name2() #0 {{.*}} !scheduler_target_fmax_mhz ![[NUM42:[0-9]+]]
153
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name2() #0 !kernel_arg_buffer_location ![[NUM]] !scheduler_target_fmax_mhz ![[NUM42:[0-9]+]]
154
154
h.single_task <class kernel_name2 >(
155
155
[]() [[intel::scheduler_target_fmax_mhz (42 )]]{});
156
156
157
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name3() #0 {{.*}} !scheduler_target_fmax_mhz ![[NUM2:[0-9]+]]
157
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name3() #0 !kernel_arg_buffer_location ![[NUM]] !scheduler_target_fmax_mhz ![[NUM2:[0-9]+]]
158
158
Functor<2 > f;
159
159
h.single_task <class kernel_name3 >(f);
160
160
161
161
// Test attribute is not propagated.
162
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name4()
162
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name4() #0 !kernel_arg_buffer_location ![[NUM]]
163
163
// CHECK-NOT: !scheduler_target_fmax_mhz
164
+ // CHECK-SAME: {
165
+ // CHECK: define dso_local spir_func void @_Z3foov()
164
166
h.single_task <class kernel_name4 >(
165
167
[]() { foo (); });
166
168
167
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name5() #0 {{.*}} !num_simd_work_items ![[NUM1]]
169
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name5() #0 !kernel_arg_buffer_location ![[NUM]] !num_simd_work_items ![[NUM1]]
168
170
Foo1 boo1;
169
171
h.single_task <class kernel_name5 >(boo1);
170
172
171
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name6() #0 {{.*}} !num_simd_work_items ![[NUM42]]
173
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name6() #0 !kernel_arg_buffer_location ![[NUM]] !num_simd_work_items ![[NUM42]]
172
174
h.single_task <class kernel_name6 >(
173
175
[]() [[intel::num_simd_work_items (42 )]]{});
174
176
175
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name7() #0 {{.*}} !num_simd_work_items ![[NUM2]]
177
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name7() #0 !kernel_arg_buffer_location ![[NUM]] !num_simd_work_items ![[NUM2]]
176
178
Functor1<2 > f1;
177
179
h.single_task <class kernel_name7 >(f1);
178
180
179
181
// Test attribute is not propagated.
180
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name8()
182
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name8() #0 !kernel_arg_buffer_location ![[NUM]]
181
183
// CHECK-NOT: !num_simd_work_items
184
+ // CHECK-SAME: {
185
+ // CHECK: define dso_local spir_func void @_Z4foo1v()
182
186
h.single_task <class kernel_name8 >(
183
187
[]() { foo1 (); });
184
188
185
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name9() #0 {{.*}} !no_global_work_offset ![[NUM:[0-9]+]]
189
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name9() #0 !kernel_arg_buffer_location ![[NUM]] !no_global_work_offset ![[NUM:[0-9]+]]
186
190
Foo2 boo2;
187
191
h.single_task <class kernel_name9 >(boo2);
188
192
189
193
// CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name10() #0 {{.*}} ![[NUM0:[0-9]+]]
190
194
h.single_task <class kernel_name10 >(
191
195
[]() [[intel::no_global_work_offset (0 )]]{});
192
196
193
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name11() #0 {{.*}} !no_global_work_offset ![[NUM]]
197
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name11() #0 !kernel_arg_buffer_location ![[NUM]] !no_global_work_offset ![[NUM]]
194
198
Functor2<1 > f2;
195
199
h.single_task <class kernel_name11 >(f2);
196
200
197
201
// Test attribute is not propagated.
198
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name12()
202
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name12() #0 !kernel_arg_buffer_location ![[NUM]]
199
203
// CHECK-NOT: !no_global_work_offset
204
+ // CHECK-SAME: {
205
+ // CHECK: define dso_local spir_func void @_Z4foo2v()
200
206
h.single_task <class kernel_name12 >(
201
207
[]() { foo2 (); });
202
208
203
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name13() #0 {{.*}} !max_global_work_dim ![[NUM1]]
209
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name13() #0 !kernel_arg_buffer_location ![[NUM]] !max_global_work_dim ![[NUM1]]
204
210
Foo3 boo3;
205
211
h.single_task <class kernel_name13 >(boo3);
206
212
207
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name14() #0 {{.*}} !max_global_work_dim ![[NUM1]]
213
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name14() #0 !kernel_arg_buffer_location ![[NUM]] !max_global_work_dim ![[NUM1]]
208
214
h.single_task <class kernel_name14 >(
209
215
[]() [[intel::max_global_work_dim (1 )]]{});
210
216
211
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name15() #0 {{.*}} !max_global_work_dim ![[NUM2]]
217
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name15() #0 !kernel_arg_buffer_location ![[NUM]] !max_global_work_dim ![[NUM2]]
212
218
Functor3<2 > f3;
213
219
h.single_task <class kernel_name15 >(f3);
214
220
215
221
// Test attribute is not propagated.
216
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name16()
222
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name16() #0 !kernel_arg_buffer_location ![[NUM]]
217
223
// CHECK-NOT: !max_global_work_dim
224
+ // CHECK-SAME: {
225
+ // CHECK: define dso_local spir_func void @_Z4foo3v()
218
226
h.single_task <class kernel_name16 >(
219
227
[]() { foo3 (); });
220
228
221
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name17() #0 {{.*}} !intel_reqd_sub_group_size ![[NUM16:[0-9]+]]
229
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name17() #0 !kernel_arg_buffer_location ![[NUM]] !intel_reqd_sub_group_size ![[NUM16:[0-9]+]]
222
230
Foo4 boo4;
223
231
h.single_task <class kernel_name17 >(boo4);
224
232
225
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name18() #0 {{.*}} !intel_reqd_sub_group_size ![[NUM1]]
233
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name18() #0 !kernel_arg_buffer_location ![[NUM]] !intel_reqd_sub_group_size ![[NUM1]]
226
234
h.single_task <class kernel_name18 >(
227
235
[]() [[sycl::reqd_sub_group_size (1 )]]{});
228
236
229
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name19() #0 {{.*}} !intel_reqd_sub_group_size ![[NUM2]]
237
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name19() #0 !kernel_arg_buffer_location ![[NUM]] !intel_reqd_sub_group_size ![[NUM2]]
230
238
Functor5<2 > f5;
231
239
h.single_task <class kernel_name19 >(f5);
232
240
233
241
// Test attribute is not propagated.
234
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name20()
242
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name20() #0 !kernel_arg_buffer_location ![[NUM]]
235
243
// CHECK-NOT: !reqd_sub_group_size
244
+ // CHECK-SAME: {
245
+ // CHECK: define dso_local spir_func void @_Z4foo4v()
236
246
Functor4 f4;
237
247
h.single_task <class kernel_name20 >(f4);
238
248
239
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name21() #0 {{.*}} !reqd_work_group_size ![[NUM32:[0-9]+]]
249
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name21() #0 !kernel_arg_buffer_location ![[NUM]] !reqd_work_group_size ![[NUM32:[0-9]+]]
240
250
Foo5 boo5;
241
251
h.single_task <class kernel_name21 >(boo5);
242
252
243
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name22() #0 {{.*}} !reqd_work_group_size ![[NUM88:[0-9]+]]
253
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name22() #0 !kernel_arg_buffer_location ![[NUM]] !reqd_work_group_size ![[NUM88:[0-9]+]]
244
254
h.single_task <class kernel_name22 >(
245
255
[]() [[sycl::reqd_work_group_size (8 , 8 , 8 )]]{});
246
256
247
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name23() #0 {{.*}} !reqd_work_group_size ![[NUM22:[0-9]+]]
257
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name23() #0 !kernel_arg_buffer_location ![[NUM]] !reqd_work_group_size ![[NUM22:[0-9]+]]
248
258
Functor7<2 , 2 , 2 > f7;
249
259
h.single_task <class kernel_name23 >(f7);
250
260
251
261
// Test attribute is not propagated.
252
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name24()
262
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name24() #0 !kernel_arg_buffer_location ![[NUM]]
253
263
// CHECK-NOT: !reqd_work_group_size
264
+ // CHECK-SAME: {
265
+ // CHECK: define dso_local spir_func void @_Z4foo5v()
254
266
Functor6 f6;
255
267
h.single_task <class kernel_name24 >(f6);
256
268
257
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name25() #0 {{.*}} !max_work_group_size ![[NUM32]]
269
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name25() #0 !kernel_arg_buffer_location ![[NUM]] !max_work_group_size ![[NUM32]]
258
270
Foo6 boo6;
259
271
h.single_task <class kernel_name25 >(boo6);
260
272
261
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name26() #0 {{.*}} !max_work_group_size ![[NUM88]]
273
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name26() #0 !kernel_arg_buffer_location ![[NUM]] !max_work_group_size ![[NUM88]]
262
274
h.single_task <class kernel_name26 >(
263
275
[]() [[intel::max_work_group_size (8 , 8 , 8 )]]{});
264
276
265
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name27() #0 {{.*}} !max_work_group_size ![[NUM22]]
277
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name27() #0 !kernel_arg_buffer_location ![[NUM]] !max_work_group_size ![[NUM22]]
266
278
Functor9<2 , 2 , 2 > f9;
267
279
h.single_task <class kernel_name27 >(f9);
268
280
269
281
// Test attribute is not propagated.
270
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name28()
282
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name28() #0 !kernel_arg_buffer_location ![[NUM]]
271
283
// CHECK-NOT: !max_work_group_size
284
+ // CHECK-SAME: {
285
+ // CHECK: define dso_local spir_func void @_Z4foo6v()
272
286
Functor8 f8;
273
287
h.single_task <class kernel_name28 >(f8);
274
288
275
289
// Test attribute is not propagated.
276
- // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name29()
290
+ // CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name29() #0 !kernel_arg_buffer_location ![[NUM]]
277
291
// CHECK-NOT: !sycl_explicit_simd
278
292
// CHECK-SAME: {
279
293
// CHECK: define {{.*}}spir_func void @{{.*}}foo7{{.*}} !sycl_explicit_simd ![[NUM]]
@@ -292,6 +306,8 @@ int main() {
292
306
// CHECK: define {{.*}}spir_kernel void @{{.*}}kernel_name32() #0 !kernel_arg_buffer_location ![[NUM]]
293
307
// CHECK: define {{.*}}spir_func void @{{.*}}Functor10{{.*}}(%class._ZTS9Functor10.Functor10 addrspace(4)* align 1 dereferenceable_or_null(1) %this) #3 comdat align 2
294
308
// CHECK-NOT: noalias
309
+ // CHECK-SAME: {
310
+ // CHECK: define dso_local spir_func void @_Z4foo8v()
295
311
Functor10 f10;
296
312
h.single_task <class kernel_name32 >(f10);
297
313
0 commit comments