| // REQUIRES: any-device |
| // RUN: %clangxx -fsycl %s -o %t.out |
| // RUN: %t.out |
| |
| #include <iostream> |
| |
| #include <sycl/sycl.hpp> |
| |
| using namespace sycl; |
| |
| class Kernel1; |
| |
| bool check(backend be) { |
| switch (be) { |
| case backend::opencl: |
| case backend::level_zero: |
| case backend::cuda: |
| case backend::hip: |
| return true; |
| default: |
| return false; |
| } |
| } |
| |
| void return_fail() { |
| std::cout << "Failed" << std::endl; |
| exit(1); |
| } |
| |
| int main() { |
| for (const auto &plt : platform::get_platforms()) { |
| if (!check(plt.get_backend())) { |
| return_fail(); |
| } |
| |
| auto device = plt.get_devices()[0]; |
| if (device.get_backend() != plt.get_backend()) { |
| return_fail(); |
| } |
| |
| queue q(device); |
| if (q.get_backend() != plt.get_backend()) { |
| return_fail(); |
| } |
| |
| event e = q.single_task<Kernel1>([]() {}); |
| if (e.get_backend() != plt.get_backend()) { |
| return_fail(); |
| } |
| } |
| std::cout << "Passed" << std::endl; |
| return 0; |
| } |