@@ -149,44 +149,48 @@ void launch_grouped(handler &h, range<3> r, range<3> size,
149149}
150150
151151template <typename KernelType>
152- void launch_grouped (const queue &q, range<1 > r, range<1 > size,
153- const KernelType &k,
152+ constexpr bool enable_kernel_function_overload =
153+ !std::is_same_v<typename std::decay_t <KernelType>, sycl::kernel>;
154+
155+ template <typename KernelType, typename = typename std::enable_if_t <
156+ enable_kernel_function_overload<KernelType>>>
157+ void launch_grouped (const queue &q, range<1 > r, range<1 > size, KernelType &&k,
154158 const sycl::detail::code_location &codeLoc =
155159 sycl::detail::code_location::current ()) {
156160#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
157- detail::submit_kernel_direct (q,
158- ext::oneapi::experimental::empty_properties_t {},
159- nd_range< 1 >(r, size), k );
161+ detail::submit_kernel_direct (
162+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 1 >(r, size) ,
163+ std::forward<KernelType>(k) );
160164#else
161165 submit (
162166 q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
163167 codeLoc);
164168#endif
165169}
166- template <typename KernelType>
167- void launch_grouped ( const queue &q, range< 2 > r, range< 2 > size,
168- const KernelType &k,
170+ template <typename KernelType, typename = typename std:: enable_if_t <
171+ enable_kernel_function_overload<KernelType>>>
172+ void launch_grouped ( const queue &q, range< 2 > r, range< 2 > size, KernelType & &k,
169173 const sycl::detail::code_location &codeLoc =
170174 sycl::detail::code_location::current ()) {
171175#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
172- detail::submit_kernel_direct (q,
173- ext::oneapi::experimental::empty_properties_t {},
174- nd_range< 2 >(r, size), k );
176+ detail::submit_kernel_direct (
177+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 2 >(r, size) ,
178+ std::forward<KernelType>(k) );
175179#else
176180 submit (
177181 q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
178182 codeLoc);
179183#endif
180184}
181- template <typename KernelType>
182- void launch_grouped ( const queue &q, range< 3 > r, range< 3 > size,
183- const KernelType &k,
185+ template <typename KernelType, typename = typename std:: enable_if_t <
186+ enable_kernel_function_overload<KernelType>>>
187+ void launch_grouped ( const queue &q, range< 3 > r, range< 3 > size, KernelType & &k,
184188 const sycl::detail::code_location &codeLoc =
185189 sycl::detail::code_location::current ()) {
186190#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
187- detail::submit_kernel_direct (q,
188- ext::oneapi::experimental::empty_properties_t {},
189- nd_range< 3 >(r, size), k );
191+ detail::submit_kernel_direct (
192+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 3 >(r, size) ,
193+ std::forward<KernelType>(k) );
190194#else
191195 submit (
192196 q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
0 commit comments