| // 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; | |
| } |