DPC++ Runtime
Runtime libraries for oneAPI DPC++
|
|
Go to the documentation of this file.
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) {
return std::cos(M_PI * x); }
41 template <
typename T> T
inline __fract(T x, T *iptr) {
44 return std::fmin(x - f, std::nextafter(T(1.0), T(0.0)));
47 template <
typename T>
inline T __lgamma_r(T x,
s::cl_int *signp) {
53 template <
typename T>
inline T __mad(T a, T b, T c) {
return (a * b) + c; }
55 template <
typename T>
inline T __maxmag(T x, T y) {
60 return std::fmax(x, y);
63 template <
typename T>
inline T __minmag(T x, T y) {
68 return std::fmin(x, y);
71 template <
typename T>
inline T __powr(T x, T y) {
72 return (x >= T(0)) ? T(
std::pow(x, y)) : x;
75 template <
typename T>
inline T __rootn(T x,
s::cl_int y) {
79 template <
typename T>
inline T __rsqrt(T x) {
return T(1.0) /
std::sqrt(x); }
81 template <
typename T>
inline T __sincos(T x, T *cosval) {
86 template <
typename T>
inline T __sinpi(T x) {
return std::sin(M_PI * x); }
88 template <
typename T>
inline T __tanpi(T x) {
return std::tan(M_PI * x); }
109 return std::acosh(x);
112 return std::acosh(x);
115 return std::acosh(x);
151 return std::asinh(x);
154 return std::asinh(x);
157 return std::asinh(x);
209 return std::atanh(x);
212 return std::atanh(x);
215 return std::atanh(x);
238 return __atan2pi(x, y);
242 return __atan2pi(x, y);
245 return __atan2pi(x, y);
410 return std::expm1(x);
413 return std::expm1(x);
416 return std::expm1(x);
438 return std::fdim(x, y);
442 return std::fdim(x, y);
445 return std::fdim(x, y);
468 return std::fma(a, b, c);
472 return std::fma(a, b, c);
476 return std::fma(a, b, c);
485 return std::fmax(x, y);
489 return std::fmax(x, y);
492 return std::fmax(x, y);
500 return std::fmin(x, y);
504 return std::fmin(x, y);
507 return std::fmin(x, y);
531 return std::nextafter(x, y);
535 return std::nextafter(x, y);
539 return std::nextafter(x, y);
548 return __fract(x, iptr);
552 return __fract(x, iptr);
556 return __fract(x, iptr);
565 return std::frexp(x,
exp);
569 return std::frexp(x,
exp);
572 return std::frexp(x,
exp);
581 return std::hypot(x, y);
585 return std::hypot(x, y);
588 return std::hypot(x, y);
625 return std::lgamma(x);
628 return std::lgamma(x);
631 return std::lgamma(x);
640 return __lgamma_r(x, signp);
644 return __lgamma_r(x, signp);
648 return __lgamma_r(x, signp);
684 return std::log10(x);
687 return std::log10(x);
690 return std::log10(x);
698 return std::log1p(x);
701 return std::log1p(x);
704 return std::log1p(x);
727 return __mad(a, b, c);
731 return __mad(a, b, c);
735 return __mad(a, b, c);
745 return __maxmag(x, y);
749 return __maxmag(x, y);
752 return __maxmag(x, y);
761 return __minmag(x, y);
765 return __minmag(x, y);
768 return __minmag(x, y);
777 return std::modf(x, iptr);
781 return std::modf(x, iptr);
785 return std::modf(x,
reinterpret_cast<s::cl_float *
>(iptr));
794 return d::quiet_NaN<s::cl_float>();
798 return d::quiet_NaN<s::cl_double>();
802 return s::cl_half(d::quiet_NaN<s::cl_float>());
855 return std::remainder(x, y);
859 return std::remainder(x, y);
863 return std::remainder(x, y);
872 return std::remquo(x, y, quo);
876 return std::remquo(x, y, quo);
880 return std::remquo(x, y, quo);
904 return __rootn(x, y);
908 return __rootn(x, y);
911 return __rootn(x, y);
919 return std::round(x);
922 return std::round(x);
925 return std::round(x);
962 return __sincos(x, cosval);
966 return __sincos(x, cosval);
970 return __sincos(x, cosval);
1062 return std::tgamma(x);
1065 return std::tgamma(x);
1068 return std::tgamma(x);
1134 return std::log10(x);
1141 return (x >= 0 ?
std::pow(x, y) : x);
1219 return std::log10(x);
1226 return (x >= 0 ?
std::pow(x, y) : x);
s::cl_float sycl_host_fabs(s::cl_float x) __NOEXC
std::enable_if_t< detail::is_bf16_storage_type< T >::value, T > fabs(T x)
__ESIMD_API simd< T, N > exp2(simd< T, N > src, Sat sat={})
Exponent base 2.
s::cl_float sycl_host_atanh(s::cl_float x) __NOEXC
__SYCL_ALWAYS_INLINE std::enable_if_t< detail::is_sgenfloat< T >::value, marray< int, N > > ilogb(marray< T, N > x) __NOEXC
sycl::ext::intel::esimd::simd< float, N > atan2(sycl::ext::intel::esimd::simd< float, N > y, sycl::ext::intel::esimd::simd< float, N > x)
s::cl_float sycl_host_cos(s::cl_float x) __NOEXC
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > cos(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > exp(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
---— Error handling, matching OpenCL plugin semantics.
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
#define MAKE_1V_2V(Fun, Ret, Arg1, Arg2)
s::cl_float sycl_host_fdim(s::cl_float x, s::cl_float y) __NOEXC
s::cl_float sycl_host_expm1(s::cl_float x) __NOEXC
s::cl_float sycl_host_atan(s::cl_float x) __NOEXC
__ESIMD_API simd< T, N > sqrt(simd< T, N > src, Sat sat={})
Square root.
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > sin(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
s::cl_float sycl_host_exp10(s::cl_float x) __NOEXC
s::cl_float sycl_host_asin(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
#define MAKE_1V_2P(Fun, Ret, Arg1, Arg2)
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > acos(sycl::ext::intel::esimd::simd< T, SZ > src0)
s::cl_float sycl_host_exp2(s::cl_float x) __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_atan2(s::cl_float x, s::cl_float y) __NOEXC
ESIMD_DETAIL ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< T, SZ > atan(sycl::ext::intel::esimd::simd< T, SZ > src0)
s::cl_float sycl_host_erfc(s::cl_float x) __NOEXC
ESIMD_DETAIL __ESIMD_API std::enable_if_t< !std::is_same< std::remove_const_t< TRes >, std::remove_const_t< TArg > >::value, simd< TRes, SZ > > abs(simd< TArg, SZ > src0)
Get absolute value (vector version)
ESIMD_INLINE sycl::ext::intel::esimd::simd< RT, SZ > ceil(const sycl::ext::intel::esimd::simd< float, SZ > src0, Sat sat={})
"Ceiling" operation, vector version - alias of rndu.
sycl::ext::intel::esimd::simd< float, N > fmod(sycl::ext::intel::esimd::simd< float, N > y, sycl::ext::intel::esimd::simd< float, N > x)
s::cl_float sycl_host_asinpi(s::cl_float x) __NOEXC
__ESIMD_API simd< T, N > log2(simd< T, N > src, Sat sat={})
Logarithm base 2.
s::cl_float sycl_host_cospi(s::cl_float x) __NOEXC
T cast_if_host_half(T val)
s::cl_float sycl_host_copysign(s::cl_float x, s::cl_float y) __NOEXC
std::enable_if_t< std::is_same_v< Tp, float >, float > copysign(Tp x, Tp y)
s::cl_float sycl_host_acosh(s::cl_float x) __NOEXC
s::cl_float sycl_host_asinh(s::cl_float x) __NOEXC
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > log(sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC
#define MAKE_1V(Fun, Ret, Arg1)
__SYCL_ALWAYS_INLINE std::enable_if_t< detail::is_sgenfloat< T >::value, marray< T, N > > ldexp(marray< T, N > x, marray< int, N > k) __NOEXC
#define MAKE_1V_2V_3P(Fun, Ret, Arg1, Arg2, Arg3)
s::cl_float sycl_host_atanpi(s::cl_float x) __NOEXC
std::enable_if_t< std::is_same_v< Tp, float >, float > rint(Tp x)
s::cl_float sycl_host_floor(s::cl_float x) __NOEXC
__ESIMD_API simd< T, N > pow(simd< T, N > src0, simd< U, N > src1, Sat sat={})
Power - calculates src0 in power of src1.
s::cl_float sycl_host_erf(s::cl_float x) __NOEXC
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > asin(sycl::ext::intel::esimd::simd< T, SZ > src0)
s::cl_float sycl_host_fma(s::cl_float a, s::cl_float b, s::cl_float c) __NOEXC
s::cl_float sycl_host_cosh(s::cl_float x) __NOEXC
s::cl_float sycl_host_cbrt(s::cl_float x) __NOEXC
ESIMD_INLINE sycl::ext::intel::esimd::simd< RT, SZ > floor(const sycl::ext::intel::esimd::simd< float, SZ > src0, Sat sat={})
"Floor" operation, vector version - alias of rndd.
__ESIMD_API sycl::ext::intel::esimd::simd< RT, SZ > trunc(const sycl::ext::intel::esimd::simd< float, SZ > &src0, Sat sat={})
Round to integral value using the round to zero rounding mode (vector version).
s::cl_float sycl_host_exp(s::cl_float x) __NOEXC