2727namespace sycl {
2828inline namespace _V1 {
2929namespace detail {
30+ template <typename T>
31+ using is_byte = typename
32+ #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
33+ std::is_same<T, std::byte>;
34+ #else
35+ std::false_type;
36+ #endif
37+
38+ template <typename T> inline constexpr bool is_byte_v = is_byte<T>::value;
3039
3140template <typename T>
3241inline constexpr bool is_sgenfloat_v =
@@ -43,36 +52,33 @@ inline constexpr bool is_genfloat_v =
4352 is_allowed_vec_size_v<num_elements_v<T>>);
4453
4554template <typename T>
46- inline constexpr bool is_geninteger_v = is_contained_v<T, gtl::integer_list>;
55+ inline constexpr bool is_sigeninteger_v =
56+ check_type_in_v<T, signed char , short , int , long , long long > ||
57+ (std::is_same_v<T, char > && std::is_signed_v<char >);
4758
4859template <typename T>
49- inline constexpr bool is_sgeninteger_v =
50- is_contained_v<T, gtl::scalar_integer_list>;
60+ inline constexpr bool is_sugeninteger_v =
61+ check_type_in_v<T, unsigned char , unsigned short , unsigned int ,
62+ unsigned long , unsigned long long > ||
63+ (std::is_same_v<T, char > && std::is_unsigned_v<char >) || is_byte_v<T>;
5164
5265template <typename T>
53- inline constexpr bool is_sigeninteger_v =
54- is_contained_v<T, gtl::scalar_signed_integer_list >;
66+ inline constexpr bool is_sgeninteger_v =
67+ is_sigeninteger_v<T> || is_sugeninteger_v<T >;
5568
5669template <typename T>
57- inline constexpr bool is_sugeninteger_v =
58- is_contained_v<T, gtl::scalar_unsigned_integer_list>;
70+ inline constexpr bool is_geninteger_v =
71+ is_sgeninteger_v<T> ||
72+ (is_vec_v<T> && is_sgeninteger_v<element_type_t <T>>) ||
73+ (is_marray_v<T> && is_sgeninteger_v<element_type_t <T>> &&
74+ is_allowed_vec_size_v<num_elements_v<T>>);
5975
6076template <typename T>
6177inline constexpr bool is_genbool_v =
6278 std::is_same_v<T, bool > ||
6379 (is_marray_v<T> && std::is_same_v<element_type_t <T>, bool > &&
6480 is_allowed_vec_size_v<num_elements_v<T>>);
6581
66- template <typename T>
67- using is_byte = typename
68- #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0)
69- std::is_same<T, std::byte>;
70- #else
71- std::false_type;
72- #endif
73-
74- template <typename T> inline constexpr bool is_byte_v = is_byte<T>::value;
75-
7682template <int Size>
7783using fixed_width_unsigned = std::conditional_t <
7884 Size == 1 , uint8_t ,
0 commit comments