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. | |
Sycl_esimd_logical | |
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 | sycl::_V1::ext::intel::esimd::simd< T, SZ > (max)(simd< T |
Selects component-wise the maximum of the two vectors. More... | |
__ESIMD_API SZ simd< T, SZ > Sat int class simd< T, SZ >() | sycl::_V1::ext::intel::esimd::max (simd< T, SZ > src0, T src1, Sat sat={}) |
__ESIMD_API simd< T, SZ > Sat class T() | sycl::_V1::ext::intel::esimd::max (T src0, T src1, Sat sat={}) |
template<typename T , int SZ, class Sat = saturation_off_tag> | |
__ESIMD_API | sycl::_V1::ext::intel::esimd::simd< T, SZ > (min)(simd< T |
Selects component-wise the minimum of the two vectors. More... | |
__ESIMD_API SZ simd< T, SZ > Sat int class simd< T, SZ >() | sycl::_V1::ext::intel::esimd::min (simd< T, SZ > src0, T src1, Sat sat={}) |
__ESIMD_API simd< T, SZ > Sat class T() | sycl::_V1::ext::intel::esimd::min (T src0, T src1, Sat sat={}) |
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<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::addc (sycl::ext::intel::esimd::simd< uint32_t, N > &carry, sycl::ext::intel::esimd::simd< uint32_t, N > src0, sycl::ext::intel::esimd::simd< uint32_t, N > src1) |
Performs add with carry of 2 unsigned 32-bit vectors. More... | |
template<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::addc (sycl::ext::intel::esimd::simd< uint32_t, N > &carry, sycl::ext::intel::esimd::simd< uint32_t, N > src0, uint32_t src1) |
Performs add with carry of a unsigned 32-bit vector and scalar. More... | |
template<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::addc (sycl::ext::intel::esimd::simd< uint32_t, N > &carry, uint32_t src0, sycl::ext::intel::esimd::simd< uint32_t, N > src1) |
Performs add with carry of a unsigned 32-bit scalar and vector. More... | |
__ESIMD_API uint32_t | sycl::_V1::ext::intel::esimd::addc (uint32_t &carry, uint32_t src0, uint32_t src1) |
Performs add with carry of a unsigned 32-bit scalars. More... | |
template<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::subb (sycl::ext::intel::esimd::simd< uint32_t, N > &borrow, sycl::ext::intel::esimd::simd< uint32_t, N > src0, sycl::ext::intel::esimd::simd< uint32_t, N > src1) |
Performs substraction with borrow of 2 unsigned 32-bit vectors. More... | |
template<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::subb (sycl::ext::intel::esimd::simd< uint32_t, N > &borrow, sycl::ext::intel::esimd::simd< uint32_t, N > src0, uint32_t src1) |
Performs substraction with borrow of unsigned 32-bit vector and scalar. More... | |
template<int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< uint32_t, N > | sycl::_V1::ext::intel::esimd::subb (sycl::ext::intel::esimd::simd< uint32_t, N > &borrow, uint32_t src0, sycl::ext::intel::esimd::simd< uint32_t, N > src1) |
Performs substraction with borrow of unsigned 32-bit scalar and vector. More... | |
__ESIMD_API uint32_t | sycl::_V1::ext::intel::esimd::subb (uint32_t &borrow, uint32_t src0, uint32_t src1) |
Performs substraction with borrow of 2 unsigned 32-bit scalars. More... | |
__ESIMD_API uint64_t | sycl::_V1::ext::intel::esimd::rdtsc () |
rdtsc - get the value of timestamp counter. More... | |
template<typename T , typename T0 , typename T1 , int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< T, N > | sycl::_V1::ext::intel::experimental::esimd::imul_impl (sycl::ext::intel::esimd::simd< T, N > &rmd, sycl::ext::intel::esimd::simd< T0, N > src0, sycl::ext::intel::esimd::simd< T1, N > src1) |
Computes the 64-bit result of two 32-bit element vectors src0 and src1 multiplication. More... | |
template<typename T , typename T0 , typename T1 , int N> | |
__ESIMD_API sycl::ext::intel::esimd::simd< T, N > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T, N > &rmd, sycl::ext::intel::esimd::simd< T0, N > src0, sycl::ext::intel::esimd::simd< T1, N > src1) |
Computes the 64-bit multiply result of two 32-bit integer vectors src0 and src1 . More... | |
template<typename T , typename T0 , typename T1 , int N> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_dword_type< T1 >::value, sycl::ext::intel::esimd::simd< T, N > > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T, N > &rmd, sycl::ext::intel::esimd::simd< T0, N > src0, T1 src1) |
Computes the 64-bit multiply result of 32-bit integer vector src0 and 32-bit integer scalar src1 . More... | |
template<typename T , typename T0 , typename T1 , int N> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_dword_type< T0 >::value, sycl::ext::intel::esimd::simd< T, N > > | sycl::_V1::ext::intel::experimental::esimd::imul (sycl::ext::intel::esimd::simd< T, N > &rmd, T0 src0, sycl::ext::intel::esimd::simd< T1, N > src1) |
Computes the 64-bit multiply result of a scalar 32-bit integer src0 and 32-bit integer vector src1 . More... | |
template<typename T , typename T0 , typename T1 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_dword_type< T >::value &&__ESIMD_DNS::is_dword_type< T0 >::value &&__ESIMD_DNS::is_dword_type< T1 >::value, T > | sycl::_V1::ext::intel::experimental::esimd::imul (T &rmd, T0 src0, T1 src1) |
Computes the 64-bit multiply result of two scalar 32-bit integer values src0 and src1 . More... | |
template<int N> | |
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED ("Please use sycl::ext::intel::esimd::addc(carry, src0, src1);") __ESIMD_API sycl | |
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED ("Please use sycl::ext::intel::esimd::addc(carry, src0, src1);") __ESIMD_API uint32_t addc(uint32_t &carry | |
template<int N> | |
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED ("Please use sycl::ext::intel::esimd::subb(borrow, src0, src1);") __ESIMD_API sycl | |
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED ("Please use sycl::ext::intel::esimd::subb(borrow, src0, src1);") __ESIMD_API uint32_t subb(uint32_t &borrow | |
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_API 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_API 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_API 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_API 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_API 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_API 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_API 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_API 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_API 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_API 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_API 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_API 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) |
template<int N> | |
ESIMD_INLINE sycl::ext::intel::esimd::simd< sycl::half, N > | sycl::_V1::ext::intel::experimental::esimd::srnd (sycl::ext::intel::esimd::simd< float, N > src0, sycl::ext::intel::esimd::simd< uint16_t, N > src1) |
srnd - perform stochastic rounding. More... | |
Variables | |
__ESIMD_API SZ | sycl::_V1::ext::intel::esimd::src0 |
__ESIMD_API SZ simd< T, SZ > | sycl::_V1::ext::intel::esimd::src1 |
__ESIMD_API SZ simd< T, SZ > Sat | sycl::_V1::ext::intel::esimd::sat |
__ESIMD_API SZ simd< T, SZ > Sat int | sycl::_V1::ext::intel::esimd::SZ |
__ESIMD_API SZ simd< T, SZ > Sat int class | sycl::_V1::ext::intel::esimd::Sat |
uint32_t | sycl::_V1::ext::intel::experimental::esimd::src0 |
uint32_t uint32_t | sycl::_V1::ext::intel::experimental::esimd::src1 |
Defines math operations on ESIMD vector data types.
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED | ( | "Please use sycl::ext::intel::esimd::addc(carry, src0, src1);" | ) |
Definition at line 500 of file math.hpp.
References sycl::_V1::ext::intel::esimd::addc(), sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED | ( | "Please use sycl::ext::intel::esimd::addc(carry, src0, src1);" | ) | & |
sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED | ( | "Please use sycl::ext::intel::esimd::subb(borrow, src0, src1);" | ) |
Definition at line 533 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, sycl::_V1::ext::intel::experimental::esimd::src1, and sycl::_V1::ext::intel::esimd::subb().
__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::src0.
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::src0.
__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.
References sycl::_V1::ext::intel::esimd::src0.
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(), syclcompat::cabs(), sycl::_V1::ext::intel::experimental::esimd::fmod(), and syclcompat::abs::operator()().
__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)
T0 | element type of the returned value. |
T1 | element type of the input value. |
src0 | the source operand. |
Definition at line 142 of file math.hpp.
References sycl::_V1::ext::intel::esimd::src0.
__ESIMD_API 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 1298 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::math::rsqrt(), sycl::_V1::ext::intel::esimd::simd< T, SZ >(), and sycl::_V1::ext::intel::experimental::esimd::src0.
Referenced by sycl::_V1::ext::intel::experimental::esimd::acos(), and sycl::_V1::ext::intel::experimental::esimd::asin().
__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 1325 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::acos(), and sycl::_V1::ext::intel::experimental::esimd::src0.
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::addc | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | carry, |
sycl::ext::intel::esimd::simd< uint32_t, N > | src0, | ||
sycl::ext::intel::esimd::simd< uint32_t, N > | src1 | ||
) |
Performs add with carry of 2 unsigned 32-bit vectors.
N | size of the vectors |
carry | vector that is going to hold resulting carry flag |
src0 | first term |
src1 | second term |
carry
parameter Definition at line 1187 of file math.hpp.
References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
Referenced by sycl::_V1::ext::intel::esimd::addc().
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::addc | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | carry, |
sycl::ext::intel::esimd::simd< uint32_t, N > | src0, | ||
uint32_t | src1 | ||
) |
Performs add with carry of a unsigned 32-bit vector and scalar.
N | size of the vectors |
carry | vector that is going to hold resulting carry flag |
src0 | first term |
src1 | second term |
carry
parameter Definition at line 1205 of file math.hpp.
References sycl::_V1::ext::intel::esimd::addc(), sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::addc | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | carry, |
uint32_t | src0, | ||
sycl::ext::intel::esimd::simd< uint32_t, N > | src1 | ||
) |
Performs add with carry of a unsigned 32-bit scalar and vector.
N | size of the vectors |
carry | vector that is going to hold resulting carry flag |
src0 | first term |
src1 | second term |
carry
parameter Definition at line 1219 of file math.hpp.
References sycl::_V1::ext::intel::esimd::addc(), sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
__ESIMD_API uint32_t sycl::_V1::ext::intel::esimd::addc | ( | uint32_t & | carry, |
uint32_t | src0, | ||
uint32_t | src1 | ||
) |
Performs add with carry of a unsigned 32-bit scalars.
N | size of the vectors |
carry | scalar that is going to hold resulting carry flag |
src0 | first term |
src1 | second term |
carry
parameter Definition at line 1231 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED().
__ESIMD_API 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 1336 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::experimental::esimd::acos(), sycl::_V1::ext::intel::esimd::simd< T, SZ >(), and sycl::_V1::ext::intel::experimental::esimd::src0.
Referenced by sycl::_V1::ext::intel::experimental::esimd::asin().
__ESIMD_API std::enable_if_t<std::is_floating_point<T>::value, T> sycl::_V1::ext::intel::experimental::esimd::asin | ( | T | src0 | ) |
Definition at line 1347 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::asin(), and sycl::_V1::ext::intel::experimental::esimd::src0.
ESIMD_DETAIL __ESIMD_API 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 1254 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::math::inv(), sycl::_V1::ext::intel::esimd::simd< T, SZ >(), and sycl::_V1::ext::intel::experimental::esimd::src0.
Referenced by sycl::_V1::ext::intel::experimental::esimd::atan(), and sycl::_V1::ext::intel::experimental::esimd::atan2().
__ESIMD_API T sycl::_V1::ext::intel::experimental::esimd::atan | ( | T | src0 | ) |
Definition at line 1285 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::atan(), and sycl::_V1::ext::intel::experimental::esimd::src0.
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::atan2 | ( | float | y, |
float | x | ||
) |
Definition at line 1469 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 | ( | sycl::ext::intel::esimd::simd< float, N > | y, |
sycl::ext::intel::esimd::simd< float, N > | x | ||
) |
Definition at line 1446 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), and sycl::_V1::ext::intel::experimental::esimd::atan().
Referenced by sycl::_V1::ext::oneapi::experimental::acos(), sycl::_V1::ext::oneapi::experimental::acosh(), sycl::_V1::ext::oneapi::experimental::arg(), sycl::_V1::ext::oneapi::experimental::asinh(), sycl::_V1::ext::intel::experimental::esimd::atan2(), sycl::_V1::ext::intel::experimental::esimd::atan2_fast(), and sycl::_V1::ext::oneapi::experimental::atanh().
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 1436 of file math.hpp.
References 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_fast | ( | sycl::ext::intel::esimd::simd< float, N > | y, |
sycl::ext::intel::esimd::simd< float, N > | x | ||
) |
Definition at line 1414 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::experimental::esimd::atan2(), and sycl::_V1::r.
Referenced by sycl::_V1::ext::intel::experimental::esimd::atan2_fast().
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 | ) |
Definition at line 1552 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::cos_emu().
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 1547 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::sin_emu().
Referenced by sycl::_V1::ext::intel::experimental::esimd::cos_emu().
float sycl::_V1::ext::intel::experimental::esimd::cos_emu | ( | T | x | ) |
__ESIMD_API 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. |
Definition at line 683 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::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::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. |
Definition at line 642 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__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. |
Definition at line 662 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API 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_API 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_API 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_API 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 1499 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::fmod().
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 1479 of file math.hpp.
References sycl::_V1::ext::intel::esimd::abs().
Referenced by sycl::_V1::ext::intel::experimental::esimd::fmod(), and sycl::_V1::ext::intel::experimental::esimd::sin_emu().
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. |
Definition at line 1064 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0.
__ESIMD_API T sycl::_V1::ext::intel::experimental::esimd::frc | ( | T | src0 | ) |
Performs truncate-to-minus-infinity fraction operation of src0
.
(scalar version)
T | element type of the input src0 and returned value. |
src0 | the input scalar value. |
Definition at line 1074 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::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_API sycl::ext::intel::esimd::simd<T, N> sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T, N > & | rmd, |
sycl::ext::intel::esimd::simd< T0, N > | src0, | ||
sycl::ext::intel::esimd::simd< T1, N > | src1 | ||
) |
Computes the 64-bit multiply result of two 32-bit integer vectors src0
and src1
.
The result is returned in two separate 32-bit vectors. The low 32-bit parts of the result are written to the output parameter rmd
and the upper parts of the result are returned from the function.
Definition at line 448 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_dword_type<T1>::value, sycl::ext::intel::esimd::simd<T, N> > sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T, N > & | rmd, |
sycl::ext::intel::esimd::simd< T0, N > | src0, | ||
T1 | src1 | ||
) |
Computes the 64-bit multiply result of 32-bit integer vector src0
and 32-bit integer scalar src1
.
The result is returned in two separate 32-bit vectors. The low 32-bit parts of the result is written to the output parameter rmd
and the upper part of the results is returned from the function.
Definition at line 462 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_dword_type<T0>::value, sycl::ext::intel::esimd::simd<T, N> > sycl::_V1::ext::intel::experimental::esimd::imul | ( | sycl::ext::intel::esimd::simd< T, N > & | rmd, |
T0 | src0, | ||
sycl::ext::intel::esimd::simd< T1, N > | src1 | ||
) |
Computes the 64-bit multiply result of a scalar 32-bit integer src0
and 32-bit integer vector src1
.
The result is returned in two separate 32-bit vectors. The low 32-bit parts of the result is written to the output parameter rmd
and the upper part of the results is returned from the function.
Definition at line 475 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_dword_type<T>::value && __ESIMD_DNS::is_dword_type<T0>::value && __ESIMD_DNS::is_dword_type<T1>::value, T> sycl::_V1::ext::intel::experimental::esimd::imul | ( | T & | rmd, |
T0 | src0, | ||
T1 | src1 | ||
) |
Computes the 64-bit multiply result of two scalar 32-bit integer values src0
and src1
.
The result is returned in two separate 32-bit scalars. The low 32-bit part of the result is written to the output parameter rmd
and the upper part of the result is returned from the function.
Definition at line 489 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API sycl::ext::intel::esimd::simd<T, N> sycl::_V1::ext::intel::experimental::esimd::imul_impl | ( | sycl::ext::intel::esimd::simd< T, N > & | rmd, |
sycl::ext::intel::esimd::simd< T0, N > | src0, | ||
sycl::ext::intel::esimd::simd< T1, N > | src1 | ||
) |
Computes the 64-bit result of two 32-bit element vectors src0
and src1
multiplication.
The result is returned in two separate 32-bit vectors. The low 32-bit parts of the results are written to the output parameter rmd
and the upper parts of the results are returned from the function.
Definition at line 415 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API 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_API 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_API 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_API 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 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. |
Definition at line 608 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__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)
T0 | element type of the dividend src0 and returned value. |
T1 | element type of the divisor src1 . |
src0 | the dividend. |
src1 | the divisor. |
Definition at line 625 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::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. |
Definition at line 576 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__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)
T0 | element type of the dividend src0 and returned value. |
T1 | element type of the divisor src1 . |
src0 | the dividend. |
src1 | the divisor. |
Definition at line 593 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API uint64_t sycl::_V1::ext::intel::esimd::rdtsc | ( | ) |
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:
0
if src
[i] is less than 0
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_API sycl::_V1::ext::intel::esimd::simd< T, SZ > | ( | max | ) |
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. |
__ESIMD_API sycl::_V1::ext::intel::esimd::simd< T, SZ > | ( | min | ) |
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. |
Referenced by sycl::_V1::ext::intel::experimental::esimd::acos(), sycl::_V1::ext::intel::experimental::esimd::asin(), and sycl::_V1::ext::intel::experimental::esimd::atan().
ESIMD_INLINE float sycl::_V1::ext::intel::experimental::esimd::sin_emu | ( | float | x0 | ) |
Definition at line 1540 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::sin_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 1506 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::fmod().
Referenced by sycl::_V1::ext::intel::experimental::esimd::cos_emu(), and sycl::_V1::ext::intel::experimental::esimd::sin_emu().
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 sycl::ext::intel::esimd::simd<sycl::half, N> sycl::_V1::ext::intel::experimental::esimd::srnd | ( | sycl::ext::intel::esimd::simd< float, N > | src0, |
sycl::ext::intel::esimd::simd< uint16_t, N > | src1 | ||
) |
srnd - perform stochastic rounding.
Supported conversions: float -> half Available on PVC_XT+
src0 | the operand to be rounded |
src1 | random number used for rounding |
Definition at line 1677 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0, and sycl::_V1::ext::intel::experimental::esimd::src1.
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::subb | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | borrow, |
sycl::ext::intel::esimd::simd< uint32_t, N > | src0, | ||
sycl::ext::intel::esimd::simd< uint32_t, N > | src1 | ||
) |
Performs substraction with borrow of 2 unsigned 32-bit vectors.
N | size of the vectors |
borrow | vector that is going to hold resulting borrow flag |
src0 | first term |
src1 | second term |
borrow
parameter Definition at line 1249 of file math.hpp.
References sycl::_V1::ext::intel::esimd::src0, and sycl::_V1::ext::intel::esimd::src1.
Referenced by sycl::_V1::ext::intel::esimd::subb().
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::subb | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | borrow, |
sycl::ext::intel::esimd::simd< uint32_t, N > | src0, | ||
uint32_t | src1 | ||
) |
Performs substraction with borrow of unsigned 32-bit vector and scalar.
N | size of the vectors |
borrow | vector that is going to hold resulting borrow flag |
src0 | first term |
src1 | second term |
borrow
parameter Definition at line 1268 of file math.hpp.
References sycl::_V1::ext::intel::esimd::src0, sycl::_V1::ext::intel::esimd::src1, and sycl::_V1::ext::intel::esimd::subb().
__ESIMD_API sycl::ext::intel::esimd::simd<uint32_t, N> sycl::_V1::ext::intel::esimd::subb | ( | sycl::ext::intel::esimd::simd< uint32_t, N > & | borrow, |
uint32_t | src0, | ||
sycl::ext::intel::esimd::simd< uint32_t, N > | src1 | ||
) |
Performs substraction with borrow of unsigned 32-bit scalar and vector.
N | size of the vectors |
borrow | vector that is going to hold resulting borrow flag |
src0 | first term |
src1 | second term |
borrow
parameter Definition at line 1283 of file math.hpp.
References sycl::_V1::ext::intel::esimd::src0, sycl::_V1::ext::intel::esimd::src1, and sycl::_V1::ext::intel::esimd::subb().
__ESIMD_API uint32_t sycl::_V1::ext::intel::esimd::subb | ( | uint32_t & | borrow, |
uint32_t | src0, | ||
uint32_t | src1 | ||
) |
Performs substraction with borrow of 2 unsigned 32-bit scalars.
N | size of the vectors |
borrow | scalar that is going to hold resulting borrow flag |
src0 | first term |
src1 | second term |
borrow
parameter Definition at line 1296 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED().
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 | ) |
sycl::ext::intel::esimd::simd<float, N> sycl::_V1::ext::intel::experimental::esimd::tanh_cody_waite | ( | sycl::ext::intel::esimd::simd< float, N > | x | ) |
__ESIMD_API SZ sycl::_V1::ext::intel::esimd::src0 |
Definition at line 180 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::abs(), sycl::_V1::ext::intel::esimd::addc(), sycl::_V1::ext::intel::esimd::atomic_update(), sycl::_V1::ext::intel::esimd::detail::atomic_update_impl(), sycl::_V1::ext::intel::esimd::bfn(), sycl::_V1::ext::intel::esimd::pack_mask(), sycl::_V1::ext::intel::esimd::slm_atomic_update(), sycl::_V1::ext::intel::esimd::detail::slm_atomic_update_impl(), sycl::_V1::ext::intel::esimd::subb(), and sycl::_V1::ext::intel::esimd::unpack_mask().
uint32_t sycl::_V1::ext::intel::experimental::esimd::src0 |
Definition at line 528 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED(), 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::bf_extract(), sycl::_V1::ext::intel::experimental::esimd::bf_insert(), sycl::_V1::ext::intel::experimental::esimd::bf_reverse(), sycl::_V1::ext::intel::experimental::esimd::div(), sycl::_V1::ext::intel::experimental::esimd::frc(), sycl::_V1::ext::intel::experimental::esimd::imul(), sycl::_V1::ext::intel::experimental::esimd::imul_impl(), sycl::_V1::ext::intel::experimental::esimd::lsc_atomic_update(), sycl::_V1::ext::intel::experimental::esimd::lsc_slm_atomic_update(), sycl::_V1::ext::intel::experimental::esimd::mod(), sycl::_V1::ext::intel::experimental::esimd::quot(), sycl::_V1::ext::intel::experimental::esimd::rol(), sycl::_V1::ext::intel::experimental::esimd::ror(), and sycl::_V1::ext::intel::experimental::esimd::srnd().
Definition at line 180 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::addc(), sycl::_V1::ext::intel::esimd::atomic_update(), sycl::_V1::ext::intel::esimd::detail::atomic_update_impl(), sycl::_V1::ext::intel::esimd::bfn(), sycl::_V1::ext::intel::esimd::slm_atomic_update(), sycl::_V1::ext::intel::esimd::detail::slm_atomic_update_impl(), and sycl::_V1::ext::intel::esimd::subb().
uint32_t uint32_t sycl::_V1::ext::intel::experimental::esimd::src1 |
Definition at line 528 of file math.hpp.
Referenced by sycl::_V1::ext::intel::experimental::esimd::__SYCL_DEPRECATED(), sycl::_V1::ext::intel::experimental::esimd::bf_extract(), sycl::_V1::ext::intel::experimental::esimd::bf_insert(), sycl::_V1::ext::intel::experimental::esimd::div(), sycl::_V1::ext::intel::experimental::esimd::imul(), sycl::_V1::ext::intel::experimental::esimd::imul_impl(), sycl::_V1::ext::intel::experimental::esimd::lsc_atomic_update(), sycl::_V1::ext::intel::experimental::esimd::lsc_slm_atomic_update(), sycl::_V1::ext::intel::experimental::esimd::mod(), sycl::_V1::ext::intel::experimental::esimd::quot(), sycl::_V1::ext::intel::experimental::esimd::rol(), sycl::_V1::ext::intel::experimental::esimd::ror(), and sycl::_V1::ext::intel::experimental::esimd::srnd().
Definition at line 211 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::detail::reduce(), and sycl::_V1::ext::intel::esimd::detail::reduce_single().