@@ -19,6 +19,7 @@ using _iml_half_internal = _Float16;
19
19
using _iml_half_internal = uint16_t ;
20
20
#endif
21
21
22
+ #include < sycl/bit_cast.hpp>
22
23
#include < sycl/builtins.hpp>
23
24
#include < sycl/ext/intel/math/imf_fp_conversions.hpp>
24
25
#include < sycl/ext/intel/math/imf_half_trivial.hpp>
@@ -82,9 +83,9 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> copysign(Tp x, Tp y) {
82
83
template <typename Tp>
83
84
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> copysign (Tp x,
84
85
Tp y) {
85
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
86
- _iml_half_internal yi = __builtin_bit_cast ( _iml_half_internal, y);
87
- return __builtin_bit_cast ( sycl::half, __imf_copysignf16 (xi, yi));
86
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
87
+ _iml_half_internal yi = sycl::bit_cast< _iml_half_internal>( y);
88
+ return sycl::bit_cast<sycl:: half>( __imf_copysignf16 (xi, yi));
88
89
}
89
90
90
91
template <typename Tp>
@@ -99,8 +100,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> ceil(Tp x) {
99
100
100
101
template <typename Tp>
101
102
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> ceil (Tp x) {
102
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
103
- return __builtin_bit_cast ( sycl::half, __imf_ceilf16 (xi));
103
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
104
+ return sycl::bit_cast<sycl:: half>( __imf_ceilf16 (xi));
104
105
}
105
106
106
107
template <typename Tp>
@@ -120,8 +121,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> floor(Tp x) {
120
121
121
122
template <typename Tp>
122
123
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> floor (Tp x) {
123
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
124
- return __builtin_bit_cast ( sycl::half, __imf_floorf16 (xi));
124
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
125
+ return sycl::bit_cast<sycl:: half>( __imf_floorf16 (xi));
125
126
}
126
127
127
128
template <typename Tp>
@@ -141,8 +142,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> inv(Tp x) {
141
142
142
143
template <typename Tp>
143
144
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> inv (Tp x) {
144
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
145
- return __builtin_bit_cast ( sycl::half, __imf_invf16 (xi));
145
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
146
+ return sycl::bit_cast<sycl:: half>( __imf_invf16 (xi));
146
147
}
147
148
148
149
template <typename Tp>
@@ -162,8 +163,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> rint(Tp x) {
162
163
163
164
template <typename Tp>
164
165
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> rint (Tp x) {
165
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
166
- return __builtin_bit_cast ( sycl::half, __imf_rintf16 (xi));
166
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
167
+ return sycl::bit_cast<sycl:: half>( __imf_rintf16 (xi));
167
168
}
168
169
169
170
template <typename Tp>
@@ -183,8 +184,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> sqrt(Tp x) {
183
184
184
185
template <typename Tp>
185
186
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> sqrt (Tp x) {
186
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
187
- return __builtin_bit_cast ( sycl::half, __imf_sqrtf16 (xi));
187
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
188
+ return sycl::bit_cast<sycl:: half>( __imf_sqrtf16 (xi));
188
189
}
189
190
190
191
template <typename Tp>
@@ -204,8 +205,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> rsqrt(Tp x) {
204
205
205
206
template <typename Tp>
206
207
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> rsqrt (Tp x) {
207
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
208
- return __builtin_bit_cast ( sycl::half, __imf_rsqrtf16 (xi));
208
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
209
+ return sycl::bit_cast<sycl:: half>( __imf_rsqrtf16 (xi));
209
210
}
210
211
211
212
template <typename Tp>
@@ -225,8 +226,8 @@ std::enable_if_t<std::is_same_v<Tp, double>, double> trunc(Tp x) {
225
226
226
227
template <typename Tp>
227
228
std::enable_if_t <std::is_same_v<Tp, sycl::half>, sycl::half> trunc (Tp x) {
228
- _iml_half_internal xi = __builtin_bit_cast ( _iml_half_internal, x);
229
- return __builtin_bit_cast ( sycl::half, __imf_truncf16 (xi));
229
+ _iml_half_internal xi = sycl::bit_cast< _iml_half_internal>( x);
230
+ return sycl::bit_cast<sycl:: half>( __imf_truncf16 (xi));
230
231
}
231
232
232
233
template <typename Tp>
0 commit comments