| 491 | |
| 492 | template <class BidirIt> |
| 493 | sycl::event reverse(sycl::queue &q, BidirIt first, BidirIt last, |
| 494 | const std::vector<sycl::event> &deps = {}) { |
| 495 | auto size = std::distance(first, last); |
| 496 | if (first == last || size == 1) |
| 497 | return sycl::event{}; |
| 498 | |
| 499 | return q.parallel_for(sycl::range{size/2}, deps, |
| 500 | [=](sycl::id<1> id) { |
| 501 | auto offset = size - id[0] - 1; |
| 502 | auto input = std::next(first, id[0]); |
| 503 | auto output = std::next(first, offset); |
| 504 | std::iter_swap(input, output); |
| 505 | }); |
| 506 | } |
| 507 | |
| 508 | template <class BidirIt, class ForwardIt> |
| 509 | sycl::event reverse_copy(sycl::queue &q, BidirIt first, |