Skip to content

Commit 94ab6d8

Browse files
Change is_*geninteger_v* implementations
1 parent ec4c171 commit 94ab6d8

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

sycl/include/sycl/detail/generic_type_traits.hpp

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@
2727
namespace sycl {
2828
inline namespace _V1 {
2929
namespace 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

3140
template <typename T>
3241
inline 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

4554
template <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

4859
template <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

5265
template <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

5669
template <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

6076
template <typename T>
6177
inline 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-
7682
template <int Size>
7783
using fixed_width_unsigned = std::conditional_t<
7884
Size == 1, uint8_t,

0 commit comments

Comments
 (0)