17
17
// TODO Decide whether to mark functions with this attribute.
18
18
#define __NOEXC /* noexcept*/
19
19
20
- // TODO Remove when half type will supported by SYCL Runtime
21
- #define __HALF_NO_ENABLED
22
-
23
20
namespace cl {
24
21
namespace sycl {
25
22
#ifdef __SYCL_DEVICE_ONLY__
@@ -260,15 +257,15 @@ fmod(T x, T y) __NOEXC {
260
257
// genfloat fract (genfloat x, genfloatptr iptr)
261
258
template <typename T, typename T2>
262
259
typename std::enable_if<
263
- detail::is_genfloat<T>::value &&detail::is_genfloatptr<T2>::value, T>::type
260
+ detail::is_genfloat<T>::value && detail::is_genfloatptr<T2>::value, T>::type
264
261
fract (T x, T2 iptr) __NOEXC {
265
262
return __sycl_std::__invoke_fract<T>(x, iptr);
266
263
}
267
264
268
265
// genfloat frexp (genfloat x, genintptr exp)
269
266
template <typename T, typename T2>
270
267
typename std::enable_if<
271
- detail::is_genfloat<T>::value &&detail::is_genintptr<T2>::value, T>::type
268
+ detail::is_genfloat<T>::value && detail::is_genintptr<T2>::value, T>::type
272
269
frexp (T x, T2 exp) __NOEXC {
273
270
return __sycl_std::__invoke_frexp<T>(x, exp);
274
271
}
@@ -308,7 +305,7 @@ ldexp(T x, int k) __NOEXC {
308
305
// vgenfloat ldexp (vgenfloat x, genint k)
309
306
template <typename T, typename T2>
310
307
typename std::enable_if<
311
- detail::is_vgenfloat<T>::value &&detail::is_intn<T2>::value, T>::type
308
+ detail::is_vgenfloat<T>::value && detail::is_intn<T2>::value, T>::type
312
309
ldexp (T x, T2 k) __NOEXC {
313
310
return __sycl_std::__invoke_ldexp<T>(x, k);
314
311
}
@@ -323,7 +320,7 @@ lgamma(T x) __NOEXC {
323
320
// genfloat lgamma_r (genfloat x, genintptr signp)
324
321
template <typename T, typename T2>
325
322
typename std::enable_if<
326
- detail::is_genfloat<T>::value &&detail::is_genintptr<T2>::value, T>::type
323
+ detail::is_genfloat<T>::value && detail::is_genintptr<T2>::value, T>::type
327
324
lgamma_r (T x, T2 signp) __NOEXC {
328
325
return __sycl_std::__invoke_lgamma_r<T>(x, signp);
329
326
}
@@ -387,7 +384,7 @@ minmag(T x, T y) __NOEXC {
387
384
// genfloat modf (genfloat x, genfloatptr iptr)
388
385
template <typename T, typename T2>
389
386
typename std::enable_if<
390
- detail::is_genfloat<T>::value &&detail::is_genfloatptr<T2>::value, T>::type
387
+ detail::is_genfloat<T>::value && detail::is_genfloatptr<T2>::value, T>::type
391
388
modf (T x, T2 iptr) __NOEXC {
392
389
return __sycl_std::__invoke_modf<T>(x, iptr);
393
390
}
@@ -420,7 +417,7 @@ pow(T x, T y) __NOEXC {
420
417
// genfloat pown (genfloat x, genint y)
421
418
template <typename T, typename T2>
422
419
typename std::enable_if<
423
- detail::is_genfloat<T>::value &&detail::is_genint<T2>::value, T>::type
420
+ detail::is_genfloat<T>::value && detail::is_genint<T2>::value, T>::type
424
421
pown (T x, T2 y) __NOEXC {
425
422
return __sycl_std::__invoke_pown<T>(x, y);
426
423
}
@@ -442,7 +439,7 @@ remainder(T x, T y) __NOEXC {
442
439
// genfloat remquo (genfloat x, genfloat y, genintptr quo)
443
440
template <typename T, typename T2>
444
441
typename std::enable_if<
445
- detail::is_genfloat<T>::value &&detail::is_genintptr<T2>::value, T>::type
442
+ detail::is_genfloat<T>::value && detail::is_genintptr<T2>::value, T>::type
446
443
remquo (T x, T y, T2 quo) __NOEXC {
447
444
return __sycl_std::__invoke_remquo<T>(x, y, quo);
448
445
}
@@ -457,7 +454,7 @@ rint(T x) __NOEXC {
457
454
// genfloat rootn (genfloat x, genint y)
458
455
template <typename T, typename T2>
459
456
typename std::enable_if<
460
- detail::is_genfloat<T>::value &&detail::is_genint<T2>::value, T>::type
457
+ detail::is_genfloat<T>::value && detail::is_genint<T2>::value, T>::type
461
458
rootn (T x, T2 y) __NOEXC {
462
459
return __sycl_std::__invoke_rootn<T>(x, y);
463
460
}
@@ -486,7 +483,7 @@ sin(T x) __NOEXC {
486
483
// genfloat sincos (genfloat x, genfloatptr cosval)
487
484
template <typename T, typename T2>
488
485
typename std::enable_if<
489
- detail::is_genfloat<T>::value &&detail::is_genfloatptr<T2>::value, T>::type
486
+ detail::is_genfloat<T>::value && detail::is_genfloatptr<T2>::value, T>::type
490
487
sincos (T x, T2 cosval) __NOEXC {
491
488
return __sycl_std::__invoke_sincos<T>(x, cosval);
492
489
}
@@ -1042,15 +1039,13 @@ dot(T p0, T p1) __NOEXC {
1042
1039
return __sycl_std::__invoke_OpDot<cl::sycl::cl_double>(p0, p1);
1043
1040
}
1044
1041
1045
- #ifndef __HALF_NO_ENABLED
1046
1042
// half dot (vgengeohalf p0, vgengeohalf p1)
1047
1043
template <typename T>
1048
1044
typename std::enable_if<detail::is_vgengeohalf<T>::value,
1049
1045
cl::sycl::cl_half>::type
1050
1046
dot (T p0, T p1) __NOEXC {
1051
1047
return __sycl_std::__invoke_OpDot<cl::sycl::cl_half>(p0, p1);
1052
1048
}
1053
- #endif
1054
1049
1055
1050
// float distance (gengeofloat p0, gengeofloat p1)
1056
1051
template <typename T, typename = typename std::enable_if<
@@ -1066,14 +1061,12 @@ cl::sycl::cl_double distance(T p0, T p1) __NOEXC {
1066
1061
return __sycl_std::__invoke_distance<cl::sycl::cl_double>(p0, p1);
1067
1062
}
1068
1063
1069
- #ifndef __HALF_NO_ENABLED
1070
1064
// half distance (gengeohalf p0, gengeohalf p1)
1071
1065
template <typename T, typename = typename std::enable_if<
1072
1066
detail::is_gengeohalf<T>::value, T>::type>
1073
1067
cl::sycl::cl_half distance (T p0, T p1) __NOEXC {
1074
1068
return __sycl_std::__invoke_distance<cl::sycl::cl_half>(p0, p1);
1075
1069
}
1076
- #endif
1077
1070
1078
1071
// float length (gengeofloat p)
1079
1072
template <typename T, typename = typename std::enable_if<
@@ -1089,14 +1082,12 @@ cl::sycl::cl_double length(T p) __NOEXC {
1089
1082
return __sycl_std::__invoke_length<cl::sycl::cl_double>(p);
1090
1083
}
1091
1084
1092
- #ifndef __HALF_NO_ENABLED
1093
1085
// half length (gengeohalf p)
1094
1086
template <typename T, typename = typename std::enable_if<
1095
1087
detail::is_gengeohalf<T>::value, T>::type>
1096
1088
cl::sycl::cl_half length (T p) __NOEXC {
1097
1089
return __sycl_std::__invoke_length<cl::sycl::cl_half>(p);
1098
1090
}
1099
- #endif
1100
1091
1101
1092
// gengeofloat normalize (gengeofloat p)
1102
1093
template <typename T>
@@ -1112,14 +1103,12 @@ normalize(T p) __NOEXC {
1112
1103
return __sycl_std::__invoke_normalize<T>(p);
1113
1104
}
1114
1105
1115
- #ifndef __HALF_NO_ENABLED
1116
1106
// gengeohalf normalize (gengeohalf p)
1117
1107
template <typename T>
1118
1108
typename std::enable_if<detail::is_gengeohalf<T>::value, T>::type
1119
1109
normalize (T p) __NOEXC {
1120
1110
return __sycl_std::__invoke_normalize<T>(p);
1121
1111
}
1122
- #endif
1123
1112
1124
1113
// float fast_distance (gengeofloat p0, gengeofloat p1)
1125
1114
template <typename T, typename = typename std::enable_if<
@@ -1173,7 +1162,7 @@ template <typename T, typename = typename std::enable_if<
1173
1162
detail::is_genfloat<T>::value, T>::type>
1174
1163
detail::common_rel_ret_t <T> isequal (T x, T y) __NOEXC {
1175
1164
return detail::RelConverter<T>::apply (
1176
- __sycl_std::__invoke_OpFOrdEqual<detail::rel_ret_t <T> >(x, y));
1165
+ __sycl_std::__invoke_OpFOrdEqual<detail::rel_ret_t <T>>(x, y));
1177
1166
}
1178
1167
1179
1168
// int isnotequal (half x, half y)
@@ -1185,7 +1174,7 @@ template <typename T, typename = typename std::enable_if<
1185
1174
detail::is_genfloat<T>::value, T>::type>
1186
1175
detail::common_rel_ret_t <T> isnotequal (T x, T y) __NOEXC {
1187
1176
return detail::RelConverter<T>::apply (
1188
- __sycl_std::__invoke_OpFUnordNotEqual<detail::rel_ret_t <T> >(x, y));
1177
+ __sycl_std::__invoke_OpFUnordNotEqual<detail::rel_ret_t <T>>(x, y));
1189
1178
}
1190
1179
1191
1180
// int isgreater (half x, half y)
@@ -1197,7 +1186,7 @@ template <typename T, typename = typename std::enable_if<
1197
1186
detail::is_genfloat<T>::value, T>::type>
1198
1187
detail::common_rel_ret_t <T> isgreater (T x, T y) __NOEXC {
1199
1188
return detail::RelConverter<T>::apply (
1200
- __sycl_std::__invoke_OpFOrdGreaterThan<detail::rel_ret_t <T> >(x, y));
1189
+ __sycl_std::__invoke_OpFOrdGreaterThan<detail::rel_ret_t <T>>(x, y));
1201
1190
}
1202
1191
1203
1192
// int isgreaterequal (half x, half y)
@@ -1209,7 +1198,7 @@ template <typename T, typename = typename std::enable_if<
1209
1198
detail::is_genfloat<T>::value, T>::type>
1210
1199
detail::common_rel_ret_t <T> isgreaterequal (T x, T y) __NOEXC {
1211
1200
return detail::RelConverter<T>::apply (
1212
- __sycl_std::__invoke_OpFOrdGreaterThanEqual<detail::rel_ret_t <T> >(x, y));
1201
+ __sycl_std::__invoke_OpFOrdGreaterThanEqual<detail::rel_ret_t <T>>(x, y));
1213
1202
}
1214
1203
1215
1204
// int isless (half x, half y)
@@ -1221,7 +1210,7 @@ template <typename T, typename = typename std::enable_if<
1221
1210
detail::is_genfloat<T>::value, T>::type>
1222
1211
detail::common_rel_ret_t <T> isless (T x, T y) __NOEXC {
1223
1212
return detail::RelConverter<T>::apply (
1224
- __sycl_std::__invoke_OpFOrdLessThan<detail::rel_ret_t <T> >(x, y));
1213
+ __sycl_std::__invoke_OpFOrdLessThan<detail::rel_ret_t <T>>(x, y));
1225
1214
}
1226
1215
1227
1216
// int islessequal (half x, half y)
@@ -1233,7 +1222,7 @@ template <typename T, typename = typename std::enable_if<
1233
1222
detail::is_genfloat<T>::value, T>::type>
1234
1223
detail::common_rel_ret_t <T> islessequal (T x, T y) __NOEXC {
1235
1224
return detail::RelConverter<T>::apply (
1236
- __sycl_std::__invoke_OpFOrdLessThanEqual<detail::rel_ret_t <T> >(x, y));
1225
+ __sycl_std::__invoke_OpFOrdLessThanEqual<detail::rel_ret_t <T>>(x, y));
1237
1226
}
1238
1227
1239
1228
// int islessgreater (half x, half y)
@@ -1245,7 +1234,7 @@ template <typename T, typename = typename std::enable_if<
1245
1234
detail::is_genfloat<T>::value, T>::type>
1246
1235
detail::common_rel_ret_t <T> islessgreater (T x, T y) __NOEXC {
1247
1236
return detail::RelConverter<T>::apply (
1248
- __sycl_std::__invoke_OpLessOrGreater<detail::rel_ret_t <T> >(x, y));
1237
+ __sycl_std::__invoke_OpLessOrGreater<detail::rel_ret_t <T>>(x, y));
1249
1238
}
1250
1239
1251
1240
// int isfinite (half x)
@@ -1257,7 +1246,7 @@ template <typename T, typename = typename std::enable_if<
1257
1246
detail::is_genfloat<T>::value, T>::type>
1258
1247
detail::common_rel_ret_t <T> isfinite (T x) __NOEXC {
1259
1248
return detail::RelConverter<T>::apply (
1260
- __sycl_std::__invoke_OpIsFinite<detail::rel_ret_t <T> >(x));
1249
+ __sycl_std::__invoke_OpIsFinite<detail::rel_ret_t <T>>(x));
1261
1250
}
1262
1251
1263
1252
// int isinf (half x)
@@ -1269,7 +1258,7 @@ template <typename T, typename = typename std::enable_if<
1269
1258
detail::is_genfloat<T>::value, T>::type>
1270
1259
detail::common_rel_ret_t <T> isinf (T x) __NOEXC {
1271
1260
return detail::RelConverter<T>::apply (
1272
- __sycl_std::__invoke_OpIsInf<detail::rel_ret_t <T> >(x));
1261
+ __sycl_std::__invoke_OpIsInf<detail::rel_ret_t <T>>(x));
1273
1262
}
1274
1263
1275
1264
// int isnan (half x)
@@ -1281,7 +1270,7 @@ template <typename T, typename = typename std::enable_if<
1281
1270
detail::is_genfloat<T>::value, T>::type>
1282
1271
detail::common_rel_ret_t <T> isnan (T x) __NOEXC {
1283
1272
return detail::RelConverter<T>::apply (
1284
- __sycl_std::__invoke_OpIsNan<detail::rel_ret_t <T> >(x));
1273
+ __sycl_std::__invoke_OpIsNan<detail::rel_ret_t <T>>(x));
1285
1274
}
1286
1275
1287
1276
// int isnormal (half x)
@@ -1293,7 +1282,7 @@ template <typename T, typename = typename std::enable_if<
1293
1282
detail::is_genfloat<T>::value, T>::type>
1294
1283
detail::common_rel_ret_t <T> isnormal (T x) __NOEXC {
1295
1284
return detail::RelConverter<T>::apply (
1296
- __sycl_std::__invoke_OpIsNormal<detail::rel_ret_t <T> >(x));
1285
+ __sycl_std::__invoke_OpIsNormal<detail::rel_ret_t <T>>(x));
1297
1286
}
1298
1287
1299
1288
// int isordered (half x)
@@ -1305,7 +1294,7 @@ template <typename T, typename = typename std::enable_if<
1305
1294
detail::is_genfloat<T>::value, T>::type>
1306
1295
detail::common_rel_ret_t <T> isordered (T x, T y) __NOEXC {
1307
1296
return detail::RelConverter<T>::apply (
1308
- __sycl_std::__invoke_OpOrdered<detail::rel_ret_t <T> >(x, y));
1297
+ __sycl_std::__invoke_OpOrdered<detail::rel_ret_t <T>>(x, y));
1309
1298
}
1310
1299
1311
1300
// int isunordered (half x, half y)
@@ -1317,7 +1306,7 @@ template <typename T, typename = typename std::enable_if<
1317
1306
detail::is_genfloat<T>::value, T>::type>
1318
1307
detail::common_rel_ret_t <T> isunordered (T x, T y) __NOEXC {
1319
1308
return detail::RelConverter<T>::apply (
1320
- __sycl_std::__invoke_OpUnordered<detail::rel_ret_t <T> >(x, y));
1309
+ __sycl_std::__invoke_OpUnordered<detail::rel_ret_t <T>>(x, y));
1321
1310
}
1322
1311
1323
1312
// int signbit (half x)
@@ -1329,7 +1318,7 @@ template <typename T, typename = typename std::enable_if<
1329
1318
detail::is_genfloat<T>::value, T>::type>
1330
1319
detail::common_rel_ret_t <T> signbit (T x) __NOEXC {
1331
1320
return detail::RelConverter<T>::apply (
1332
- __sycl_std::__invoke_OpSignBitSet<detail::rel_ret_t <T> >(x));
1321
+ __sycl_std::__invoke_OpSignBitSet<detail::rel_ret_t <T>>(x));
1333
1322
}
1334
1323
1335
1324
// int any (sigeninteger x)
@@ -1346,7 +1335,7 @@ typename std::enable_if<detail::is_vigeninteger<T>::value,
1346
1335
cl::sycl::cl_int>::type
1347
1336
any (T x) __NOEXC {
1348
1337
return detail::rel_sign_bit_test_ret_t <T>(
1349
- __sycl_std::__invoke_OpAny<detail::rel_sign_bit_test_ret_t <T> >(
1338
+ __sycl_std::__invoke_OpAny<detail::rel_sign_bit_test_ret_t <T>>(
1350
1339
detail::rel_sign_bit_test_arg_t <T>(x)));
1351
1340
}
1352
1341
@@ -1364,7 +1353,7 @@ typename std::enable_if<detail::is_vigeninteger<T>::value,
1364
1353
cl::sycl::cl_int>::type
1365
1354
all (T x) __NOEXC {
1366
1355
return detail::rel_sign_bit_test_ret_t <T>(
1367
- __sycl_std::__invoke_OpAll<detail::rel_sign_bit_test_ret_t <T> >(
1356
+ __sycl_std::__invoke_OpAll<detail::rel_sign_bit_test_ret_t <T>>(
1368
1357
detail::rel_sign_bit_test_arg_t <T>(x)));
1369
1358
}
1370
1359
@@ -1377,75 +1366,73 @@ bitselect(T a, T b, T c) __NOEXC {
1377
1366
1378
1367
// geninteger select (geninteger a, geninteger b, igeninteger c)
1379
1368
template <typename T, typename T2>
1380
- typename std::enable_if<
1381
- detail::is_geninteger<T>::value && detail::is_igeninteger<T2>::value,
1382
- T>::type
1369
+ typename std::enable_if<detail::is_geninteger<T>::value &&
1370
+ detail::is_igeninteger<T2>::value,
1371
+ T>::type
1383
1372
select (T a, T b, T2 c) __NOEXC {
1384
1373
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1385
1374
}
1386
1375
1387
1376
// geninteger select (geninteger a, geninteger b, ugeninteger c)
1388
1377
template <typename T, typename T2>
1389
- typename std::enable_if<
1390
- detail::is_geninteger<T>::value && detail::is_ugeninteger<T2>::value,
1391
- T>::type
1378
+ typename std::enable_if<detail::is_geninteger<T>::value &&
1379
+ detail::is_ugeninteger<T2>::value,
1380
+ T>::type
1392
1381
select (T a, T b, T2 c) __NOEXC {
1393
1382
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1394
1383
}
1395
1384
1396
1385
// genfloatf select (genfloatf a, genfloatf b, genint c)
1397
1386
template <typename T, typename T2>
1398
1387
typename std::enable_if<
1399
- detail::is_genfloatf<T>::value &&detail::is_genint<T2>::value, T>::type
1388
+ detail::is_genfloatf<T>::value && detail::is_genint<T2>::value, T>::type
1400
1389
select (T a, T b, T2 c) __NOEXC {
1401
1390
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1402
1391
}
1403
1392
1404
1393
// genfloatf select (genfloatf a, genfloatf b, ugenint c)
1405
1394
template <typename T, typename T2>
1406
1395
typename std::enable_if<
1407
- detail::is_genfloatf<T>::value &&detail::is_ugenint<T2>::value, T>::type
1396
+ detail::is_genfloatf<T>::value && detail::is_ugenint<T2>::value, T>::type
1408
1397
select (T a, T b, T2 c) __NOEXC {
1409
1398
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1410
1399
}
1411
1400
1412
1401
// genfloatd select (genfloatd a, genfloatd b, igeninteger64 c)
1413
1402
template <typename T, typename T2>
1414
- typename std::enable_if<
1415
- detail::is_genfloatd<T>::value && detail::is_igeninteger64bit<T2>::value,
1416
- T>::type
1403
+ typename std::enable_if<detail::is_genfloatd<T>::value &&
1404
+ detail::is_igeninteger64bit<T2>::value,
1405
+ T>::type
1417
1406
select (T a, T b, T2 c) __NOEXC {
1418
1407
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1419
1408
}
1420
1409
1421
1410
// genfloatd select (genfloatd a, genfloatd b, ugeninteger64 c)
1422
1411
template <typename T, typename T2>
1423
- typename std::enable_if<
1424
- detail::is_genfloatd<T>::value && detail::is_ugeninteger64bit<T2>::value,
1425
- T>::type
1412
+ typename std::enable_if<detail::is_genfloatd<T>::value &&
1413
+ detail::is_ugeninteger64bit<T2>::value,
1414
+ T>::type
1426
1415
select (T a, T b, T2 c) __NOEXC {
1427
1416
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1428
1417
}
1429
1418
1430
- #ifndef __HALF_NO_ENABLED
1431
1419
// genfloath select (genfloath a, genfloath b, igeninteger16 c)
1432
1420
template <typename T, typename T2>
1433
- typename std::enable_if<
1434
- detail::is_genfloath<T>::value && detail::is_igeninteger16bit<T2>::value,
1435
- T>::type
1421
+ typename std::enable_if<detail::is_genfloath<T>::value &&
1422
+ detail::is_igeninteger16bit<T2>::value,
1423
+ T>::type
1436
1424
select (T a, T b, T2 c) __NOEXC {
1437
1425
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1438
1426
}
1439
1427
1440
1428
// genfloath select (genfloath a, genfloath b, ugeninteger16 c)
1441
1429
template <typename T, typename T2>
1442
- typename std::enable_if<
1443
- detail::is_genfloath<T>::value && detail::is_ugeninteger16bit<T2>::value,
1444
- T>::type
1430
+ typename std::enable_if<detail::is_genfloath<T>::value &&
1431
+ detail::is_ugeninteger16bit<T2>::value,
1432
+ T>::type
1445
1433
select (T a, T b, T2 c) __NOEXC {
1446
1434
return __sycl_std::__invoke_OpSelect<T>(detail::select_arg_c_t <T2>(c), b, a);
1447
1435
}
1448
- #endif
1449
1436
1450
1437
namespace native {
1451
1438
/* ----------------- 4.13.3 Math functions. ---------------------------------*/
@@ -1652,6 +1639,4 @@ tan(T x) __NOEXC {
1652
1639
} // namespace sycl
1653
1640
} // namespace cl
1654
1641
1655
- #undef __HALF_NO_ENABLED
1656
1642
#undef __NOEXC
1657
- #undef __DEVICE_SIDE
0 commit comments