- 
                Notifications
    
You must be signed in to change notification settings  - Fork 794
 
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
The following code compiles without any complain
template <typename T, size_t N>
void test(const std::array<T, N> &VA, const std::array<T, N> &VB,
          std::array<T, N> &VC, bool useCst) {
  cl::sycl::queue deviceQueue;
  cl::sycl::range<1> numOfItems{N};
  cl::sycl::buffer<T, 1> bufferA(VA.data(), numOfItems);
  cl::sycl::buffer<T, 1> bufferB(VB.data(), numOfItems);
  cl::sycl::buffer<T, 1> bufferC(VC.data(), numOfItems);
  deviceQueue.submit([&](cl::sycl::handler &cgh) {
    auto accessorA = bufferA.template get_access<sycl_read>(cgh);
    cl::sycl::accessor<T, 1, cl::sycl::access::mode::read,
                       cl::sycl::access::target::constant_buffer,
                       cl::sycl::access::placeholder::false_t>
        accessorB(bufferB, cgh);
    auto accessorC = bufferC.template get_access<sycl_write>(cgh);
    cgh.parallel_for<class Test<T>>(numOfItems,
    [=](cl::sycl::id<1> wiID) {
      T *my_ptr = useCst ? &accessorB.get_pointer()[wiID[0]]
                         : &accessorC.get_pointer()[wiID[0]];
      *my_ptr = accessorA[wiID];
    });
  });
}
Although this force an illegal address space cast as the SPIR-V validator says:
error: line 491: Expected input to have storage class Generic: GenericCastToPtr
  %372 = OpGenericCastToPtr %_ptr_Function_uint %371
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working