diff --git a/sycl/include/CL/sycl/detail/generic_type_traits.hpp b/sycl/include/CL/sycl/detail/generic_type_traits.hpp index 323fa9783b1a3..f89e7ac6ecf4a 100644 --- a/sycl/include/CL/sycl/detail/generic_type_traits.hpp +++ b/sycl/include/CL/sycl/detail/generic_type_traits.hpp @@ -238,8 +238,9 @@ using is_ulongn = typename is_contained< // ugenlong: unsigned long int, ulongn template using is_ugenlong = - std::integral_constant>::value || - is_ulongn::value>; + std::integral_constant>::value || + is_ulongn::value>; // longn: long2, long3, long4, long8, long16 template @@ -249,8 +250,8 @@ using is_longn = typename is_contained< // genlong: long int, longn template using is_genlong = - std::integral_constant>::value || - is_longn::value>; + std::integral_constant>::value || is_longn::value>; // ulonglongn: ulonglong2, ulonglong3, ulonglong4,ulonglong8, ulonglong16 template @@ -314,7 +315,8 @@ using is_ugeninteger = std::integral_constant< template using is_sgeninteger = typename is_contained< T, type_list>::type; + cl_uint, cl_long, cl_ulong, long, unsigned long, + longlong, ulonglong>>::type; // vgeninteger: charn, scharn, ucharn, shortn, ushortn, intn, uintn, longn, // ulongn, longlongn, ulonglongn @@ -329,7 +331,8 @@ using is_vgeninteger = std::integral_constant< // sigeninteger: char, signed char, short, int, long int, , long long int template using is_sigeninteger = typename is_contained< - T, type_list>::type; + T, type_list>::type; // sugeninteger: unsigned char, unsigned short, unsigned int, unsigned long // int, unsigned long long int diff --git a/sycl/test/basic_tests/generic_type_traits.cpp b/sycl/test/basic_tests/generic_type_traits.cpp index f1afd3b1d5c75..6eb2ea4d929c0 100644 --- a/sycl/test/basic_tests/generic_type_traits.cpp +++ b/sycl/test/basic_tests/generic_type_traits.cpp @@ -18,6 +18,26 @@ using d_t = double; struct v {}; +void check_many(void) +{ + { + unsigned y = 1; + auto x = cl::sycl::nan(y); + } + { + unsigned long y = 1; + auto x = cl::sycl::nan(y); + } + { + long int y = 1; + auto x = cl::sycl::any(y); + } + { + int y = 1; + auto x = cl::sycl::any(y); + } +} + int main() { // is_floatn static_assert(d::is_floatn::value == true, ""); @@ -54,6 +74,17 @@ int main() { static_assert(d::is_ugenint::value == true, ""); + static_assert(d::is_ugenlong::value, ""); + static_assert(d::is_genlong::value, ""); + + static_assert(d::is_sgeninteger::value, ""); + static_assert(d::is_sgeninteger::value, ""); + static_assert(d::is_sgeninteger::value, ""); + + static_assert(d::is_sigeninteger::value, ""); + static_assert(d::is_sigeninteger::value, ""); + static_assert(d::is_sigeninteger::value, ""); + // TODO add checks for the following type traits /* is_doublen