diff --git a/sycl/include/sycl/types.hpp b/sycl/include/sycl/types.hpp index 7d904a8246b03..d773b8cd1ff1c 100644 --- a/sycl/include/sycl/types.hpp +++ b/sycl/include/sycl/types.hpp @@ -1790,6 +1790,11 @@ class SwizzleOp { public: using element_type = DataT; + using value_type = DataT; + +#ifdef __SYCL_DEVICE_ONLY__ + using vector_t = typename vec_t::vector_t; +#endif // __SYCL_DEVICE_ONLY__ const DataT &operator[](int i) const { std::array Idxs{Indexes...}; diff --git a/sycl/test/basic_tests/vectors/swizzle_aliases.cpp b/sycl/test/basic_tests/vectors/swizzle_aliases.cpp new file mode 100644 index 0000000000000..6b331c9d4a9bf --- /dev/null +++ b/sycl/test/basic_tests/vectors/swizzle_aliases.cpp @@ -0,0 +1,17 @@ +// RUN: %clangxx -fsycl -fsyntax-only %s + +#include + +int main() { + sycl::queue Q; + Q.single_task([]() { + sycl::vec X{1}; + static_assert(std::is_same_v())::element_type, int>); + static_assert(std::is_same_v())::value_type, int>); +#ifdef __SYCL_DEVICE_ONLY__ + static_assert(std::is_same_v())::vector_t, + sycl::vec::vector_t>); +#endif // __SYCL_DEVICE_ONLY__ + }); + return 0; +}