12
12
// CHECK-NEXT: const char* const kernel_names[] = {
13
13
// CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3GNU",
14
14
// CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3EMU",
15
+ // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3COW",
15
16
// CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3OWL",
16
17
// CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3RAT",
18
+ // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3CAT",
17
19
// CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3FOX",
18
- // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3BEE"
20
+ // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3PIG",
21
+ // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3BEE",
22
+ // CHECK-NEXT: "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3DOG"
19
23
// CHECK-NEXT: };
20
24
21
25
// CHECK:template <> struct KernelInfo<GNU> {
50
54
// CHECK-NEXT: __SYCL_DLL_LOCAL
51
55
// CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
52
56
// CHECK-NEXT:};
57
+ // CHECK-NEXT:template <> struct KernelInfo<COW> {
58
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
59
+ // CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3COW"; }
60
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
61
+ // CHECK-NEXT: static constexpr unsigned getNumParams() { return 0; }
62
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
63
+ // CHECK-NEXT: static constexpr const kernel_param_desc_t& getParamDesc(unsigned i) {
64
+ // CHECK-NEXT: return kernel_signatures[i+0];
65
+ // CHECK-NEXT: }
66
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
67
+ // CHECK-NEXT: static constexpr bool isESIMD() { return 0; }
68
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
69
+ // CHECK-NEXT: static constexpr bool callsThisItem() { return 1; }
70
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
71
+ // CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
72
+ // CHECK-NEXT:};
53
73
// CHECK-NEXT:template <> struct KernelInfo<OWL> {
54
74
// CHECK-NEXT: __SYCL_DLL_LOCAL
55
75
// CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3OWL"; }
82
102
// CHECK-NEXT: __SYCL_DLL_LOCAL
83
103
// CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
84
104
// CHECK-NEXT:};
105
+ // CHECK-NEXT:template <> struct KernelInfo<CAT> {
106
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
107
+ // CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3CAT"; }
108
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
109
+ // CHECK-NEXT: static constexpr unsigned getNumParams() { return 0; }
110
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
111
+ // CHECK-NEXT: static constexpr const kernel_param_desc_t& getParamDesc(unsigned i) {
112
+ // CHECK-NEXT: return kernel_signatures[i+0];
113
+ // CHECK-NEXT: }
114
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
115
+ // CHECK-NEXT: static constexpr bool isESIMD() { return 0; }
116
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
117
+ // CHECK-NEXT: static constexpr bool callsThisItem() { return 1; }
118
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
119
+ // CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
120
+ // CHECK-NEXT:};
85
121
// CHECK-NEXT:template <> struct KernelInfo<FOX> {
86
122
// CHECK-NEXT: __SYCL_DLL_LOCAL
87
123
// CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3FOX"; }
98
134
// CHECK-NEXT: __SYCL_DLL_LOCAL
99
135
// CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
100
136
// CHECK-NEXT:};
137
+ // CHECK-NEXT:template <> struct KernelInfo<PIG> {
138
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
139
+ // CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3PIG"; }
140
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
141
+ // CHECK-NEXT: static constexpr unsigned getNumParams() { return 0; }
142
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
143
+ // CHECK-NEXT: static constexpr const kernel_param_desc_t& getParamDesc(unsigned i) {
144
+ // CHECK-NEXT: return kernel_signatures[i+0];
145
+ // CHECK-NEXT: }
146
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
147
+ // CHECK-NEXT: static constexpr bool isESIMD() { return 0; }
148
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
149
+ // CHECK-NEXT: static constexpr bool callsThisItem() { return 0; }
150
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
151
+ // CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
152
+ // CHECK-NEXT:};
101
153
// CHECK-NEXT:template <> struct KernelInfo<BEE> {
102
154
// CHECK-NEXT: __SYCL_DLL_LOCAL
103
155
// CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3BEE"; }
114
166
// CHECK-NEXT: __SYCL_DLL_LOCAL
115
167
// CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
116
168
// CHECK-NEXT:};
169
+ // CHECK-NEXT:template <> struct KernelInfo<DOG> {
170
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
171
+ // CHECK-NEXT: static constexpr const char* getName() { return "_ZTSZZ4mainENKUlRN2cl4sycl7handlerEE_clES2_E3DOG"; }
172
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
173
+ // CHECK-NEXT: static constexpr unsigned getNumParams() { return 0; }
174
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
175
+ // CHECK-NEXT: static constexpr const kernel_param_desc_t& getParamDesc(unsigned i) {
176
+ // CHECK-NEXT: return kernel_signatures[i+0];
177
+ // CHECK-NEXT: }
178
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
179
+ // CHECK-NEXT: static constexpr bool isESIMD() { return 0; }
180
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
181
+ // CHECK-NEXT: static constexpr bool callsThisItem() { return 1; }
182
+ // CHECK-NEXT: __SYCL_DLL_LOCAL
183
+ // CHECK-NEXT: static constexpr bool callsAnyThisFreeFunction() { return 1; }
184
+ // CHECK-NEXT:};
117
185
118
186
#include " sycl.hpp"
119
187
120
188
using namespace cl ::sycl;
121
189
122
190
SYCL_EXTERNAL item<1 > g () { return this_item<1 >(); }
123
191
SYCL_EXTERNAL item<1 > f () { return g (); }
192
+ SYCL_EXTERNAL item<1 > s () { return ext::oneapi::experimental::this_item<1 >(); }
193
+ SYCL_EXTERNAL item<1 > h () { return s (); }
124
194
125
195
// This is a similar-looking this_item function but not the real one.
126
196
template <int Dims> item<Dims> this_item (int i) { return item<1 >{i}; }
@@ -142,6 +212,11 @@ int main() {
142
212
cgh.parallel_for <class EMU >(range<1 >(1 ),
143
213
[=](::item<1 > I) { this_item<1 >(); });
144
214
215
+ // This kernel calls sycl::ext::oneapi::experimental::this_item
216
+ cgh.parallel_for <class COW >(range<1 >(1 ), [=](::item<1 > I) {
217
+ ext::oneapi::experimental::this_item<1 >();
218
+ });
219
+
145
220
// This kernel does not call sycl::this_item
146
221
cgh.parallel_for <class OWL >(range<1 >(1 ), [=](id<1 > I) {
147
222
class C c;
@@ -151,11 +226,24 @@ int main() {
151
226
// This kernel calls sycl::this_item
152
227
cgh.parallel_for <class RAT >(range<1 >(1 ), [=](id<1 > I) { f (); });
153
228
229
+ // This kernel calls sycl::ext::oneapi::experimental::this_item
230
+ cgh.parallel_for <class CAT >(range<1 >(1 ), [=](id<1 > I) { h (); });
231
+
154
232
// This kernel does not call sycl::this_item, but does call this_id
155
233
cgh.parallel_for <class FOX >(range<1 >(1 ), [=](id<1 > I) { this_id<1 >(); });
156
234
235
+ // This kernel calls sycl::ext::oneapi::experimental::this_id
236
+ cgh.parallel_for <class PIG >(range<1 >(1 ), [=](id<1 > I) {
237
+ ext::oneapi::experimental::this_id<1 >();
238
+ });
239
+
157
240
// This kernel calls sycl::this_item
158
241
cgh.parallel_for <class BEE >(range<1 >(1 ), [=](auto I) { this_item<1 >(); });
242
+
243
+ // This kernel calls sycl::ext::oneapi::experimental::this_item
244
+ cgh.parallel_for <class DOG >(range<1 >(1 ), [=](auto I) {
245
+ ext::oneapi::experimental::this_item<1 >();
246
+ });
159
247
});
160
248
161
249
return 0 ;
0 commit comments