| // REQUIRES: any-device |
| // RUN: %clangxx -fsycl %s -o %t.out |
| // RUN: %t.out |
| |
| #include <iostream> |
| |
| #include <sycl/sycl.hpp> |
| |
| using namespace sycl; |
| |
| void return_fail() { |
| std::cout << "Failed" << std::endl; |
| exit(1); |
| } |
| |
| void dummyAsyncHandler(sycl::exception_list) {} |
| |
| void check(const context &ctx) { |
| auto devices = ctx.get_devices(); |
| |
| auto plt = ctx.get_platform(); |
| for (const auto &dev : devices) { |
| if (dev.get_platform() != plt) { |
| std::cout << "Device platform does not match context platform" |
| << std::endl; |
| return_fail(); |
| } |
| } |
| auto backend = ctx.get_backend(); |
| for (const auto &dev : devices) { |
| if (dev.get_backend() != backend) { |
| std::cout << "Device backend does not match context backend" << std::endl; |
| return_fail(); |
| } |
| } |
| } |
| |
| int main() { |
| context ctx; |
| check(ctx); |
| |
| device dev; |
| context ctx2(dev); |
| check(ctx2); |
| |
| device dev2; |
| |
| platform plt = dev.get_platform(); |
| context ctx3(plt); |
| check(ctx3); |
| |
| context ctx4({dev, dev2}, dummyAsyncHandler, {}); |
| check(ctx4); |
| |
| std::cout << "Passed" << std::endl; |
| return 0; |
| } |