Skip to content

Commit 8fa04fe

Browse files
authored
[SYCL] Add support for std::byte to vec class (#4637)
sycl::byte is deprecated and std::byte must be used instead. sycl::vec has unsigned char data under the hood when sycl::byte (the sycl::byte is alias to uint8_t) is used. I added helper struct for explicit casting std::byte to uint8_t and vice versa. When std::byte is used in sycl::vec, vec's realization will use uint8_t for all the operations. The test : intel/llvm-test-suite#478 Signed-off-by: mdimakov [email protected]
1 parent b33f6a5 commit 8fa04fe

File tree

2 files changed

+160
-65
lines changed

2 files changed

+160
-65
lines changed

sycl/include/CL/sycl/detail/generic_type_lists.hpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include <CL/sycl/detail/stl_type_traits.hpp>
1313
#include <CL/sycl/detail/type_list.hpp>
1414

15+
#include <cstddef>
16+
1517
// Generic type name description, which serves as a description for all valid
1618
// types of parameters to kernel functions
1719

@@ -285,6 +287,15 @@ using vector_long_integer_list = type_list<vector_signed_long_integer_list,
285287
using long_integer_list =
286288
type_list<scalar_long_integer_list, vector_long_integer_list>;
287289

290+
#if __cplusplus >= 201703L
291+
// std::byte
292+
using scalar_byte_list = type_list<std::byte>;
293+
294+
using vector_byte_list =
295+
type_list<vec<std::byte, 1>, vec<std::byte, 2>, vec<std::byte, 3>,
296+
vec<std::byte, 4>, vec<std::byte, 8>, vec<std::byte, 16>>;
297+
#endif
298+
288299
// integer types
289300
using scalar_signed_integer_list = type_list<
290301
conditional_t<std::is_signed<char>::value,
@@ -309,15 +320,25 @@ using scalar_unsigned_integer_list =
309320
scalar_unsigned_char_list>,
310321
scalar_unsigned_char_list>,
311322
scalar_unsigned_short_list, scalar_unsigned_int_list,
312-
scalar_unsigned_long_list, scalar_unsigned_longlong_list>;
323+
scalar_unsigned_long_list, scalar_unsigned_longlong_list
324+
#if __cplusplus >= 201703L
325+
,
326+
scalar_byte_list
327+
#endif
328+
>;
313329

314330
using vector_unsigned_integer_list =
315331
type_list<conditional_t<std::is_unsigned<char>::value,
316332
type_list<vector_default_char_list,
317333
vector_unsigned_char_list>,
318334
vector_unsigned_char_list>,
319335
vector_unsigned_short_list, vector_unsigned_int_list,
320-
vector_unsigned_long_list, vector_unsigned_longlong_list>;
336+
vector_unsigned_long_list, vector_unsigned_longlong_list
337+
#if __cplusplus >= 201703L
338+
,
339+
vector_byte_list
340+
#endif
341+
>;
321342

322343
using unsigned_integer_list =
323344
type_list<scalar_unsigned_integer_list, vector_unsigned_integer_list>;

0 commit comments

Comments
 (0)