25
25
26
26
#include < algorithm>
27
27
#include < functional>
28
+ #include < limits>
28
29
#include < memory>
29
30
#include < type_traits>
30
31
@@ -133,23 +134,24 @@ template <typename T> struct NotIntMsg;
133
134
134
135
template <int Dims> struct NotIntMsg <range<Dims>> {
135
136
constexpr static char *Msg = " Provided range is out of integer limits. "
136
- " Suggest disabling `id-queries-fit-in-int32' "
137
- " optimizations flag." ;
137
+ " Suggest disabling `fsycl- id-queries-fit-in-int' "
138
+ " optimizations flag." ;
138
139
};
139
140
140
141
template <int Dims> struct NotIntMsg <id<Dims>> {
141
142
constexpr static char *Msg = " Provided offset is out of integer limits. "
142
- " Suggest disabling `id-queries-fit-in-int32' "
143
- " optimizations flag." ;
143
+ " Suggest disabling `fsycl- id-queries-fit-in-int' "
144
+ " optimizations flag." ;
144
145
};
145
146
#endif
146
147
147
148
template <int Dims, typename T>
148
149
typename std::enable_if<std::is_same<T, range<Dims>>::value ||
149
150
std::is_same<T, id<Dims>>::value>::type
150
- throwIfNotInt (const T &V) {
151
+ checkValueRange (const T &V) {
151
152
#if defined(__SYCL_ID_QUERIES_FIT_IN_INT__)
152
- static constexpr size_t Limit = static_cast <size_t >(INT_MAX);
153
+ static constexpr size_t Limit = static_cast <size_t >(
154
+ std::numeric_limits<int >::max ());
153
155
for (size_t Dim = 0 ; Dim < Dims; ++Dim)
154
156
if (V[Dim] > Limit)
155
157
throw runtime_error (NotIntMsg<T>::Msg, PI_INVALID_VALUE);
@@ -824,7 +826,7 @@ class __SYCL_EXPORT handler {
824
826
(void )NumWorkItems;
825
827
kernel_parallel_for<NameT, KernelType, Dims>(KernelFunc);
826
828
#else
827
- detail::throwIfNotInt <Dims>(NumWorkItems);
829
+ detail::checkValueRange <Dims>(NumWorkItems);
828
830
MNDRDesc.set (std::move (NumWorkItems));
829
831
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
830
832
MCGType = detail::CG::KERNEL;
@@ -885,8 +887,8 @@ class __SYCL_EXPORT handler {
885
887
(void )WorkItemOffset;
886
888
kernel_parallel_for<NameT, KernelType, Dims>(KernelFunc);
887
889
#else
888
- detail::throwIfNotInt <Dims>(NumWorkItems);
889
- detail::throwIfNotInt <Dims>(WorkItemOffset);
890
+ detail::checkValueRange <Dims>(NumWorkItems);
891
+ detail::checkValueRange <Dims>(WorkItemOffset);
890
892
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
891
893
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
892
894
MCGType = detail::CG::KERNEL;
@@ -915,9 +917,9 @@ class __SYCL_EXPORT handler {
915
917
(void )ExecutionRange;
916
918
kernel_parallel_for_nd_range<NameT, KernelType, Dims>(KernelFunc);
917
919
#else
918
- detail::throwIfNotInt <Dims>(ExecutionRange.get_global_range ());
919
- detail::throwIfNotInt <Dims>(ExecutionRange.get_local_range ());
920
- detail::throwIfNotInt <Dims>(ExecutionRange.get_offset ());
920
+ detail::checkValueRange <Dims>(ExecutionRange.get_global_range ());
921
+ detail::checkValueRange <Dims>(ExecutionRange.get_local_range ());
922
+ detail::checkValueRange <Dims>(ExecutionRange.get_offset ());
921
923
MNDRDesc.set (std::move (ExecutionRange));
922
924
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
923
925
MCGType = detail::CG::KERNEL;
@@ -1087,7 +1089,7 @@ class __SYCL_EXPORT handler {
1087
1089
(void )NumWorkGroups;
1088
1090
kernel_parallel_for_work_group<NameT, KernelType, Dims>(KernelFunc);
1089
1091
#else
1090
- detail::throwIfNotInt <Dims>(NumWorkGroups);
1092
+ detail::checkValueRange <Dims>(NumWorkGroups);
1091
1093
MNDRDesc.setNumWorkGroups (NumWorkGroups);
1092
1094
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
1093
1095
MCGType = detail::CG::KERNEL;
@@ -1121,9 +1123,9 @@ class __SYCL_EXPORT handler {
1121
1123
#else
1122
1124
nd_range<Dims> ExecRange =
1123
1125
nd_range<Dims>(NumWorkGroups * WorkGroupSize, WorkGroupSize);
1124
- detail::throwIfNotInt <Dims>(ExecRange.get_global_range ());
1125
- detail::throwIfNotInt <Dims>(ExecRange.get_local_range ());
1126
- detail::throwIfNotInt <Dims>(ExecRange.get_offset ());
1126
+ detail::checkValueRange <Dims>(ExecRange.get_global_range ());
1127
+ detail::checkValueRange <Dims>(ExecRange.get_local_range ());
1128
+ detail::checkValueRange <Dims>(ExecRange.get_offset ());
1127
1129
MNDRDesc.set (std::move (ExecRange));
1128
1130
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
1129
1131
MCGType = detail::CG::KERNEL;
@@ -1159,7 +1161,7 @@ class __SYCL_EXPORT handler {
1159
1161
throwIfActionIsCreated ();
1160
1162
verifyKernelInvoc (Kenrel);
1161
1163
MKernel = detail::getSyclObjImpl (std::move (Kenrel));
1162
- detail::throwIfNotInt <Dims>(NumWorkItems);
1164
+ detail::checkValueRange <Dims>(NumWorkItems);
1163
1165
MNDRDesc.set (std::move (NumWorkItems));
1164
1166
MCGType = detail::CG::KERNEL;
1165
1167
extractArgsAndReqs ();
@@ -1179,8 +1181,8 @@ class __SYCL_EXPORT handler {
1179
1181
throwIfActionIsCreated ();
1180
1182
verifyKernelInvoc (Kernel);
1181
1183
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1182
- detail::throwIfNotInt <Dims>(NumWorkItems);
1183
- detail::throwIfNotInt <Dims>(WorkItemOffset);
1184
+ detail::checkValueRange <Dims>(NumWorkItems);
1185
+ detail::checkValueRange <Dims>(WorkItemOffset);
1184
1186
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
1185
1187
MCGType = detail::CG::KERNEL;
1186
1188
extractArgsAndReqs ();
@@ -1198,9 +1200,9 @@ class __SYCL_EXPORT handler {
1198
1200
throwIfActionIsCreated ();
1199
1201
verifyKernelInvoc (Kernel);
1200
1202
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1201
- detail::throwIfNotInt <Dims>(NDRange.get_global_range ());
1202
- detail::throwIfNotInt <Dims>(NDRange.get_local_range ());
1203
- detail::throwIfNotInt <Dims>(NDRange.get_offset ());
1203
+ detail::checkValueRange <Dims>(NDRange.get_global_range ());
1204
+ detail::checkValueRange <Dims>(NDRange.get_local_range ());
1205
+ detail::checkValueRange <Dims>(NDRange.get_offset ());
1204
1206
MNDRDesc.set (std::move (NDRange));
1205
1207
MCGType = detail::CG::KERNEL;
1206
1208
extractArgsAndReqs ();
@@ -1261,7 +1263,7 @@ class __SYCL_EXPORT handler {
1261
1263
(void )NumWorkItems;
1262
1264
kernel_parallel_for<NameT, KernelType, Dims>(KernelFunc);
1263
1265
#else
1264
- detail::throwIfNotInt <Dims>(NumWorkItems);
1266
+ detail::checkValueRange <Dims>(NumWorkItems);
1265
1267
MNDRDesc.set (std::move (NumWorkItems));
1266
1268
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1267
1269
MCGType = detail::CG::KERNEL;
@@ -1294,8 +1296,8 @@ class __SYCL_EXPORT handler {
1294
1296
(void )WorkItemOffset;
1295
1297
kernel_parallel_for<NameT, KernelType, Dims>(KernelFunc);
1296
1298
#else
1297
- detail::throwIfNotInt <Dims>(NumWorkItems);
1298
- detail::throwIfNotInt <Dims>(WorkItemOffset);
1299
+ detail::checkValueRange <Dims>(NumWorkItems);
1300
+ detail::checkValueRange <Dims>(WorkItemOffset);
1299
1301
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
1300
1302
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1301
1303
MCGType = detail::CG::KERNEL;
@@ -1327,9 +1329,9 @@ class __SYCL_EXPORT handler {
1327
1329
(void )NDRange;
1328
1330
kernel_parallel_for_nd_range<NameT, KernelType, Dims>(KernelFunc);
1329
1331
#else
1330
- detail::throwIfNotInt <Dims>(NDRange.get_global_range ());
1331
- detail::throwIfNotInt <Dims>(NDRange.get_local_range ());
1332
- detail::throwIfNotInt <Dims>(NDRange.get_offset ());
1332
+ detail::checkValueRange <Dims>(NDRange.get_global_range ());
1333
+ detail::checkValueRange <Dims>(NDRange.get_local_range ());
1334
+ detail::checkValueRange <Dims>(NDRange.get_offset ());
1333
1335
MNDRDesc.set (std::move (NDRange));
1334
1336
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1335
1337
MCGType = detail::CG::KERNEL;
@@ -1365,7 +1367,7 @@ class __SYCL_EXPORT handler {
1365
1367
(void )NumWorkGroups;
1366
1368
kernel_parallel_for_work_group<NameT, KernelType, Dims>(KernelFunc);
1367
1369
#else
1368
- detail::throwIfNotInt <Dims>(NumWorkGroups);
1370
+ detail::checkValueRange <Dims>(NumWorkGroups);
1369
1371
MNDRDesc.setNumWorkGroups (NumWorkGroups);
1370
1372
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1371
1373
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
@@ -1404,9 +1406,9 @@ class __SYCL_EXPORT handler {
1404
1406
#else
1405
1407
nd_range<Dims> ExecRange =
1406
1408
nd_range<Dims>(NumWorkGroups * WorkGroupSize, WorkGroupSize);
1407
- detail::throwIfNotInt <Dims>(ExecRange.get_global_range ());
1408
- detail::throwIfNotInt <Dims>(ExecRange.get_local_range ());
1409
- detail::throwIfNotInt <Dims>(ExecRange.get_offset ());
1409
+ detail::checkValueRange <Dims>(ExecRange.get_global_range ());
1410
+ detail::checkValueRange <Dims>(ExecRange.get_local_range ());
1411
+ detail::checkValueRange <Dims>(ExecRange.get_offset ());
1410
1412
MNDRDesc.set (std::move (ExecRange));
1411
1413
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1412
1414
StoreLambda<NameT, KernelType, Dims>(std::move (KernelFunc));
0 commit comments