@@ -968,80 +968,57 @@ class __SYCL_EXPORT handler {
968
968
// Wrappers for kernel_single_task(...)
969
969
970
970
template <typename KernelName, typename KernelType>
971
- std::enable_if_t <
972
- detail::isKernelLambdaCallableWithKernelHandler<KernelType>(), void >
973
- #ifdef __SYCL_NONCONST_FUNCTOR__
974
- kernel_single_task_wrapper (KernelType KernelFunc) {
975
- #else
976
- kernel_single_task_wrapper (const KernelType &KernelFunc) {
977
- #endif
978
- kernel_handler KH;
979
- kernel_single_task<KernelName>(KernelFunc, KH);
980
- }
981
-
982
- template <typename KernelName, typename KernelType>
983
- std::enable_if_t <
984
- !detail::isKernelLambdaCallableWithKernelHandler<KernelType>(), void >
971
+ void
985
972
#ifdef __SYCL_NONCONST_FUNCTOR__
986
973
kernel_single_task_wrapper (KernelType KernelFunc) {
987
974
#else
988
975
kernel_single_task_wrapper (const KernelType &KernelFunc) {
989
976
#endif
990
- kernel_single_task<KernelName>(KernelFunc);
977
+ if constexpr (detail::isKernelLambdaCallableWithKernelHandler<
978
+ KernelType>()) {
979
+ kernel_handler KH;
980
+ kernel_single_task<KernelName>(KernelFunc, KH);
981
+ } else {
982
+ kernel_single_task<KernelName>(KernelFunc);
983
+ }
991
984
}
992
985
993
986
// Wrappers for kernel_parallel_for(...)
994
987
995
988
template <typename KernelName, typename ElementType, typename KernelType>
996
- std::enable_if_t <detail::isKernelLambdaCallableWithKernelHandler<
997
- KernelType, ElementType>(),
998
- void >
999
- #ifdef __SYCL_NONCONST_FUNCTOR__
1000
- kernel_parallel_for_wrapper (KernelType KernelFunc) {
1001
- #else
1002
- kernel_parallel_for_wrapper (const KernelType &KernelFunc) {
1003
- #endif
1004
- kernel_handler KH;
1005
- kernel_parallel_for<KernelName, ElementType>(KernelFunc, KH);
1006
- }
1007
-
1008
- template <typename KernelName, typename ElementType, typename KernelType>
1009
- std::enable_if_t <!detail::isKernelLambdaCallableWithKernelHandler<
1010
- KernelType, ElementType>(),
1011
- void >
989
+ void
1012
990
#ifdef __SYCL_NONCONST_FUNCTOR__
1013
991
kernel_parallel_for_wrapper (KernelType KernelFunc) {
1014
992
#else
1015
993
kernel_parallel_for_wrapper (const KernelType &KernelFunc) {
1016
994
#endif
1017
- kernel_parallel_for<KernelName, ElementType>(KernelFunc);
995
+ if constexpr (detail::isKernelLambdaCallableWithKernelHandler<
996
+ KernelType, ElementType>()) {
997
+ kernel_handler KH;
998
+ kernel_parallel_for<KernelName, ElementType>(KernelFunc, KH);
999
+ }
1000
+ else {
1001
+ kernel_parallel_for<KernelName, ElementType>(KernelFunc);
1002
+ }
1018
1003
}
1019
1004
1020
1005
// Wrappers for kernel_parallel_for_work_group(...)
1021
1006
1022
1007
template <typename KernelName, typename ElementType, typename KernelType>
1023
- std::enable_if_t <detail::isKernelLambdaCallableWithKernelHandler<
1024
- KernelType, ElementType>(),
1025
- void >
1026
- #ifdef __SYCL_NONCONST_FUNCTOR__
1027
- kernel_parallel_for_work_group_wrapper (KernelType KernelFunc) {
1028
- #else
1029
- kernel_parallel_for_work_group_wrapper (const KernelType &KernelFunc) {
1030
- #endif
1031
- kernel_handler KH;
1032
- kernel_parallel_for_work_group<KernelName, ElementType>(KernelFunc, KH);
1033
- }
1034
-
1035
- template <typename KernelName, typename ElementType, typename KernelType>
1036
- std::enable_if_t <!detail::isKernelLambdaCallableWithKernelHandler<
1037
- KernelType, ElementType>(),
1038
- void >
1008
+ void
1039
1009
#ifdef __SYCL_NONCONST_FUNCTOR__
1040
1010
kernel_parallel_for_work_group_wrapper (KernelType KernelFunc) {
1041
1011
#else
1042
1012
kernel_parallel_for_work_group_wrapper (const KernelType &KernelFunc) {
1043
1013
#endif
1044
- kernel_parallel_for_work_group<KernelName, ElementType>(KernelFunc);
1014
+ if constexpr (detail::isKernelLambdaCallableWithKernelHandler<
1015
+ KernelType, ElementType>()) {
1016
+ kernel_handler KH;
1017
+ kernel_parallel_for_work_group<KernelName, ElementType>(KernelFunc, KH);
1018
+ }
1019
+ else {
1020
+ kernel_parallel_for_work_group<KernelName, ElementType>(KernelFunc);
1021
+ }
1045
1022
}
1046
1023
1047
1024
std::shared_ptr<detail::kernel_bundle_impl>
@@ -2289,32 +2266,25 @@ class __SYCL_EXPORT handler {
2289
2266
2290
2267
friend class ::MockHandler;
2291
2268
2292
- template <
2293
- typename TransformedArgType, int Dims, typename KernelType,
2294
- typename std::enable_if_t <detail::isKernelLambdaCallableWithKernelHandler<
2295
- KernelType, TransformedArgType>()> * = nullptr >
2269
+ template <typename TransformedArgType, int Dims, typename KernelType>
2296
2270
auto getRangeRoundedKernelLambda (KernelType KernelFunc,
2297
2271
range<Dims> NumWorkItems) {
2298
- return [=](TransformedArgType Arg, kernel_handler KH) {
2299
- if (Arg[0 ] >= NumWorkItems[0 ])
2300
- return ;
2301
- Arg.set_allowed_range (NumWorkItems);
2302
- KernelFunc (Arg, KH);
2303
- };
2304
- }
2305
-
2306
- template <typename TransformedArgType, int Dims, typename KernelType,
2307
- typename std::enable_if_t <
2308
- !detail::isKernelLambdaCallableWithKernelHandler<
2309
- KernelType, TransformedArgType>()> * = nullptr >
2310
- auto getRangeRoundedKernelLambda (KernelType KernelFunc,
2311
- range<Dims> NumWorkItems) {
2312
- return [=](TransformedArgType Arg) {
2313
- if (Arg[0 ] >= NumWorkItems[0 ])
2314
- return ;
2315
- Arg.set_allowed_range (NumWorkItems);
2316
- KernelFunc (Arg);
2317
- };
2272
+ if constexpr (detail::isKernelLambdaCallableWithKernelHandler<
2273
+ KernelType, TransformedArgType>()) {
2274
+ return [=](TransformedArgType Arg, kernel_handler KH) {
2275
+ if (Arg[0 ] >= NumWorkItems[0 ])
2276
+ return ;
2277
+ Arg.set_allowed_range (NumWorkItems);
2278
+ KernelFunc (Arg, KH);
2279
+ };
2280
+ } else {
2281
+ return [=](TransformedArgType Arg) {
2282
+ if (Arg[0 ] >= NumWorkItems[0 ])
2283
+ return ;
2284
+ Arg.set_allowed_range (NumWorkItems);
2285
+ KernelFunc (Arg);
2286
+ };
2287
+ }
2318
2288
}
2319
2289
};
2320
2290
} // namespace sycl
0 commit comments