@@ -208,28 +208,37 @@ template <typename Type, std::size_t NumElements> class marray {
208
208
return Ret; \
209
209
} \
210
210
template <typename T> \
211
- friend typename std::enable_if< \
212
- std::is_convertible <DataT, T>::value && \
213
- (std::is_fundamental <T>::value || \
214
- std::is_same <typename std::remove_const<T>::type, half>::value), \
215
- marray>::type \
211
+ friend typename std::enable_if_t < \
212
+ std::is_convertible_v <DataT, T> && \
213
+ (std::is_fundamental_v <T> || \
214
+ std::is_same_v <typename std::remove_const<T>::type, half>), \
215
+ marray> \
216
216
operator BINOP (const marray &Lhs, const T &Rhs) { \
217
217
return Lhs BINOP marray (static_cast <DataT>(Rhs)); \
218
218
} \
219
+ template <typename T> \
220
+ friend typename std::enable_if_t < \
221
+ std::is_convertible_v<DataT, T> && \
222
+ (std::is_fundamental_v<T> || \
223
+ std::is_same_v<typename std::remove_const<T>::type, half>), \
224
+ marray> \
225
+ operator BINOP (const T &Lhs, const marray &Rhs) { \
226
+ return marray (static_cast <DataT>(Lhs)) BINOP Rhs; \
227
+ } \
219
228
friend marray &operator OPASSIGN (marray &Lhs, const marray &Rhs) { \
220
229
Lhs = Lhs BINOP Rhs; \
221
230
return Lhs; \
222
231
} \
223
232
template <std::size_t Num = NumElements> \
224
- friend typename std::enable_if <Num != 1 , marray &>::type operator OPASSIGN ( \
233
+ friend typename std::enable_if_t <Num != 1 , marray &> operator OPASSIGN ( \
225
234
marray &Lhs, const DataT &Rhs) { \
226
235
Lhs = Lhs BINOP marray (Rhs); \
227
236
return Lhs; \
228
237
}
229
238
230
239
#define __SYCL_BINOP_INTEGRAL (BINOP, OPASSIGN ) \
231
240
template <typename T = DataT, \
232
- typename = std::enable_if<std::is_integral <T>::value , marray>> \
241
+ typename = std::enable_if<std::is_integral_v <T>, marray>> \
233
242
friend marray operator BINOP (const marray &Lhs, const marray &Rhs) { \
234
243
marray Ret; \
235
244
for (size_t I = 0 ; I < NumElements; ++I) { \
@@ -238,23 +247,31 @@ template <typename Type, std::size_t NumElements> class marray {
238
247
return Ret; \
239
248
} \
240
249
template <typename T, typename BaseT = DataT> \
241
- friend typename std::enable_if <std::is_convertible <T, DataT>::value && \
242
- std::is_integral <T>::value && \
243
- std::is_integral <BaseT>::value, \
244
- marray>::type \
250
+ friend typename std::enable_if_t <std::is_convertible_v <T, DataT> && \
251
+ std::is_integral_v <T> && \
252
+ std::is_integral_v <BaseT>, \
253
+ marray> \
245
254
operator BINOP (const marray &Lhs, const T &Rhs) { \
246
255
return Lhs BINOP marray (static_cast <DataT>(Rhs)); \
247
256
} \
257
+ template <typename T, typename BaseT = DataT> \
258
+ friend typename std::enable_if_t <std::is_convertible_v<T, DataT> && \
259
+ std::is_integral_v<T> && \
260
+ std::is_integral_v<BaseT>, \
261
+ marray> \
262
+ operator BINOP (const T &Lhs, const marray &Rhs) { \
263
+ return marray (static_cast <DataT>(Lhs)) BINOP Rhs; \
264
+ } \
248
265
template <typename T = DataT, \
249
- typename = std::enable_if<std::is_integral <T>::value , marray>> \
266
+ typename = std::enable_if<std::is_integral_v <T>, marray>> \
250
267
friend marray &operator OPASSIGN (marray &Lhs, const marray &Rhs) { \
251
268
Lhs = Lhs BINOP Rhs; \
252
269
return Lhs; \
253
270
} \
254
271
template <std::size_t Num = NumElements, typename T = DataT> \
255
- friend typename std::enable_if<Num != 1 && std::is_integral<T>::value, \
256
- marray &>::type \
257
- operator OPASSIGN (marray &Lhs, const DataT &Rhs) { \
272
+ friend \
273
+ typename std:: enable_if_t <Num != 1 && std::is_integral_v<T>, marray &> \
274
+ operator OPASSIGN (marray &Lhs, const DataT &Rhs) { \
258
275
Lhs = Lhs BINOP marray (Rhs); \
259
276
return Lhs; \
260
277
}
@@ -291,32 +308,20 @@ template <typename Type, std::size_t NumElements> class marray {
291
308
return Ret; \
292
309
} \
293
310
template <typename T> \
294
- friend typename std::enable_if <std::is_convertible <T, DataT>::value && \
295
- (std::is_fundamental <T>::value || \
296
- std::is_same <T, half>::value), \
297
- marray<bool , NumElements>>::type \
311
+ friend typename std::enable_if_t <std::is_convertible_v <T, DataT> && \
312
+ (std::is_fundamental_v <T> || \
313
+ std::is_same_v <T, half>), \
314
+ marray<bool , NumElements>> \
298
315
operator RELLOGOP (const marray &Lhs, const T &Rhs) { \
299
316
return Lhs RELLOGOP marray (static_cast <const DataT &>(Rhs)); \
300
- }
301
-
302
- #define __SYCL_RELLOGOP_INTEGRAL (RELLOGOP ) \
303
- template <typename T = DataT> \
304
- friend typename std::enable_if<std::is_integral<T>::value, \
305
- marray<bool , NumElements>>::type \
306
- operator RELLOGOP (const marray &Lhs, const marray &Rhs) { \
307
- marray<bool , NumElements> Ret; \
308
- for (size_t I = 0 ; I < NumElements; ++I) { \
309
- Ret[I] = Lhs[I] RELLOGOP Rhs[I]; \
310
- } \
311
- return Ret; \
312
317
} \
313
- template <typename T, typename BaseT = DataT> \
314
- friend typename std::enable_if <std::is_convertible <T, DataT>::value && \
315
- std::is_integral <T>::value && \
316
- std::is_integral<BaseT>::value, \
317
- marray<bool , NumElements>>::type \
318
- operator RELLOGOP (const marray &Lhs, const T &Rhs) { \
319
- return Lhs RELLOGOP marray (static_cast <const DataT &>(Rhs)) ; \
318
+ template <typename T> \
319
+ friend typename std::enable_if_t <std::is_convertible_v <T, DataT> && \
320
+ ( std::is_fundamental_v <T> || \
321
+ std::is_same_v<T, half>), \
322
+ marray<bool , NumElements>> \
323
+ operator RELLOGOP (const T &Lhs, const marray &Rhs) { \
324
+ return marray (static_cast <const DataT &>(Lhs)) RELLOGOP Rhs ; \
320
325
}
321
326
322
327
__SYCL_RELLOGOP (==)
@@ -325,12 +330,10 @@ template <typename Type, std::size_t NumElements> class marray {
325
330
__SYCL_RELLOGOP (<)
326
331
__SYCL_RELLOGOP (>=)
327
332
__SYCL_RELLOGOP (<=)
328
-
329
- __SYCL_RELLOGOP_INTEGRAL (&&)
330
- __SYCL_RELLOGOP_INTEGRAL (||)
333
+ __SYCL_RELLOGOP (&&)
334
+ __SYCL_RELLOGOP (||)
331
335
332
336
#undef __SYCL_RELLOGOP
333
- #undef __SYCL_RELLOGOP_INTEGRAL
334
337
335
338
#ifdef __SYCL_UOP
336
339
#error "Undefine __SYCL_UOP macro"
0 commit comments