Skip to content

Commit 58c128b

Browse files
committed
tepes.hpp improving
Signed-off-by: Aleksander Fadeev <[email protected]>
1 parent 39c7c19 commit 58c128b

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

sycl/include/CL/sycl/types.hpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ template <typename T, typename R>
239239
using is_float_to_float =
240240
std::integral_constant<bool, detail::is_floating_point<T>::value &&
241241
detail::is_floating_point<R>::value>;
242+
template <typename T>
243+
using is_standart_type =
244+
std::integral_constant<bool, detail::is_sgentype<T>::value &&
245+
!std::is_same<T, long long>::value && !std::is_same<T, unsigned long long>::value>;
242246

243247
template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
244248
detail::enable_if_t<std::is_same<T, R>::value, R> convertImpl(T Value) {
@@ -326,7 +330,7 @@ using Rtn = detail::bool_constant<Mode == rounding_mode::rtn>;
326330
(std::is_same<OpenCLR, DestType>::value || \
327331
std::is_same<OpenCLR, signed char>::value && \
328332
std::is_same<DestType, char>::value) && \
329-
!std::is_same<OpenCLT, OpenCLR>::value, \
333+
!std::is_same<OpenCLT, OpenCLR>::value, \
330334
R> \
331335
convertImpl(T Value) { \
332336
OpenCLT OpValue = cl::sycl::detail::convertDataToType<T, OpenCLT>(Value); \
@@ -337,6 +341,7 @@ __SYCL_GENERATE_CONVERT_IMPL(char)
337341
__SYCL_GENERATE_CONVERT_IMPL(short)
338342
__SYCL_GENERATE_CONVERT_IMPL(int)
339343
__SYCL_GENERATE_CONVERT_IMPL(long)
344+
__SYCL_GENERATE_CONVERT_IMPL(longlong)
340345

341346
#undef __SYCL_GENERATE_CONVERT_IMPL
342347

@@ -466,6 +471,14 @@ __SYCL_GENERATE_CONVERT_IMPL_FOR_ROUNDING_MODE(rtn, Rtn)
466471
#undef __SYCL_GENERATE_CONVERT_IMPL_FOR_ROUNDING_MODE
467472
#undef __SYCL_GENERATE_CONVERT_IMPL
468473

474+
template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
475+
detail::enable_if_t<
476+
!is_standart_type<OpenCLT>::value || !is_standart_type<OpenCLR>::value,
477+
R>
478+
convertImpl(T Value) {
479+
return static_cast<R>(Value);
480+
}
481+
469482
#endif // __SYCL_DEVICE_ONLY__
470483

471484
} // namespace detail

0 commit comments

Comments
 (0)