[llvm] [libsycl] Implement nd_range kernel submissions (PR #206505)

Sergey Semenov via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 15 07:49:10 PDT 2026


================
@@ -380,21 +408,37 @@ class _LIBSYCL_EXPORT queue {
 
     using KernelType =
         std::decay_t<detail::nth_type_t<sizeof...(Rest) - 1, Rest...>>;
-    using LambdaArgType = sycl::detail::lambda_arg_type<KernelType, item<Dims>>;
-    static_assert(
-        std::is_convertible_v<sycl::item<Dims>, LambdaArgType> ||
-            std::is_convertible_v<sycl::item<Dims, false>, LambdaArgType>,
-        "Kernel argument of a sycl::parallel_for with sycl::range "
-        "must be either sycl::item or be convertible from sycl::item");
-    using TranformedLambdaArgType = std::conditional_t<
-        std::is_convertible_v<item<Dims>, LambdaArgType>, item<Dims>,
+    constexpr bool IsNdRangeSubmission =
+        std::is_same_v<Range<Dims>, nd_range<Dims>>;
+    using SuggestedArgType =
+        std::conditional_t<IsNdRangeSubmission, nd_item<Dims>, item<Dims>>;
+    using LambdaArgType =
+        sycl::detail::lambda_arg_type<KernelType, SuggestedArgType>;
+
+    if constexpr (IsNdRangeSubmission) {
+      static_assert(
+          std::is_convertible_v<sycl::nd_item<Dims>, LambdaArgType>,
+          "Kernel argument of a sycl::parallel_for with sycl::nd_range "
+          "must be sycl::nd_item");
----------------
sergey-semenov wrote:

```suggestion
          "must be sycl::nd_item or be convertible from sycl::nd_item");
```

https://github.com/llvm/llvm-project/pull/206505


More information about the llvm-commits mailing list