Functions | |
template<int N> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<(N==8||N==16||N==32), uint > | sycl::_V1::ext::intel::esimd::pack_mask (simd_mask< N > src0) |
Pack a simd_mask into a single unsigned 32-bit integer value. More... | |
template<int N> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<(N==8||N==16||N==32), simd_mask< N > > | sycl::_V1::ext::intel::esimd::unpack_mask (uint src0) |
Unpack an unsigned 32-bit integer value into a simd_mask. More... | |
template<typename T , int N> | |
__ESIMD_API std::enable_if_t<(std::is_same_v< T, ushort >||std::is_same_v< T, uint >)&&(N > 0 &&N<=32), uint > | sycl::_V1::ext::intel::esimd::ballot (simd< T, N > mask) |
Compare source vector elements against zero and return a bitfield combining the comparison result. More... | |
template<typename T , int N> | |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_integral< T >::value &&(sizeof(T)<=4), simd< uint32_t, N > > | sycl::_V1::ext::intel::esimd::cbit (simd< T, N > src) |
Count number of bits set in the source operand per element. More... | |
template<typename T > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&(sizeof(T)<=4), uint32_t > | sycl::_V1::ext::intel::esimd::cbit (T src) |
Scalar version of cbit - both input and output are scalars rather than vectors. More... | |
template<typename BaseTy , typename RegionTy > | |
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view< BaseTy, RegionTy >::element_type >::value &&(sizeof(typename simd_view< BaseTy, RegionTy >::element_type)<=4) &&(simd_view< BaseTy, RegionTy >::length==1), uint32_t > | sycl::_V1::ext::intel::esimd::cbit (simd_view< BaseTy, RegionTy > src) |
Scalar version of cbit , that takes simd_view object as an argument, e.g. More... | |
template<typename T , int N> | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&(sizeof(T)==4), simd< T, N > > | sycl::_V1::ext::intel::esimd::fbl (simd< T, N > src) |
Find the per element number of the first bit set in the source operand starting from the least significant bit. More... | |
template<typename T > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&(sizeof(T)==4), T > | sycl::_V1::ext::intel::esimd::fbl (T src) |
Scalar version of fbl - both input and output are scalars rather than vectors. More... | |
template<typename BaseTy , typename RegionTy > | |
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view< BaseTy, RegionTy >::element_type >::value &&(sizeof(typename simd_view< BaseTy, RegionTy >::element_type)==4) &&(simd_view< BaseTy, RegionTy >::length==1), typename simd_view< BaseTy, RegionTy >::element_type > | sycl::_V1::ext::intel::esimd::fbl (simd_view< BaseTy, RegionTy > src) |
Scalar version of fbl , that takes simd_view object as an argument, e.g. More... | |
template<typename T , int N> | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&std::is_signed< T >::value &&(sizeof(T)==4), simd< T, N > > | sycl::_V1::ext::intel::esimd::fbh (simd< T, N > src) |
Find the per element number of the first bit set in the source operand starting from the most significant bit (sign bit is skipped). More... | |
template<typename T > | |
__ESIMD_API std::enable_if_t< std::is_integral< T >::value &&(sizeof(T)==4), T > | sycl::_V1::ext::intel::esimd::fbh (T src) |
Scalar version of fbh - both input and output are scalars rather than vectors. More... | |
template<typename BaseTy , typename RegionTy > | |
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view< BaseTy, RegionTy >::element_type >::value &&(sizeof(typename simd_view< BaseTy, RegionTy >::element_type)==4) &&(simd_view< BaseTy, RegionTy >::length==1), typename simd_view< BaseTy, RegionTy >::element_type > | sycl::_V1::ext::intel::esimd::fbh (simd_view< BaseTy, RegionTy > src) |
Scalar version of fbh , that takes simd_view object as an argument, e.g. 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< std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::shl (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Shift left operation (vector version) More... | |
template<typename T0 , typename T1 , typename T2 , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< T2 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::shl (T1 src0, T2 src1, Sat sat={}) |
Shift left operation (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< std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::lsr (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Logical Shift Right (vector version) More... | |
template<typename T0 , typename T1 , typename T2 , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< T2 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::lsr (T1 src0, T2 src1, Sat sat={}) |
Logical Shift Right (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< std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::asr (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Arithmetical Shift Right (vector version) More... | |
template<typename T0 , typename T1 , typename T2 , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< T2 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::asr (T1 src0, T2 src1, Sat sat={}) |
Arithmetical Shift Right (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< std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< U >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::shr (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1, Sat sat={}) |
Shift right operation (vector version) More... | |
template<typename T0 , typename T1 , typename T2 , class Sat = sycl::ext::intel::esimd::saturation_off_tag> | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&std::is_integral< T0 >::value &&std::is_integral< T1 >::value &&std::is_integral< T2 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::shr (T1 src0, T2 src1, Sat sat={}) |
Shift right operation (scalar version) More... | |
template<typename T0 , typename T1 , int SZ> | |
__ESIMD_API std::enable_if_t< sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::rol (sycl::ext::intel::esimd::simd< T1, SZ > src0, sycl::ext::intel::esimd::simd< T1, SZ > src1) |
Rotate left operation with two vector inputs. More... | |
template<typename T0 , typename T1 , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< U, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::rol (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1) |
Rotate left operation with a vector and a scalar inputs. More... | |
template<typename T0 , typename T1 , typename T2 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T2, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::rol (T1 src0, T2 src1) |
Rotate left operation with two scalar inputs. More... | |
template<typename T0 , typename T1 , int SZ> | |
__ESIMD_API std::enable_if_t< sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::ror (sycl::ext::intel::esimd::simd< T1, SZ > src0, sycl::ext::intel::esimd::simd< T1, SZ > src1) |
Rotate right operation with two vector inputs. More... | |
template<typename T0 , typename T1 , int SZ, typename U > | |
__ESIMD_API std::enable_if_t< sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< U, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::ror (sycl::ext::intel::esimd::simd< T1, SZ > src0, U src1) |
Rotate right operation with a vector and a scalar inputs. More... | |
template<typename T0 , typename T1 , typename T2 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T1 >::value &&__ESIMD_DNS::is_esimd_scalar< T2 >::value &&sycl::ext::intel::esimd::detail::is_type< T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >) &&sycl::ext::intel::esimd::detail::is_type< T2, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t >), std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::ror (T1 src0, T2 src1) |
Rotate right operation with two scalar inputs. More... | |
template<typename T0 , typename T1 , int SZ> | |
__ESIMD_API sycl::ext::intel::esimd::simd< T0, SZ > | sycl::_V1::ext::intel::experimental::esimd::bf_reverse (sycl::ext::intel::esimd::simd< T1, SZ > src0) |
bf_reverse 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::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::bf_reverse (T1 src0) |
bf_reverse More... | |
template<typename T0 , typename T1 , int SZ, typename U , typename V , typename W > | |
__ESIMD_API std::enable_if_t< std::is_integral< T1 >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::bf_insert (U src0, V src1, W src2, sycl::ext::intel::esimd::simd< T1, SZ > src3) |
bf_insert More... | |
template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T4 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::bf_insert (T1 src0, T2 src1, T3 src2, T4 src3) |
bf_insert More... | |
template<typename T0 , typename T1 , int SZ, typename U , typename V > | |
__ESIMD_API std::enable_if_t< std::is_integral< T1 >::value, sycl::ext::intel::esimd::simd< T0, SZ > > | sycl::_V1::ext::intel::experimental::esimd::bf_extract (U src0, V src1, sycl::ext::intel::esimd::simd< T1, SZ > src2) |
bf_extract More... | |
template<typename T0 , typename T1 , typename T2 , typename T3 > | |
__ESIMD_API std::enable_if_t< __ESIMD_DNS::is_esimd_scalar< T0 >::value &&__ESIMD_DNS::is_esimd_scalar< T3 >::value, std::remove_const_t< T0 > > | sycl::_V1::ext::intel::experimental::esimd::bf_extract (T1 src0, T2 src1, T3 src2) |
bf_extract More... | |
__ESIMD_API std::enable_if_t<std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::asr | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Arithmetical Shift Right (vector version)
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && __ESIMD_DNS::is_esimd_scalar<T2>::value && std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<T2>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::asr | ( | T1 | src0, |
T2 | src1, | ||
Sat | sat = {} |
||
) |
Arithmetical Shift Right (scalar version)
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value src0 . Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<(std::is_same_v<T, ushort> || std::is_same_v<T, uint>)&&(N > 0 && N <= 32), uint> sycl::_V1::ext::intel::esimd::ballot | ( | simd< T, N > | mask | ) |
Compare source vector elements against zero and return a bitfield combining the comparison result.
The representative bit in the result is set if corresponding source vector element is non-zero, and is unset otherwise.
mask | the source operand to be compared with zero. |
uint
, where each bit is set if the corresponding element of the source operand is non-zero and unset otherwise. Definition at line 684 of file math.hpp.
References simd_mask< _Tp, _Abi >::data().
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T3>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::bf_extract | ( | T1 | src0, |
T2 | src1, | ||
T3 | src2 | ||
) |
bf_extract
Definition at line 1226 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<T1>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::bf_extract | ( | U | src0, |
V | src1, | ||
sycl::ext::intel::esimd::simd< T1, SZ > | src2 | ||
) |
bf_extract
Definition at line 1210 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<T4>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::bf_insert | ( | T1 | src0, |
T2 | src1, | ||
T3 | src2, | ||
T4 | src3 | ||
) |
bf_insert
Definition at line 1200 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<T1>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::bf_insert | ( | U | src0, |
V | src1, | ||
W | src2, | ||
sycl::ext::intel::esimd::simd< T1, SZ > | src3 | ||
) |
bf_insert
Definition at line 1183 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<T0, SZ> sycl::_V1::ext::intel::experimental::esimd::bf_reverse | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0 | ) |
bf_reverse
Definition at line 1163 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0.
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::bf_reverse | ( | T1 | src0 | ) |
bf_reverse
Definition at line 1173 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0.
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t< std::is_integral<T>::value && (sizeof(T) <= 4), simd<uint32_t, N> > sycl::_V1::ext::intel::esimd::cbit | ( | simd< T, N > | src | ) |
Count number of bits set in the source operand per element.
src0 | the source operand to count bits in. |
uint32_t
, where each element is set to bit count of the corresponding element of the source operand. Definition at line 703 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::cbit().
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view<BaseTy, RegionTy>::element_type>::value && (sizeof(typename simd_view<BaseTy, RegionTy>::element_type) <= 4) && (simd_view<BaseTy, RegionTy>::length == 1), uint32_t> sycl::_V1::ext::intel::esimd::cbit | ( | simd_view< BaseTy, RegionTy > | src | ) |
Scalar version of cbit
, that takes simd_view object as an argument, e.g.
cbit(v[0])
.
src0 | input simd_view object of size 1. |
Definition at line 729 of file math.hpp.
References sycl::_V1::ext::intel::esimd::cbit().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && (sizeof(T) <= 4), uint32_t> sycl::_V1::ext::intel::esimd::cbit | ( | T | src | ) |
Scalar version of cbit
- both input and output are scalars rather than vectors.
Definition at line 712 of file math.hpp.
References sycl::_V1::ext::intel::esimd::cbit().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && std::is_signed<T>::value && (sizeof(T) == 4), simd<T, N> > sycl::_V1::ext::intel::esimd::fbh | ( | simd< T, N > | src | ) |
Find the per element number of the first bit set in the source operand starting from the most significant bit (sign bit is skipped).
src0 | the source operand to count bits in. |
0xFFFFffff
is returned for an element equal to 0
or -1
. Definition at line 790 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::fbh().
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view<BaseTy, RegionTy>::element_type>::value && (sizeof(typename simd_view<BaseTy, RegionTy>::element_type) == 4) && (simd_view<BaseTy, RegionTy>::length == 1), typename simd_view<BaseTy, RegionTy>::element_type> sycl::_V1::ext::intel::esimd::fbh | ( | simd_view< BaseTy, RegionTy > | src | ) |
Scalar version of fbh
, that takes simd_view object as an argument, e.g.
fbh(v[0])
.
src0 | input simd_view object of size 1. |
Definition at line 830 of file math.hpp.
References sycl::_V1::ext::intel::esimd::fbh().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && (sizeof(T) == 4), T> sycl::_V1::ext::intel::esimd::fbh | ( | T | src | ) |
Scalar version of fbh
- both input and output are scalars rather than vectors.
Definition at line 812 of file math.hpp.
References sycl::_V1::ext::intel::esimd::fbh().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && (sizeof(T) == 4), simd<T, N> > sycl::_V1::ext::intel::esimd::fbl | ( | simd< T, N > | src | ) |
Find the per element number of the first bit set in the source operand starting from the least significant bit.
src0 | the source operand to count bits in. |
0xFFFFffff
is returned for an element equal to 0
. Find component-wise the first bit from LSB side Definition at line 746 of file math.hpp.
Referenced by sycl::_V1::ext::intel::esimd::fbl().
__ESIMD_API std::enable_if_t< std::is_integral< typename simd_view<BaseTy, RegionTy>::element_type>::value && (sizeof(typename simd_view<BaseTy, RegionTy>::element_type) == 4) && (simd_view<BaseTy, RegionTy>::length == 1), typename simd_view<BaseTy, RegionTy>::element_type> sycl::_V1::ext::intel::esimd::fbl | ( | simd_view< BaseTy, RegionTy > | src | ) |
Scalar version of fbl
, that takes simd_view object as an argument, e.g.
fbl(v[0])
.
src0 | input simd_view object of size 1. |
Definition at line 772 of file math.hpp.
References sycl::_V1::ext::intel::esimd::fbl().
__ESIMD_API std::enable_if_t<std::is_integral<T>::value && (sizeof(T) == 4), T> sycl::_V1::ext::intel::esimd::fbl | ( | T | src | ) |
Scalar version of fbl
- both input and output are scalars rather than vectors.
Definition at line 754 of file math.hpp.
References sycl::_V1::ext::intel::esimd::fbl().
__ESIMD_API std::enable_if_t<std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::lsr | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Logical Shift Right (vector version)
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && __ESIMD_DNS::is_esimd_scalar<T2>::value && std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<T2>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::lsr | ( | T1 | src0, |
T2 | src1, | ||
Sat | sat = {} |
||
) |
Logical Shift Right (scalar version)
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value src0 . Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<(N == 8 || N == 16 || N == 32), uint> sycl::_V1::ext::intel::esimd::pack_mask | ( | simd_mask< N > | src0 | ) |
Pack a simd_mask into a single unsigned 32-bit integer value.
i'th bit in the returned value is set to the result of comparison of the i'th element of the input argument to zero. "equals to zero" gives 0
, "not equal to zero" gives 1
. Remaining (if any) bits if the result are filled with 0
.
N | Size of the input mask. |
src0 | The input mask. |
unsgined int
32-bit value. Definition at line 646 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0.
Referenced by sycl::_V1::ext::intel::esimd::pack_mask().
__ESIMD_API std::enable_if_t< sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::rol | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
sycl::ext::intel::esimd::simd< T1, SZ > | src1 | ||
) |
Rotate left operation with two vector inputs.
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the vector with number of bit positions by which the elements of the input vector src0 shall be rotated. |
Definition at line 287 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< sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<U, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::rol | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1 | ||
) |
Rotate left operation with a vector and a scalar inputs.
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be rotated. |
Definition at line 308 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 && __ESIMD_DNS::is_esimd_scalar<T2>::value && sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T2, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::rol | ( | T1 | src0, |
T2 | src1 | ||
) |
Rotate left operation with two scalar inputs.
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value. Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be rotated. |
Definition at line 332 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< sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::ror | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
sycl::ext::intel::esimd::simd< T1, SZ > | src1 | ||
) |
Rotate right operation with two vector inputs.
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
src0 | the input vector. |
src1 | the vector with number of bit positions by which the elements of the input vector src0 shall be rotated. |
Definition at line 353 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< sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<U, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::ror | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1 | ||
) |
Rotate right operation with a vector and a scalar inputs.
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vectors. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be rotated. |
Definition at line 374 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 && __ESIMD_DNS::is_esimd_scalar<T2>::value && sycl::ext::intel::esimd::detail::is_type<T0, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T1, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>) && sycl::ext::intel::esimd::detail::is_type<T2, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t>), std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::ror | ( | T1 | src0, |
T2 | src1 | ||
) |
Rotate right operation with two scalar inputs.
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value. Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be rotated. |
Definition at line 398 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<T0>::value && std::is_integral<T1>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::shl | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Shift left operation (vector version)
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vector. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && __ESIMD_DNS::is_esimd_scalar<T2>::value && std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<T2>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::shl | ( | T1 | src0, |
T2 | src1, | ||
Sat | sat = {} |
||
) |
Shift left operation (scalar version)
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value. Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<U>::value, sycl::ext::intel::esimd::simd<T0, SZ> > sycl::_V1::ext::intel::experimental::esimd::shr | ( | sycl::ext::intel::esimd::simd< T1, SZ > | src0, |
U | src1, | ||
Sat | sat = {} |
||
) |
Shift right operation (vector version)
T0 | element type of the returned vector. Must be any integer type. |
T1 | element type of the input vector. Must be any integer type. |
SZ | size of the input and returned vector. |
U | type of scalar operand src1 . Must be any integer type. |
src0 | the input vector. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
__ESIMD_API std::enable_if_t<__ESIMD_DNS::is_esimd_scalar<T0>::value && __ESIMD_DNS::is_esimd_scalar<T1>::value && __ESIMD_DNS::is_esimd_scalar<T2>::value && std::is_integral<T0>::value && std::is_integral<T1>::value && std::is_integral<T2>::value, std::remove_const_t<T0> > sycl::_V1::ext::intel::experimental::esimd::shr | ( | T1 | src0, |
T2 | src1, | ||
Sat | sat = {} |
||
) |
Shift right operation (scalar version)
T0 | element type of the returned value. Must be any integer type. |
T1 | element type of the input value. Must be any integer type. |
T2 | type of scalar operand src1 . Must be any integer type. |
src0 | the input value. |
src1 | the number of bit positions the input vector shall be shifted. |
sat | enables/disables the saturation (off by default). Possible values: saturation_on/saturation_off. |
ESIMD_NODEBUG ESIMD_INLINE std::enable_if_t<(N == 8 || N == 16 || N == 32), simd_mask<N> > sycl::_V1::ext::intel::esimd::unpack_mask | ( | uint | src0 | ) |
Unpack an unsigned 32-bit integer value into a simd_mask.
Only N
least significant bits are used, where N
is the number of elements in the result mask. Each input bit is stored into the corresponding vector element of the output mask.
N | Size of the output mask. |
src0 | The input packed mask. |
Definition at line 660 of file math.hpp.
References sycl::_V1::ext::intel::experimental::esimd::src0.