diff --git a/SYCL/Regression/get_spec_const_vec16.cpp b/SYCL/Regression/get_spec_const_vec16.cpp new file mode 100644 index 0000000000..ab9709a4b0 --- /dev/null +++ b/SYCL/Regression/get_spec_const_vec16.cpp @@ -0,0 +1,27 @@ +// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple -o %t.out %s +// RUN: %CPU_RUN_PLACEHOLDER %t.out +// RUN: %GPU_RUN_PLACEHOLDER %t.out +// RUN: %ACC_RUN_PLACEHOLDER %t.out +// +// Tests that the right value returned after setting a specialization constant +// of sycl::vec type is correct. + +#include + +#include + +constexpr sycl::specialization_id> spec_const(20); + +int main() { + sycl::vec Result{0}; + sycl::vec Ref{5}; + sycl::queue Q; + Q.submit([&](sycl::handler &CGH) { + CGH.set_specialization_constant(Ref); + Result = CGH.get_specialization_constant(); + }); + auto CompRes = Ref == Result; + assert(std::all_of(&CompRes[0], &CompRes[0] + 16, + [](const bool &A) { return A; })); + return 0; +}