@@ -312,15 +312,15 @@ template <rounding_mode Mode>
312
312
using Rtn = detail::bool_constant<Mode == rounding_mode::rtn>;
313
313
314
314
// convert signed and unsigned types with an equal size and diff names
315
- template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
316
- detail::enable_if_t <
315
+ template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
316
+ detail::enable_if_t <
317
317
!std::is_same<T, R>::value && (is_sint_to_sint<T, R>::value ||
318
318
is_uint_to_uint<T, R>::value) &&
319
319
std::is_same<OpenCLT, OpenCLR>::value,
320
320
R>
321
- convertImpl (T Value) {
322
- return static_cast <R>(Value);
323
- }
321
+ convertImpl (T Value) {
322
+ return static_cast <R>(Value);
323
+ }
324
324
325
325
// signed to signed
326
326
#define __SYCL_GENERATE_CONVERT_IMPL (DestType ) \
@@ -471,9 +471,12 @@ __SYCL_GENERATE_CONVERT_IMPL_FOR_ROUNDING_MODE(rtn, Rtn)
471
471
#undef __SYCL_GENERATE_CONVERT_IMPL_FOR_ROUNDING_MODE
472
472
#undef __SYCL_GENERATE_CONVERT_IMPL
473
473
474
- template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
474
+ // Back up
475
+ template <typename T, typename R, rounding_mode roundingMode, typename OpenCLT, typename OpenCLR>
475
476
detail::enable_if_t <
476
- !is_standart_type<OpenCLT>::value || !is_standart_type<OpenCLR>::value,
477
+ (!is_standart_type<T>::value && !is_standart_type<OpenCLT>::value ||
478
+ !is_standart_type<R>::value && !is_standart_type<OpenCLR>::value) &&
479
+ !std::is_same<OpenCLT, OpenCLR>::value,
477
480
R>
478
481
convertImpl (T Value) {
479
482
return static_cast <R>(Value);
0 commit comments