28
28
29
29
using namespace cl ::sycl;
30
30
using namespace sycl ::ext::intel;
31
- using namespace sycl ::ext::intel::esimd;
32
31
33
32
// --- Data initialization functions
34
33
@@ -150,12 +149,13 @@ DEFINE_HOST_BIN_OP(pow, std::pow(X, Y));
150
149
151
150
#define DEFINE_ESIMD_DEVICE_OP (Op ) \
152
151
template <class T , int N> struct ESIMDf <T, N, MathOp::Op, AllVec> { \
153
- simd<T, N> operator ()(simd<T, N> X) const SYCL_ESIMD_FUNCTION { \
152
+ esimd::simd<T, N> \
153
+ operator ()(esimd::simd<T, N> X) const SYCL_ESIMD_FUNCTION { \
154
154
return esimd::Op<T, N>(X); \
155
155
} \
156
156
}; \
157
157
template <class T , int N> struct ESIMDf <T, N, MathOp::Op, AllSca> { \
158
- simd<T, N> operator ()(T X) const SYCL_ESIMD_FUNCTION { \
158
+ esimd:: simd<T, N> operator ()(T X) const SYCL_ESIMD_FUNCTION { \
159
159
return esimd::Op<T, N>(X); \
160
160
} \
161
161
};
@@ -176,25 +176,26 @@ DEFINE_ESIMD_DEVICE_OP(log2);
176
176
177
177
#define DEFINE_ESIMD_DEVICE_BIN_OP (Op ) \
178
178
template <class T , int N> struct BinESIMDf <T, N, MathOp::Op, AllSca> { \
179
- simd<T, N> operator ()(T X, \
180
- T Y) const SYCL_ESIMD_FUNCTION { \
179
+ esimd::simd<T, N> operator ()(T X, T Y) const SYCL_ESIMD_FUNCTION { \
181
180
return esimd::Op<T, N>(X, Y); \
182
181
} \
183
182
}; \
184
183
template <class T , int N> struct BinESIMDf <T, N, MathOp::Op, AllVec> { \
185
- simd<T, N> operator ()(simd<T, N>X, \
186
- simd<T, N>Y) const SYCL_ESIMD_FUNCTION { \
184
+ esimd::simd<T, N> \
185
+ operator ()(esimd::simd<T, N> X, \
186
+ esimd::simd<T, N> Y) const SYCL_ESIMD_FUNCTION { \
187
187
return esimd::Op<T, N>(X, Y); \
188
188
} \
189
189
}; \
190
190
template <class T , int N> struct BinESIMDf <T, N, MathOp::Op, Sca1Vec2> { \
191
- simd<T, N> operator ()(T X, simd<T, N> Y) const SYCL_ESIMD_FUNCTION { \
191
+ esimd::simd<T, N> \
192
+ operator ()(T X, esimd::simd<T, N> Y) const SYCL_ESIMD_FUNCTION { \
192
193
return esimd::Op<T, N>(X, Y); \
193
194
} \
194
195
}; \
195
196
template <class T , int N> struct BinESIMDf <T, N, MathOp::Op, Sca2Vec1> { \
196
- simd<T, N> operator ()(simd<T, N>X, \
197
- T Y) const SYCL_ESIMD_FUNCTION { \
197
+ esimd:: simd<T, N> operator ()(esimd:: simd<T, N> X, \
198
+ T Y) const SYCL_ESIMD_FUNCTION { \
198
199
return esimd::Op<T, N>(X, Y); \
199
200
} \
200
201
};
@@ -204,13 +205,14 @@ DEFINE_ESIMD_DEVICE_BIN_OP(pow);
204
205
205
206
#define DEFINE_SYCL_DEVICE_OP (Op ) \
206
207
template <class T , int N> struct SYCLf <T, N, MathOp::Op, AllVec> { \
207
- simd<T, N> operator ()(simd<T, N>X) const SYCL_ESIMD_FUNCTION { \
208
+ esimd::simd<T, N> \
209
+ operator ()(esimd::simd<T, N> X) const SYCL_ESIMD_FUNCTION { \
208
210
/* T must be float for SYCL, so not a template parameter for sycl::Op*/ \
209
211
return sycl::Op<N>(X); \
210
212
} \
211
213
}; \
212
214
template <class T , int N> struct SYCLf <T, N, MathOp::Op, AllSca> { \
213
- simd<T, N> operator ()(T X) const SYCL_ESIMD_FUNCTION { \
215
+ esimd:: simd<T, N> operator ()(T X) const SYCL_ESIMD_FUNCTION { \
214
216
return sycl::Op<N>(X); \
215
217
} \
216
218
};
@@ -233,14 +235,14 @@ struct UnaryDeviceFunc {
233
235
234
236
void operator ()(id<1 > I) const SYCL_ESIMD_KERNEL {
235
237
unsigned int Offset = I * N * sizeof (T);
236
- simd<T, N> Vx;
238
+ esimd:: simd<T, N> Vx;
237
239
Vx.copy_from (In, Offset);
238
240
239
241
if (I.get (0 ) % 2 == 0 ) {
240
242
for (int J = 0 ; J < N; J++) {
241
243
Kernel<T, N, Op, AllSca> DevF{};
242
244
T Val = Vx[J];
243
- simd<T, N> V = DevF (Val); // scalar arg
245
+ esimd:: simd<T, N> V = DevF (Val); // scalar arg
244
246
Vx[J] = V[J];
245
247
}
246
248
} else {
@@ -264,31 +266,31 @@ struct BinaryDeviceFunc {
264
266
265
267
void operator ()(id<1 > I) const SYCL_ESIMD_KERNEL {
266
268
unsigned int Offset = I * N * sizeof (T);
267
- simd<T, N> V1 (In1, Offset);
268
- simd<T, N> V2 (In2, Offset);
269
- simd<T, N> V;
269
+ esimd:: simd<T, N> V1 (In1, Offset);
270
+ esimd:: simd<T, N> V2 (In2, Offset);
271
+ esimd:: simd<T, N> V;
270
272
271
273
if (I.get (0 ) % 2 == 0 ) {
272
274
int Ind = 0 ;
273
275
{
274
276
Kernel<T, N, Op, AllSca> DevF{};
275
277
T Val2 = V2[Ind];
276
- simd<T, N> Vv = DevF (V1[Ind], Val2); // both arguments are scalar
278
+ esimd:: simd<T, N> Vv = DevF (V1[Ind], Val2); // both arguments are scalar
277
279
V[Ind] = Vv[Ind];
278
280
}
279
281
Ind++;
280
282
{
281
283
Kernel<T, N, Op, Sca1Vec2> DevF{};
282
284
T Val1 = V1[Ind];
283
- simd<T, N> Vv = DevF (Val1, V2); // scalar, vector
285
+ esimd:: simd<T, N> Vv = DevF (Val1, V2); // scalar, vector
284
286
V[Ind] = Vv[Ind];
285
287
}
286
288
Ind++;
287
289
{
288
290
for (int J = Ind; J < N; ++J) {
289
291
Kernel<T, N, Op, Sca2Vec1> DevF{};
290
292
T Val2 = V2[J];
291
- simd<T, N> Vv = DevF (V1, Val2); // scalar 2nd arg
293
+ esimd:: simd<T, N> Vv = DevF (V1, Val2); // scalar 2nd arg
292
294
V[J] = Vv[J];
293
295
}
294
296
}
0 commit comments