1010
1111#include < sycl/detail/cl.h>
1212#include < sycl/detail/common.hpp>
13+ #include < sycl/detail/defines_elementary.hpp>
1314
1415#include < cstddef>
1516#include < cstdint>
@@ -62,6 +63,22 @@ class half;
6263 __SYCL_MAKE_VECTOR_ALIASES_FOR_OPENCL_TYPES(N) \
6364 __SYCL_MAKE_VECTOR_ALIASES_FOR_SIGNED_AND_UNSIGNED_TYPES(N)
6465
66+ // FIXME: OpenCL vector aliases are not defined by SYCL 2020 spec and should be
67+ // removed from here. See intel/llvm#7888
68+ #define __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (N ) \
69+ __SYCL_MAKE_VECTOR_ALIASES_FOR_OPENCL_TYPES (N) \
70+ __SYCL_MAKE_VECTOR_ALIAS(char , std::int8_t , N) \
71+ __SYCL_MAKE_VECTOR_ALIAS(uchar, std::uint8_t , N) \
72+ __SYCL_MAKE_VECTOR_ALIAS(short , std::int16_t , N) \
73+ __SYCL_MAKE_VECTOR_ALIAS(ushort, std::uint16_t , N) \
74+ __SYCL_MAKE_VECTOR_ALIAS(int , std::int32_t , N) \
75+ __SYCL_MAKE_VECTOR_ALIAS(uint, std::uint32_t , N) \
76+ __SYCL_MAKE_VECTOR_ALIAS(long , std::int64_t , N) \
77+ __SYCL_MAKE_VECTOR_ALIAS(ulong, std::uint64_t , N) \
78+ __SYCL_MAKE_VECTOR_ALIAS(float , float , N) \
79+ __SYCL_MAKE_VECTOR_ALIAS(double , double , N) \
80+ __SYCL_MAKE_VECTOR_ALIAS(half, half, N)
81+
6582namespace sycl {
6683__SYCL_INLINE_VER_NAMESPACE (_V1) {
6784using byte __SYCL2020_DEPRECATED (" use std::byte instead" ) = std::uint8_t ;
@@ -73,6 +90,9 @@ using ulong = unsigned long;
7390using longlong = long long ;
7491using ulonglong = unsigned long long ;
7592using half = sycl::detail::half_impl::half;
93+
94+ // FIXME: SYCL 2020 spec says that cl_* aliases should reside in sycl::opencl
95+ // namespace.
7696using cl_bool = bool ;
7797using cl_char = std::int8_t ;
7898using cl_uchar = std::uint8_t ;
@@ -86,11 +106,20 @@ using cl_half = half;
86106using cl_float = float ;
87107using cl_double = double ;
88108
109+ // Vector aliases are different between SYCL 1.2.1 and SYCL 2020
110+ #if SYCL_LANGUAGE_VERSION >= 202001
111+ __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (2 )
112+ __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (3 )
113+ __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (4 )
114+ __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (8 )
115+ __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (16 )
116+ #else
89117__SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (2 )
90118__SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (3 )
91119__SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (4 )
92120__SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (8 )
93121__SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH (16 )
122+ #endif
94123} // __SYCL_INLINE_VER_NAMESPACE(_V1)
95124} // namespace sycl
96125
@@ -99,3 +128,4 @@ __SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH(16)
99128#undef __SYCL_MAKE_VECTOR_ALIASES_FOR_OPENCL_TYPES
100129#undef __SYCL_MAKE_VECTOR_ALIASES_FOR_SIGNED_AND_UNSIGNED_TYPES
101130#undef __SYCL_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH
131+ #undef __SYCL_2020_MAKE_VECTOR_ALIASES_FOR_VECTOR_LENGTH
0 commit comments