16 #define _USE_MATH_DEFINES
24 namespace d = s::detail;
29 template <
typename T>
inline T __acospi(T x) {
return std::acos(x) / M_PI; }
31 template <
typename T>
inline T __asinpi(T x) {
return std::asin(x) / M_PI; }
33 template <
typename T>
inline T __atanpi(T x) {
return std::atan(x) / M_PI; }
35 template <
typename T>
inline T __atan2pi(T x, T y) {
39 template <
typename T>
inline T __cospi(T x) {
43 template <
typename T> T
inline __fract(T x, T *
iptr) {
49 template <
typename T>
inline T __lgamma_r(T x,
s::cl_int *signp) {
55 template <
typename T>
inline T __mad(T a, T b, T
c) {
return (a * b) +
c; }
57 template <
typename T>
inline T __maxmag(T x, T y) {
62 return std::fmax(x, y);
65 template <
typename T>
inline T __minmag(T x, T y) {
70 return std::fmin(x, y);
73 template <
typename T>
inline T __powr(T x, T y) {
74 return (x >= T(0)) ? T(
std::pow(x, y)) : x;
77 template <
typename T>
inline T __rootn(T x,
s::cl_int y) {
81 template <
typename T>
inline T __rsqrt(T x) {
return T(1.0) /
std::sqrt(x); }
83 template <
typename T>
inline T __sincos(T x, T *cosval) {
88 template <
typename T>
inline T __sinpi(T x) {
return std::sin(M_PI * x); }
90 template <
typename T>
inline T __tanpi(T x) {
94 return 1.0 /
std::tan((0.5 - y) * M_PI);
245 return __atan2pi(x, y);
249 return __atan2pi(x, y);
252 return __atan2pi(x, y);
475 return std::fma(a, b,
c);
479 return std::fma(a, b,
c);
483 return std::fma(a, b,
c);
492 return std::fmax(x, y);
496 return std::fmax(x, y);
499 return std::fmax(x, y);
507 return std::fmin(x, y);
511 return std::fmin(x, y);
514 return std::fmin(x, y);
551 uint16_t x_bits = s::bit_cast<uint16_t>(x);
552 uint16_t x_sign = x_bits & 0x8000;
553 int16_t movement = (
x >
y ? -1 : 1) * (x_sign ? -1 : 1);
554 if (x_bits == x_sign && movement == -1) {
562 return s::bit_cast<s::cl_half>(x_bits);
571 return __fract(x,
iptr);
575 return __fract(x,
iptr);
579 return __fract(x,
iptr);
663 return __lgamma_r(x, signp);
667 return __lgamma_r(x, signp);
671 return __lgamma_r(x, signp);
750 return __mad(a, b,
c);
754 return __mad(a, b,
c);
758 return __mad(a, b,
c);
768 return __maxmag(x, y);
772 return __maxmag(x, y);
775 return __maxmag(x, y);
784 return __minmag(x, y);
788 return __minmag(x, y);
791 return __minmag(x, y);
808 float ptr_val_float = *
iptr;
810 *
iptr = ptr_val_float;
820 return d::quiet_NaN<s::cl_float>();
824 return d::quiet_NaN<s::cl_double>();
828 return s::cl_half(d::quiet_NaN<s::cl_float>());
899 *quo =
static_cast<int>(
std::round((x - rem) / y));
905 *quo =
static_cast<int>(
std::round((x - rem) / y));
911 *quo =
static_cast<int>(
std::round((x - rem) / y));
936 return __rootn(x, y);
940 return __rootn(x, y);
943 return __rootn(x, y);
994 return __sincos(x, cosval);
998 return __sincos(x, cosval);
1002 return __sincos(x, cosval);
1086 return __tanpi<float>(x);
1173 return (x >= 0 ?
std::pow(x, y) : x);
1258 return (x >= 0 ?
std::pow(x, y) : x);
#define MAKE_1V_2P(Fun, Ret, Arg1, Arg2)
#define MAKE_1V_2V_3P(Fun, Ret, Arg1, Arg2, Arg3)
#define MAKE_1V_2V(Fun, Ret, Arg1, Arg2)
#define MAKE_1V(Fun, Ret, Arg1)
s::cl_float sycl_host_fdim(s::cl_float x, s::cl_float y) __NOEXC
MAKE_1V_2V_3V(sycl_host_fclamp, s::cl_float, s::cl_float, s::cl_float, s::cl_float) MAKE_1V_2V_3V(sycl_host_fclamp
s::cl_float sycl_host_floor(s::cl_float x) __NOEXC
s::cl_float sycl_host_asinpi(s::cl_float x) __NOEXC
s::cl_float sycl_host_cbrt(s::cl_float x) __NOEXC
s::cl_float sycl_host_exp(s::cl_float x) __NOEXC
s::cl_float sycl_host_atanh(s::cl_float x) __NOEXC
s::cl_float sycl_host_cos(s::cl_float x) __NOEXC
s::cl_float sycl_host_atan2(s::cl_float x, s::cl_float y) __NOEXC
s::cl_float sycl_host_acosh(s::cl_float x) __NOEXC
s::cl_float sycl_host_erfc(s::cl_float x) __NOEXC
s::cl_float sycl_host_asinh(s::cl_float x) __NOEXC
s::cl_float sycl_host_ceil(s::cl_float x) __NOEXC
s::cl_float sycl_host_acospi(s::cl_float x) __NOEXC
s::cl_float sycl_host_cosh(s::cl_float x) __NOEXC
s::cl_float sycl_host_copysign(s::cl_float x, s::cl_float y) __NOEXC
s::cl_float sycl_host_atanpi(s::cl_float x) __NOEXC
s::cl_float sycl_host_fabs(s::cl_float x) __NOEXC
s::cl_float sycl_host_asin(s::cl_float x) __NOEXC
s::cl_float sycl_host_exp10(s::cl_float x) __NOEXC
s::cl_float sycl_host_exp2(s::cl_float x) __NOEXC
s::cl_float sycl_host_erf(s::cl_float x) __NOEXC
s::cl_float sycl_host_atan2pi(s::cl_float x, s::cl_float y) __NOEXC
s::cl_float sycl_host_acos(s::cl_float x) __NOEXC
s::cl_float sycl_host_cospi(s::cl_float x) __NOEXC
s::cl_float sycl_host_expm1(s::cl_float x) __NOEXC
s::cl_float sycl_host_fma(s::cl_float a, s::cl_float b, s::cl_float c) __NOEXC
s::cl_float sycl_host_atan(s::cl_float x) __NOEXC
T cast_if_host_half(T val)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > tgamma(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > cbrt(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > logb(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > acos(T x)
std::enable_if_t< __FAST_MATH_GENFLOAT(T), T > log10(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > rint(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > ceil(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > acosh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > fdim(T x, T y)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > asin(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > lgamma(T x)
std::enable_if_t< __FAST_MATH_GENFLOAT(T), T > log2(T x)
detail::common_rel_ret_t< T > signbit(T x)
std::enable_if_t< __FAST_MATH_GENFLOAT(T), T > sqrt(T x)
std::enable_if_t< __FAST_MATH_GENFLOAT(T), T > tan(T x)
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > log(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
__SYCL_ALWAYS_INLINE std::enable_if_t< detail::is_sgenfloat_v< T >, marray< T, N > > ldexp(marray< T, N > x, marray< int, N > k)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > expm1(T x)
detail::common_rel_ret_t< T > isnan(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > pow(T x, T y)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > cosh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > fabs(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > erf(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > erfc(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > tanh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > floor(T x)
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > sin(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
std::enable_if_t< detail::is_svgenfloat_v< T >, T > asinh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > remainder(T x, T y)
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > cos(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
std::enable_if_t< detail::is_svgenfloat_v< T >, T > atanh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > hypot(T x, T y)
std::enable_if_t< detail::is_svgenfloat_v< T > &&detail::is_genintptr_v< T2 >, T > frexp(T x, T2 exp)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > log1p(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > sinh(T x)
std::enable_if_t< detail::is_svgenfloat_v< T > &&detail::is_genfloatptr_v< T2 >, T > modf(T x, T2 iptr)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > fmod(T x, T y)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > copysign(T x, T y)
__SYCL_ALWAYS_INLINE std::enable_if_t< detail::is_sgenfloat_v< T >, marray< int, N > > ilogb(marray< T, N > x)
std::enable_if_t< __FAST_MATH_GENFLOAT(T), T > exp2(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > atan(T y_over_x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > atan2(T y, T x)
std::enable_if_t< detail::is_ugeninteger_v< T >, T > abs(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > trunc(T x)
std::enable_if_t< detail::is_svgenfloat_v< T >, T > round(T x)