#include <hip/hip_fp16.h>
#endif
+#ifdef __SYCL_DEVICE_ONLY__
+#include <CL/sycl.hpp>
+#endif
+
namespace c10 {
/// Constructors
inline C10_HOST_DEVICE Half::Half(float value) {
#if defined(__CUDA_ARCH__) || defined(__HIP_DEVICE_COMPILE__)
x = __half_as_short(__float2half(value));
+#elif defined(__SYCL_DEVICE_ONLY__)
+ x = sycl::bit_cast<uint16_t>(sycl::half(value));
#else
x = detail::fp16_ieee_from_fp32_value(value);
#endif
inline C10_HOST_DEVICE Half::operator float() const {
#if defined(__CUDA_ARCH__) || defined(__HIP_DEVICE_COMPILE__)
return __half2float(*reinterpret_cast<const __half*>(&x));
+#elif defined(__SYCL_DEVICE_ONLY__)
+ return float(sycl::bit_cast<sycl::half>(x));
#else
return detail::fp16_ieee_to_fp32_value(x);
#endif