1- // UNSUPPORTED: cuda
2- // CUDA does not support unnamed lambdas.
3- //
4- // RUN: %clangxx -fsycl -fsyntax-only -fsycl-unnamed-lambda %s -o %t.out
1+ // RUN: %clangxx -fsycl -fsyntax-only %s -o %t.out
52
63// ==- queue_parallel_for_generic.cpp - SYCL queue parallel_for interface test -=//
74//
1512#include < iostream>
1613#include < type_traits>
1714
18- template <std::size_t ... Is>
15+ template <typename KernelName, std::size_t ... Is>
1916void test_range_impl (sycl::queue q, std::index_sequence<Is...>,
2017 sycl::range<sizeof ...(Is)> *) {
2118 constexpr auto dims = sizeof ...(Is);
2219
23- q.parallel_for (sycl::range<dims>{Is...}, [=](auto i) {
20+ q.parallel_for <KernelName> (sycl::range<dims>{Is...}, [=](auto i) {
2421 static_assert (std::is_same<decltype (i), sycl::item<dims>>::value,
2522 " lambda arg type is unexpected" );
2623 });
2724}
2825
29- template <std::size_t ... Is>
26+ template <typename KernelName, std::size_t ... Is>
3027void test_range_impl (sycl::queue q, std::index_sequence<Is...>,
3128 sycl::nd_range<sizeof ...(Is)> *) {
3229 constexpr auto dims = sizeof ...(Is);
3330
3431 sycl::nd_range<dims> ndr{sycl::range<dims>{Is...}, sycl::range<dims>{Is...}};
35- q.parallel_for (ndr, [=](auto i) {
32+ q.parallel_for <KernelName> (ndr, [=](auto i) {
3633 static_assert (std::is_same<decltype (i), sycl::nd_item<dims>>::value,
3734 " lambda arg type is unexpected" );
3835 });
3936}
4037
41- template <template <int > class Range , std::size_t Dims>
38+ template <typename KernelName, template <int > class Range , std::size_t Dims>
4239void test_range (sycl::queue q) {
43- test_range_impl (q, std::make_index_sequence<Dims>{},
44- static_cast <Range<Dims> *>(nullptr ));
40+ test_range_impl<KernelName> (q, std::make_index_sequence<Dims>{},
41+ static_cast <Range<Dims> *>(nullptr ));
4542}
4643
4744void test_number_braced_init_list (sycl::queue q) {
4845 constexpr auto n = 1 ;
49- q.parallel_for (n, [=](auto i) {
46+ q.parallel_for < class Number > (n, [=](auto i) {
5047 static_assert (std::is_same<decltype (i), sycl::item<1 >>::value,
5148 " lambda arg type is unexpected" );
5249 });
5350
54- q.parallel_for ({n}, [=](auto i) {
51+ q.parallel_for < class BracedInitList1 > ({n}, [=](auto i) {
5552 static_assert (std::is_same<decltype (i), sycl::item<1 >>::value,
5653 " lambda arg type is unexpected" );
5754 });
5855
59- q.parallel_for ({n, n}, [=](auto i) {
56+ q.parallel_for < class BracedInitList2 > ({n, n}, [=](auto i) {
6057 static_assert (std::is_same<decltype (i), sycl::item<2 >>::value,
6158 " lambda arg type is unexpected" );
6259 });
6360
64- q.parallel_for ({n, n, n}, [=](auto i) {
61+ q.parallel_for < class BracedInitList3 > ({n, n, n}, [=](auto i) {
6562 static_assert (std::is_same<decltype (i), sycl::item<3 >>::value,
6663 " lambda arg type is unexpected" );
6764 });
@@ -70,12 +67,12 @@ void test_number_braced_init_list(sycl::queue q) {
7067int main () {
7168 sycl::queue q{};
7269
73- test_number_braced_init_list (q);
70+ test_range<class test_range1 , sycl::range, 1 >(q);
71+ test_range<class test_range2 , sycl::range, 2 >(q);
72+ test_range<class test_range3 , sycl::range, 3 >(q);
73+ test_range<class test_nd_range1 , sycl::nd_range, 1 >(q);
74+ test_range<class test_nd_range2 , sycl::nd_range, 2 >(q);
75+ test_range<class test_nd_range3 , sycl::nd_range, 3 >(q);
7476
75- test_range<sycl::range, 1 >(q);
76- test_range<sycl::range, 2 >(q);
77- test_range<sycl::range, 3 >(q);
78- test_range<sycl::nd_range, 1 >(q);
79- test_range<sycl::nd_range, 2 >(q);
80- test_range<sycl::nd_range, 3 >(q);
77+ test_number_braced_init_list (q);
8178}
0 commit comments