diff --git a/SYCL/Basic/interop/check_carrying_real_kernel_IDs.cpp b/SYCL/Basic/interop/check_carrying_real_kernel_IDs.cpp new file mode 100644 index 000000000000..9433942cd106 --- /dev/null +++ b/SYCL/Basic/interop/check_carrying_real_kernel_IDs.cpp @@ -0,0 +1,40 @@ +// REQUIRES: opencl +// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out %opencl_lib +// RUN: %ACC_RUN_PLACEHOLDER %t.out +// RUN: %CPU_RUN_PLACEHOLDER %t.out +// RUN: %GPU_RUN_PLACEHOLDER %t.out + +#include +#include +#include + +using namespace cl::sycl; + +int main() { + queue Queue{}; + + const char KernelCode[] = "__kernel void foo() { }\n"; + const size_t KernelCodeSize = sizeof(KernelCode); + const char *CLCode[1] = {KernelCode}; + + auto Context = Queue.get_info(); + auto Device = Queue.get_info(); + cl_context CLContext = get_native(Context); + cl_device_id CLDevice = get_native(Device); + + cl_int Err; + + cl_program CLProgram = + clCreateProgramWithSource(CLContext, 1, CLCode, &KernelCodeSize, &Err); + assert(Err == CL_SUCCESS); + Err = clBuildProgram(CLProgram, 1, &CLDevice, "", nullptr, nullptr); + assert(Err == CL_SUCCESS); + + cl_kernel CLKernel = clCreateKernel(CLProgram, "foo", &Err); + assert(Err == CL_SUCCESS); + kernel SYCLKernel = sycl::make_kernel(CLKernel, Context); + + Queue.submit( + [&](handler &commandgroup) { commandgroup.single_task(SYCLKernel); }); + return 0; +}