Defines math operations on ESIMD vector data types. More...
Modules | |
Hardware-accelerated math. | |
This is a group of APIs implementing standard math operations which are also directly supported by the hardware. | |
Functions | |
template<typename T0 , typename T1 , int SZ> | |
__ESIMD_API std::enable_if_t<!detail::is_generic_floating_point_v< T0 >||std::is_same_v< T1, T0 >, simd< T0, SZ > > | sycl::_V1::ext::intel::esimd::saturate (simd< T1, SZ > src) |
Conversion of input vector elements of type T1 into vector of elements of type T0 with saturation. More... | |
template<typename TRes , typename TArg , int SZ> | |
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 > > | sycl::_V1::ext::intel::esimd::abs (simd< TArg, SZ > src0) |
Get absolute value (vector version) More... | |
template<typename TRes , typename TArg > | |
__ESIMD_API std::enable_if_t<!std::is_same< std::remove_const_t< TRes >, std::remove_const_t< TArg > >::value &&detail::is_esimd_scalar< TRes >::value &&detail::is_esimd_scalar< TArg >::value, std::remove_const_t< TRes > > | sycl::_V1::ext::intel::esimd::abs (TArg src0) |
Get absolute value (scalar version) More... | |
template<typename T1 , int SZ> | |
__ESIMD_API simd< T1, SZ > | sycl::_V1::ext::intel::esimd::abs (simd< T1, SZ > src0) |
Get absolute value (vector version). More... | |
template<typename T1 > | |
__ESIMD_API std::enable_if_t< detail::is_esimd_scalar< T1 >::value, std::remove_const_t< T1 > > | sycl::_V1::ext::intel::esimd::abs (T1 src0) |
Get absolute value (scalar version). More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API simd< T, SZ > | sycl::_V1::ext::intel::esimd::max (simd< T, SZ > src0, simd< T, SZ > src1, Sat sat={}) |
Selects component-wise the maximum of the two vectors. More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API std::enable_if_t< detail::is_esimd_scalar< T >::value, simd< T, SZ > > | sycl::_V1::ext::intel::esimd::max (simd< T, SZ > src0, T src1, Sat sat={}) |
Selects maximums for each element of the input vector and a scalar. More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API std::enable_if_t< detail::is_esimd_scalar< T >::value, simd< T, SZ > > | sycl::_V1::ext::intel::esimd::max (T src0, simd< T, SZ > src1, Sat sat={}) |
Selects maximums for each element of the input scalar and a vector. More... | |
template<typename T , class Sat = saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< detail::is_esimd_scalar< T >::value, T > | sycl::_V1::ext::intel::esimd::max (T src0, T src1, Sat sat={}) |
Selects maximum between two scalar values. More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API simd< T, SZ > | sycl::_V1::ext::intel::esimd::min (simd< T, SZ > src0, simd< T, SZ > src1, Sat sat={}) |
Selects component-wise the minimum of the two vectors. More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API std::enable_if_t< detail::is_esimd_scalar< T >::value, simd< T, SZ > > | sycl::_V1::ext::intel::esimd::min (simd< T, SZ > src0, T src1, Sat sat={}) |
Selects minimums for each element of the input vector and a scalar. More... | |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API std::enable_if_t< detail::is_esimd_scalar< T >::value, simd< T, SZ > > | sycl::_V1::ext::intel::esimd::min (T src0, simd< T, SZ > src1, Sat sat={}) |
Selects minimums for each element of the input scalar and a vector. More... | |
template<typename T , class Sat = saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< detail::is_esimd_scalar< T >::value, T > | sycl::_V1::ext::intel::esimd::min (T src0, T src1, Sat sat={}) |
Selects minimum between two scalar values. More... | |
template<class T , int SZ, class Sat = saturation_off_tag> | |
ESIMD_DETAIL ESIMD_NODEBUG ESIMD_INLINE simd< T, SZ > | sycl::_V1::ext::intel::esimd::log (simd< T, SZ > src0, Sat sat={}) |
Computes the natural logarithm of the given argument. More... | |
template<class T , class Sat = saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE T | sycl::_V1::ext::intel::esimd::log (T src0, Sat sat={}) |
template<class T , int SZ, class Sat = saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE simd< T, SZ > | sycl::_V1::ext::intel::esimd::exp (simd< T, SZ > src0, Sat sat={}) |
Computes e raised to the power of the given argument. More... | |
template<class T , class Sat = saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE T | sycl::_V1::ext::intel::esimd::exp (T src0, Sat sat={}) |
template<typename T1 , typename T2 , typename T3 , typename T4 , int N, class Sat = saturation_off_tag> | |
__ESIMD_API std::enable_if_t< detail::is_dword_type< T1 >::value &&detail::is_dword_type< T2 >::value &&detail::is_dword_type< T3 >::value &&detail::is_dword_type< T4 >::value, simd< T1, N > > | sycl::_V1::ext::intel::esimd::dp4a (simd< T2, N > src0, simd< T3, N > src1, simd< T4, N > src2, Sat sat={}) |
DP4A. More... | |
template<typename T0 , typename T1 , int SZ> | |
ESIMD_INLINE ESIMD_NODEBUG T0 | sycl::_V1::ext::intel::esimd::hmax (simd< T1, SZ > v) |
ESIMD_DETAIL. More... | |
template<typename T0 , typename T1 , int SZ> | |
ESIMD_INLINE ESIMD_NODEBUG T0 | sycl::_V1::ext::intel::esimd::hmin (simd< T1, SZ > v) |
Performs 'minimum' operation reduction over elements of the input vector, that is, returns the minimal vector element. More... | |
template<typename T0 , typename T1 , int SZ, typename BinaryOperation > | |
ESIMD_INLINE ESIMD_NODEBUG T0 | sycl::_V1::ext::intel::esimd::reduce (simd< T1, SZ > v, BinaryOperation op) |
Performs reduction over elements of the input vector. More... | |
template<typename T0 , typename T1 , typename U , int SZ> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_dword_type< T0 >::value &&__ESIMD_DNS::is_dword_type< T1 >::value &&__ESIMD_DNS::is_dword_type< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T0, SZ > &rmd, sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1) |
template<typename T0 , typename T1 , typename U , int SZ> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T0, SZ > &rmd, U src0, sycl::ext::intel::esimd::simd< T1, SZ > src1) |
template<typename T0 , typename T , typename U > | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T >::value &&__ESIMD_DNS::is_esimd_scalar< U >::value &&__ESIMD_DNS::is_esimd_scalar< T0 >::value, T0 > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T0, 1 > &rmd, T src0, U src1) |
template<typename T , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::quot (sycl::ext::intel::esimd::simd< T, SZ > src0, U src1) |
Integral quotient (vector version) More... | |
template<typename T0 , typename T1 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::quot (T0 src0, T1 src1) |
Integral quotient (scalar version) More... | |
template<typename T , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::mod (sycl::ext::intel::esimd::simd< T, SZ > src0, U src1) |
Modulo (vector version) More... | |
template<typename T0 , typename T1 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::mod (T0 src0, T1 src1) |
Modulo (scalar version) More... | |
template<typename T , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::div (sycl::ext::intel::esimd::simd< T, SZ > &remainder, sycl::ext::intel::esimd::simd< T, SZ > src0, U src1) |
Integral division with a vector dividend and a scalar divisor. More... | |
template<typename T , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&std::is_integral< U >::value &&__ESIMD_DNS::is_esimd_scalar< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::div (sycl::ext::intel::esimd::simd< T, SZ > &remainder, U src0, sycl::ext::intel::esimd::simd< T, SZ > src1) |
Integral division with a scalar dividend and a vector divisor. More... | |
template<typename RT , typename T0 , typename T1 > | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< RT >::value &&__ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value, std::remove_const_t< RT > > | sycl::_V1::ext::intel::experimental::esimd::div (sycl::ext::intel::esimd::simd< std::remove_const_t< RT >, 1 > &remainder, T0 src0, T1 src1) |
Integral division (scalar version). More... | |
template<typename T0 , typename T1 , int SZ, typename U , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T1 >::value &&std::is_floating_point< T1 >::value &&__ESIMD_DNS::is_fp_or_dword_type< U >::value &&std::is_floating_point< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::dp2 (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Dot product on groups of 4 elements. More... | |
template<typename T0 , typename T1 , int SZ, typename U , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T1 >::value &&std::is_floating_point< T1 >::value &&__ESIMD_DNS::is_fp_or_dword_type< U >::value &&std::is_floating_point< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::dp3 (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Dot product on groups of 4 elements. More... | |
template<typename T0 , typename T1 , int SZ, typename U , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T1 >::value &&std::is_floating_point< T1 >::value &&__ESIMD_DNS::is_fp_or_dword_type< U >::value &&std::is_floating_point< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::dp4 (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Dot product on groups of 4 elements. More... | |
template<typename T , typename U , int SZ, class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T >::value &&std::is_floating_point< T >::value &&__ESIMD_DNS::is_fp_or_dword_type< U >::value &&std::is_floating_point< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::dph (sycl::ext::intel::esimd::simd< T, SZ > src0, U src1, Sat sat={}) |
Dot product on groups of 4 elements. More... | |
template<typename T , int SZ, class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T >::value &&std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::line (sycl::ext::intel::esimd::simd< T, 4 > src0, sycl::ext::intel::esimd::simd< T, SZ > src1, Sat sat={}) |
Linear equation. More... | |
template<typename T , int SZ, class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T >::value &&std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::line (float P, float Q, sycl::ext::intel::esimd::simd< T, SZ > src1, Sat sat={}) |
Linear equation. More... | |
template<typename T , int SZ> | |
__ESIMD_API sycl::ext::intel::esimd::simd< T, SZ > | sycl::_V1::ext::intel::experimental::esimd::frc (sycl::ext::intel::esimd::simd< T, SZ > src0) |
Performs component-wise truncate-to-minus-infinity fraction operation of src0 . More... | |
template<typename T > | |
__ESIMD_API T | sycl::_V1::ext::intel::experimental::esimd::frc (T src0) |
Performs truncate-to-minus-infinity fraction operation of src0 . More... | |
template<typename RT , typename T0 , int SZ, class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API sycl::ext::intel::esimd::simd< RT, SZ > | sycl::_V1::ext::intel::experimental::esimd::lzd (sycl::ext::intel::esimd::simd< T0, SZ > src0, Sat sat={}) |
template<typename RT , typename T0 , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< RT >::value &&__ESIMD_DNS::is_esimd_scalar< T0 >::value, std::remove_const_t< RT > > | sycl::_V1::ext::intel::experimental::esimd::lzd (T0 src0, Sat sat={}) |
template<typename T , int SZ, typename U , typename V , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< __ESIMD_DNS::is_fp_or_dword_type< T >::value &&std::is_floating_point< T >::value &&__ESIMD_DNS::is_fp_or_dword_type< U >::value &&std::is_floating_point< U >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::lrp (sycl::ext::intel::esimd::simd< T, SZ > src0, U src1, V src2, Sat sat={}) |
template<int SZ, typename U , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API sycl::ext::intel::esimd::simd< float, SZ > | sycl::_V1::ext::intel::experimental::esimd::sincos (sycl::ext::intel::esimd::simd< float, SZ > &dstcos, U src0, Sat sat={}) |
template<typename T , int SZ> | |
ESIMD_DETAIL ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< T, SZ > | sycl::_V1::ext::intel::experimental::esimd::atan (sycl::ext::intel::esimd::simd< T, SZ > src0) |
template<typename T > | |
__ESIMD_API T | sycl::_V1::ext::intel::experimental::esimd::atan (T src0) |
template<typename T , int SZ> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::acos (sycl::ext::intel::esimd::simd< T, SZ > src0) |
template<typename T > | |
__ESIMD_API std::enable_if_t< std::is_floating_point< T >::value, T > | sycl::_V1::ext::intel::experimental::esimd::acos (T src0) |
template<typename T , int SZ> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_floating_point< T >::value, sycl::ext::intel::esimd::simd< T, SZ > > | sycl::_V1::ext::intel::experimental::esimd::asin (sycl::ext::intel::esimd::simd< T, SZ > src0) |
template<typename T > | |
__ESIMD_API std::enable_if_t< std::is_floating_point< T >::value, T > | sycl::_V1::ext::intel::experimental::esimd::asin (T src0) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::atan2_fast (sycl::ext::intel::esimd::simd< float, N > y, sycl::ext::intel::esimd::simd< float, N > x) |
template<typename T > | |
float | sycl::_V1::ext::intel::experimental::esimd::atan2_fast (T y, T x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::atan2 (sycl::ext::intel::esimd::simd< float, N > y, sycl::ext::intel::esimd::simd< float, N > x) |
template<typename T > | |
float | sycl::_V1::ext::intel::experimental::esimd::atan2 (T y, T x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::fmod (sycl::ext::intel::esimd::simd< float, N > y, sycl::ext::intel::esimd::simd< float, N > x) |
template<typename T > | |
float | sycl::_V1::ext::intel::experimental::esimd::fmod (T y, T x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::sin_emu (sycl::ext::intel::esimd::simd< float, N > x) |
template<typename T > | |
float | sycl::_V1::ext::intel::experimental::esimd::sin_emu (T x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::cos_emu (sycl::ext::intel::esimd::simd< float, N > x) |
template<typename T > | |
float | sycl::_V1::ext::intel::experimental::esimd::cos_emu (T x) |
float | sycl::_V1::ext::intel::experimental::esimd::tanh_cody_waite (float x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::tanh_cody_waite (sycl::ext::intel::esimd::simd< float, N > x) |
float | sycl::_V1::ext::intel::experimental::esimd::tanh (float x) |
template<int N> | |
sycl::ext::intel::esimd::simd< float, N > | sycl::_V1::ext::intel::experimental::esimd::tanh (sycl::ext::intel::esimd::simd< float, N > x) |
template<> | |
ESIMD_INLINE float | sycl::_V1::ext::intel::experimental::esimd::atan2_fast (float y, float x) |
template<> | |
ESIMD_INLINE float | sycl::_V1::ext::intel::experimental::esimd::atan2 (float y, float x) |
template<> | |
ESIMD_INLINE float | sycl::_V1::ext::intel::experimental::esimd::fmod (float y, float x) |
template<> | |
ESIMD_INLINE float | sycl::_V1::ext::intel::experimental::esimd::sin_emu (float x0) |
template<> | |
ESIMD_INLINE float | sycl::_V1::ext::intel::experimental::esimd::cos_emu (float x0) |
template<typename T , int N> | |
sycl::ext::intel::esimd::simd< T, N > | sycl::_V1::ext::intel::experimental::esimd::dp4 (sycl::ext::intel::esimd::simd< T, N > v1, sycl::ext::intel::esimd::simd< T, N > v2) |
Defines math operations on ESIMD vector data types.
__ESIMD_API simd<T1, SZ> sycl::_V1::ext::intel::esimd::abs | ( | simd< T1, SZ > | src0 | ) |
Get absolute value (vector version).
This is a specialization of a version with three template parameters, where the element types of the input and output vector are the same.
T1 | element type of the input and output vectors. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
Definition at line 153 of file math.hpp.
References sycl::_V1::ext::intel::esimd::detail::simd_obj_impl< RawTy, N, Derived, SFINAE >::data().
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> > sycl::_V1::ext::intel::esimd::abs | ( | simd< TArg, SZ > | src0 | ) |
Get absolute value (vector version)
TRes | element type of the returned vector. |
TArg | element type of the input vector. |
SZ | size of the input and returned vector. |
src0 | the input vector. |
Definition at line 127 of file math.hpp.
References sycl::_V1::ext::intel::esimd::detail::simd_obj_impl< RawTy, N, Derived, SFINAE >::data().
Referenced by __host_std::sycl_host_s_abs().
__ESIMD_API std::enable_if_t<detail::is_esimd_scalar<T1>::value, std::remove_const_t<T1> > sycl::_V1::ext::intel::esimd::abs | ( | T1 | src0 | ) |
Get absolute value (scalar version).
This is a specialization of a version with two template parameters, where the types of the input and output value are the same.
T1 | element type of the input and output value. |
src0 | the source operand. |
Definition at line 166 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::acos(), sycl::_V1::ext::intel::experimental::esimd::asin(), sycl::_V1::ext::intel::experimental::esimd::atan(), sycl::_V1::ext::intel::experimental::esimd::atan2(), sycl::_V1::ext::intel::experimental::esimd::atan2_fast(), and sycl::_V1::ext::intel::experimental::esimd::fmod().
__ESIMD_API std::enable_if_t<!std::is_same<std::remove_const_t<TRes>, std::remove_const_t<TArg> >::value && detail::is_esimd_scalar<TRes>::value && detail::is_esimd_scalar<TArg>::value, std::remove_const_t<TRes> > sycl::_V1::ext::intel::esimd::abs | ( | TArg | src0 | ) |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<std::is_floating_point<T>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::acos | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0 | ) |
Definition at line 1205 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), and sycl::_V1::ext::intel::math::rsqrt().
Referenced by __host_std::sycl_host_acos().
__ESIMD_API std::enable_if_t<std::is_floating_point<T>::value, T> sycl::_V1::ext::intel::experimental::esimd::acos | ( | T | src0 | ) |
Definition at line 1232 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::asin().
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<std::is_floating_point<T>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::asin | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0 | ) |
Definition at line 1243 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), and sycl::_V1::ext::intel::experimental::esimd::acos().
Referenced by __host_std::sycl_host_asin().
__ESIMD_API std::enable_if_t<std::is_floating_point<T>::value, T> sycl::_V1::ext::intel::experimental::esimd::asin | ( | T | src0 | ) |
ESIMD_DETAIL ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd<T, SZ> sycl::_V1::ext::intel::experimental::esimd::atan | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0 | ) |
Definition at line 1161 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), and sycl::_V1::ext::intel::esimd::inv().
Referenced by __host_std::sycl_host_atan().
__ESIMD_API T sycl::_V1::ext::intel::experimental::esimd::atan | ( | T | src0 | ) |
Definition at line 1192 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::atan2().
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::atan2 | ( | float | y, |
float | x | ||
) |
Definition at line 1376 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::atan2(), and sycl::_V1::ext::intel::experimental::esimd::atan2_fast().
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::atan2 | ( | sycl::ext::intel::esimd::simd< float, N > | y, |
sycl::ext::intel::esimd::simd< float, N > | x | ||
) |
Definition at line 1353 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::experimental::esimd::atan(), sycl::_V1::ext::intel::experimental::esimd::atan2(), and sycl::_V1::ext::intel::math::sqrt().
Referenced by __host_std::sycl_host_atan2().
float sycl::_V1::ext::intel::experimental::esimd::atan2 | ( | T | y, |
T | x | ||
) |
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::atan2_fast | ( | float | y, |
float | x | ||
) |
Definition at line 1343 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::atan2().
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::atan2_fast | ( | sycl::ext::intel::esimd::simd< float, N > | y, |
sycl::ext::intel::esimd::simd< float, N > | x | ||
) |
Definition at line 1321 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::experimental::esimd::atan2(), and sycl::_V1::r.
float sycl::_V1::ext::intel::experimental::esimd::atan2_fast | ( | T | y, |
T | x | ||
) |
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::cos_emu | ( | float | x0 | ) |
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::cos_emu | ( | sycl::ext::intel::esimd::simd< float, N > | x | ) |
Definition at line 1454 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::sin_emu().
float sycl::_V1::ext::intel::experimental::esimd::cos_emu | ( | T | x | ) |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<RT>::value && __ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value, std::remove_const_t<RT> > sycl::_V1::ext::intel::experimental::esimd::div | ( | sycl::ext::intel::esimd::simd< std::remove_const_t< RT >, 1 > & | remainder, |
T0 | src0, | ||
T1 | src1 | ||
) |
Integral division (scalar version).
Computes quotient and remainder of division.
RT | element type of the output remainder vector. |
T0 | element type of the dividend src0 . |
T1 | element type of the divisor src1 . |
[out] | remainder | the vector of size 1 with a remainder from division. |
src0 | the dividend scalar value. | |
src1 | the divisor scalar value. |
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::div | ( | sycl::ext::intel::esimd::simd< T, SZ > & | remainder, |
sycl::ext::intel::esimd::simd< T, SZ > | src0, | ||
U | src1 | ||
) |
Integral division with a vector dividend and a scalar divisor.
Computes quotient and remainder of division.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . |
[out] | remainder | the vector of remainders from a division operation. |
src0 | the dividend input vector. | |
src1 | the divisor scalar value. |
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && std::is_integral<U>::value && __ESIMD_DNS::is_esimd_scalar<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::div | ( | sycl::ext::intel::esimd::simd< T, SZ > & | remainder, |
U | src0, | ||
sycl::ext::intel::esimd::simd< T, SZ > | src1 | ||
) |
Integral division with a scalar dividend and a vector divisor.
Computes quotient and remainder of division.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . |
[out] | remainder | the vector of remainders from a division operation. |
src0 | the dividend scalar value. | |
src1 | the divisor input vector. |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T1>::value && std::is_floating_point<T1>::value && __ESIMD_DNS::is_fp_or_dword_type<U>::value && std::is_floating_point<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::dp2 | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Dot product on groups of 4 elements.
T0 | element type of the returned vector. |
T1 | element type of the input vector. Must be a float type. |
SZ | size of the input and returned vectors. Must be a multiple of 4. |
U | type of scalar operand src1 . Must be a float type. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T1>::value && std::is_floating_point<T1>::value && __ESIMD_DNS::is_fp_or_dword_type<U>::value && std::is_floating_point<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::dp3 | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Dot product on groups of 4 elements.
T0 | element type of the returned vector. |
T1 | element type of the input vector. Must be a float type. |
SZ | size of the input and returned vectors. Must be a multiple of 4. |
U | type of scalar operand src1 . Must be a float type. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
sycl::ext::intel::esimd::simd<T, N> sycl::_V1::ext::intel::experimental::esimd::dp4 | ( | sycl::ext::intel::esimd::simd< T, N > | v1, |
sycl::ext::intel::esimd::simd< T, N > | v2 | ||
) |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T1>::value && std::is_floating_point<T1>::value && __ESIMD_DNS::is_fp_or_dword_type<U>::value && std::is_floating_point<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::dp4 | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Dot product on groups of 4 elements.
T0 | element type of the returned vector. |
T1 | element type of the input vector. Must be a float type. |
SZ | size of the input and returned vectors. Must be a multiple of 4. |
U | type of scalar operand src1 . Must be a float type. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t< detail::is_dword_type<T1>::value && detail::is_dword_type<T2>::value && detail::is_dword_type<T3>::value && detail::is_dword_type<T4>::value, simd<T1, N> > sycl::_V1::ext::intel::esimd::dp4a | ( | simd< T2, N > | src0, |
simd< T3, N > | src1, | ||
simd< T4, N > | src2, | ||
Sat | sat = {} |
||
) |
DP4A.
src0 | the first source operand of dp4a operation. |
src1 | the second source operand of dp4a operation. |
src2 | the third source operand of dp4a operation. |
sat | saturation flag, which has default value of saturation_off. |
Returns simd vector of the dp4a operation result.
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T>::value && std::is_floating_point<T>::value && __ESIMD_DNS::is_fp_or_dword_type<U>::value && std::is_floating_point<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::dph | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Dot product on groups of 4 elements.
T0 | element type of the returned vector. |
T1 | element type of the input vector. Must be a float type. |
SZ | size of the input and returned vectors. Must be a multiple of 4. |
U | type of scalar operand src1 . Must be a float type. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE T sycl::_V1::ext::intel::esimd::exp | ( | T | src0, |
Sat | sat = {} |
||
) |
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::fmod | ( | float | y, |
float | x | ||
) |
Definition at line 1406 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::fmod(), and sycl::_V1::ext::intel::experimental::esimd::sin_emu().
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::fmod | ( | sycl::ext::intel::esimd::simd< float, N > | y, |
sycl::ext::intel::esimd::simd< float, N > | x | ||
) |
Definition at line 1386 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), and sycl::_V1::ext::intel::experimental::esimd::fmod().
float sycl::_V1::ext::intel::experimental::esimd::fmod | ( | T | y, |
T | x | ||
) |
__ESIMD_API sycl::ext::intel::esimd::simd<T, SZ> sycl::_V1::ext::intel::experimental::esimd::frc | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0 | ) |
Performs component-wise truncate-to-minus-infinity fraction operation of src0
.
(vector version)
T | element type of the input vector src0 and returned vector. |
SZ | size of the second input vector and returned vectors. |
src0 | the input vector. |
__ESIMD_API T sycl::_V1::ext::intel::experimental::esimd::frc | ( | T | src0 | ) |
ESIMD_INLINE ESIMD_NODEBUG T0 sycl::_V1::ext::intel::esimd::hmax | ( | simd< T1, SZ > | v | ) |
ESIMD_DETAIL.
Performs 'maximum' operation reduction over elements of the input vector, that is, returns the maximal vector element.
T0 | type of the return value. |
T1 | element type of the input vector. |
SZ | size of the input vector. |
v | the vector to perfrom reduction on |
ESIMD_INLINE ESIMD_NODEBUG T0 sycl::_V1::ext::intel::esimd::hmin | ( | simd< T1, SZ > | v | ) |
Performs 'minimum' operation reduction over elements of the input vector, that is, returns the minimal vector element.
T0 | type of the return value. |
T1 | element type of the input vector. |
SZ | size of the input vector. |
v | the vector to perfrom reduction on |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T>::value && __ESIMD_DNS::is_esimd_scalar<U>::value && __ESIMD_DNS::is_esimd_scalar<T0>::value, T0> sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T0, 1 > & | rmd, |
T | src0, | ||
U | src1 | ||
) |
Definition at line 479 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::imul().
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_dword_type<T0>::value && __ESIMD_DNS::is_dword_type<T1>::value && __ESIMD_DNS::is_dword_type<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T0, SZ > & | rmd, |
sycl::ext::intel::esimd::simd< T1, SZ > | src0, | ||
U | src1 | ||
) |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T0, SZ > & | rmd, |
U | src0, | ||
sycl::ext::intel::esimd::simd< T1, SZ > | src1 | ||
) |
Definition at line 468 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::imul().
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T>::value && std::is_floating_point<T>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::line | ( | float | P, |
float | Q, | ||
sycl::ext::intel::esimd::simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Linear equation.
T | element type of the first input vector src0 . Must be a float type. |
SZ | size of the second input vector and returned vectors. Must be a multiple of 4. |
P | the first input value. |
Q | the second input value. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T>::value && std::is_floating_point<T>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::line | ( | sycl::ext::intel::esimd::simd< T, 4 > | src0, |
sycl::ext::intel::esimd::simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Linear equation.
T | element type of the second input vector src1 and returned vector. Must be a float type. |
SZ | size of the second input vector and returned vectors. Must be a multiple of 4. |
src0 | the first input vector of size 4. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE T sycl::_V1::ext::intel::esimd::log | ( | T | src0, |
Sat | sat = {} |
||
) |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_fp_or_dword_type<T>::value && std::is_floating_point<T>::value && __ESIMD_DNS::is_fp_or_dword_type<U>::value && std::is_floating_point<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::lrp | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0, |
U | src1, | ||
V | src2, | ||
Sat | sat = {} |
||
) |
__ESIMD_API sycl::ext::intel::esimd::simd<RT, SZ> sycl::_V1::ext::intel::experimental::esimd::lzd | ( | sycl::ext::intel::esimd::simd< T0, SZ > | src0, |
Sat | sat = {} |
||
) |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<RT>::value && __ESIMD_DNS::is_esimd_scalar<T0>::value, std::remove_const_t<RT> > sycl::_V1::ext::intel::experimental::esimd::lzd | ( | T0 | src0, |
Sat | sat = {} |
||
) |
__ESIMD_API simd<T, SZ> sycl::_V1::ext::intel::esimd::max | ( | simd< T, SZ > | src0, |
simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Selects component-wise the maximum of the two vectors.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 180 of file math.hpp.
References max().
__ESIMD_API std::enable_if_t<detail::is_esimd_scalar<T>::value, simd<T, SZ> > sycl::_V1::ext::intel::esimd::max | ( | simd< T, SZ > | src0, |
T | src1, | ||
Sat | sat = {} |
||
) |
Selects maximums for each element of the input vector and a scalar.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 213 of file math.hpp.
References max().
__ESIMD_API std::enable_if_t<detail::is_esimd_scalar<T>::value, simd<T, SZ> > sycl::_V1::ext::intel::esimd::max | ( | T | src0, |
simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Selects maximums for each element of the input scalar and a vector.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the scalar value. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 231 of file math.hpp.
References max().
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<detail::is_esimd_scalar<T>::value, T> sycl::_V1::ext::intel::esimd::max | ( | T | src0, |
T | src1, | ||
Sat | sat = {} |
||
) |
Selects maximum between two scalar values.
(scalar version) The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
src0 | the scalar value. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 248 of file math.hpp.
References max().
__ESIMD_API simd<T, SZ> sycl::_V1::ext::intel::esimd::min | ( | simd< T, SZ > | src0, |
simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Selects component-wise the minimum of the two vectors.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 265 of file math.hpp.
References min().
__ESIMD_API std::enable_if_t<detail::is_esimd_scalar<T>::value, simd<T, SZ> > sycl::_V1::ext::intel::esimd::min | ( | simd< T, SZ > | src0, |
T | src1, | ||
Sat | sat = {} |
||
) |
Selects minimums for each element of the input vector and a scalar.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 298 of file math.hpp.
References min().
__ESIMD_API std::enable_if_t<detail::is_esimd_scalar<T>::value, simd<T, SZ> > sycl::_V1::ext::intel::esimd::min | ( | T | src0, |
simd< T, SZ > | src1, | ||
Sat | sat = {} |
||
) |
Selects minimums for each element of the input scalar and a vector.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
src0 | the scalar value. |
src1 | the input vector. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 316 of file math.hpp.
References min().
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<detail::is_esimd_scalar<T>::value, T> sycl::_V1::ext::intel::esimd::min | ( | T | src0, |
T | src1, | ||
Sat | sat = {} |
||
) |
Selects minimum between two scalar values.
The source operands must be both of integer or both of floating-point type.
T | element type of the input and return vectors. |
src0 | the scalar value. |
src1 | the scalar value. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
Definition at line 333 of file math.hpp.
References min().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::mod | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0, |
U | src1 | ||
) |
Modulo (vector version)
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . |
src0 | the dividend input vector. |
src1 | the divisor scalar value. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && std::is_integral<T0>::value && std::is_integral<T1>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::mod | ( | T0 | src0, |
T1 | src1 | ||
) |
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T, SZ> > sycl::_V1::ext::intel::experimental::esimd::quot | ( | sycl::ext::intel::esimd::simd< T, SZ > | src0, |
U | src1 | ||
) |
Integral quotient (vector version)
T | element type of the input and return vectors. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . |
src0 | the dividend input vector. |
src1 | the divisor scalar value. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && std::is_integral<T0>::value && std::is_integral<T1>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::quot | ( | T0 | src0, |
T1 | src1 | ||
) |
ESIMD_INLINE ESIMD_NODEBUG T0 sycl::_V1::ext::intel::esimd::reduce | ( | simd< T1, SZ > | v, |
BinaryOperation | op | ||
) |
Performs reduction over elements of the input vector.
T0 | type of the return value. |
T1 | element type of the input vector. |
SZ | size of the input vector. |
BinaryOperation | type representing the operation. Can be an instantion of one of the following types:
|
v | the vector to perfrom reduction on |
op | reduction operation object, used to auto-deduce the BinaryOperation template parameter. |
__ESIMD_API std::enable_if_t<!detail::is_generic_floating_point_v<T0> || std::is_same_v<T1, T0>, simd<T0, SZ> > sycl::_V1::ext::intel::esimd::saturate | ( | simd< T1, SZ > | src | ) |
Conversion of input vector elements of type T1
into vector of elements of type T0
with saturation.
The following conversions are supported:
T0
and T1
is the same floating-point type (including half
). In this case the result in the i'th
lane is:
-1
if src
[i] is less than -1
1
if src
[i] is greater than 1
I.e. it is always a value in the range [-1, 1]
.
T0
is an integral type, T1
is any valid element type. In this case the (per-element) result is the closest representable value. For example:T0
) positive integral or floating-point value src[i] of type T1
converted to T0
will result in std:::numeric_limits<T0>::max()
.std:::numeric_limits<T0>::min()
.T1
will yield 0
. T0 | Element type of the returned vector. |
T1 | Element type of the input vector. |
SZ | Size of the input and returned vector. |
src | The input vector. |
src
elements converted to T0
with saturation. Definition at line 72 of file math.hpp.
References sycl::_V1::ext::intel::esimd::detail::simd_obj_impl< RawTy, N, Derived, SFINAE >::data().
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::sin_emu | ( | float | x0 | ) |
Definition at line 1447 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::cos_emu().
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::sin_emu | ( | sycl::ext::intel::esimd::simd< float, N > | x | ) |
Definition at line 1413 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::fmod().
float sycl::_V1::ext::intel::experimental::esimd::sin_emu | ( | T | x | ) |
__ESIMD_API sycl::ext::intel::esimd::simd<float, SZ> sycl::_V1::ext::intel::experimental::esimd::sincos | ( | sycl::ext::intel::esimd::simd< float, SZ > & | dstcos, |
U | src0, | ||
Sat | sat = {} |
||
) |
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::tanh | ( | float | x | ) |
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::tanh | ( | sycl::ext::intel::esimd::simd< float, N > | x | ) |
ESIMD_DETAIL ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::tanh_cody_waite | ( | float | x | ) |