From 82bfffe0d0b58cf26b426a77470951e03e3d25be Mon Sep 17 00:00:00 2001 From: Steffen Larsen Date: Mon, 18 Mar 2024 13:54:33 +0100 Subject: [PATCH] [SYCL] Add missing aliases to swizzles (#13040) Vector swizzles are currently missing the value_type and vector_t aliases, as should be inherited from vec. This commit adds these aliases. --------- Signed-off-by: Larsen, Steffen --- sycl/include/sycl/types.hpp | 5 +++++ .../basic_tests/vectors/swizzle_aliases.cpp | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 sycl/test/basic_tests/vectors/swizzle_aliases.cpp 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; +}