DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::ext::intel::esimd::detail Namespace Reference

Classes

struct  is_saturation_tag
 
class  simd_mask_impl
 This class is a simd_obj_impl specialization representing a simd mask, which is basically a simd_obj_impl with fixed element type and limited set of APIs. More...
 
class  simd_obj_impl
 This is a base class for all ESIMD simd classes with real storage (simd, simd_mask_impl). More...
 
class  simd_view_impl
 Base class for "simd view" types. More...
 
struct  esimd_apply_sum
 
struct  esimd_apply_prod
 
struct  esimd_apply_reduced_max
 
struct  esimd_apply_reduced_min
 

Functions

constexpr ESIMD_INLINE bool isPowerOf2 (unsigned int n)
 Check if a given 32 bit positive integer is a power of 2 at compile time. More...
 
constexpr ESIMD_INLINE bool isPowerOf2 (unsigned int n, unsigned int limit)
 Check at compile time if given 32 bit positive integer is both: More...
 
template<sycl::ext::intel::esimd::native::lsc::atomic_op Op>
constexpr int get_num_args ()
 
template<sycl::ext::intel::esimd::atomic_op Op>
constexpr bool has_lsc_equivalent ()
 
template<sycl::ext::intel::esimd::atomic_op Op>
constexpr sycl::ext::intel::esimd::native::lsc::atomic_op to_lsc_atomic_op ()
 
template<sycl::ext::intel::esimd::native::lsc::atomic_op Op>
constexpr sycl::ext::intel::esimd::atomic_op to_atomic_op ()
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator^ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator^ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator^ (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator| (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator| (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator| (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator& (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator& (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto operator& (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator% (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator% (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator% (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator<< (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator<< (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator<< (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator>> (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator>> (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator>> (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator+ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator+ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator+ (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator- (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator- (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator- (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator* (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator* (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator* (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator/ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &RHS)
 
template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator/ (const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &LHS, T2 RHS)
 
template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto operator/ (T1 LHS, const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &RHS)
 
 __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP (<, CmpOp::lt, __ESIMD_DNS::is_simd_type_v< SimdTx >) __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP(>
 
__ESIMD_DNS::is_simd_type_v< SimdTx > __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP (<=, CmpOp::lte, __ESIMD_DNS::is_simd_type_v< SimdTx >) __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP(>
 
template<typename T0 , typename T1 , int SZ, template< typename RT, typename T, int N > class OpType>
T0 reduce_single (simd< T1, SZ > v)
 
template<typename T0 , typename T1 , int N1, int N2, template< typename RT, typename T, int N > class OpType>
T0 reduce_pair (simd< T1, N1 > v1, simd< T1, N2 > v2)
 
template<typename T0 , typename T1 , int SZ, template< typename RT, typename T, int N > class OpType>
T0 reduce (simd< T1, SZ > v)
 
template<typename T0 , typename T1 , int SZ>
ESIMD_INLINE ESIMD_NODEBUG T0 sum (simd< T1, SZ > v)
 
template<typename T0 , typename T1 , int SZ>
ESIMD_INLINE ESIMD_NODEBUG T0 prod (simd< T1, SZ > v)
 
template<rgba_channel_mask M>
static void validate_rgba_write_channel_mask ()
 
template<sycl::ext::intel::esimd::atomic_op Op, typename T , int N, unsigned NumSrc>
constexpr void check_atomic ()
 Check the legality of an atomic call in terms of size and type. More...
 

Variables

template<class T >
constexpr bool is_saturation_tag_v = is_saturation_tag<T>::value
 
template<rgba_channel Ch>
static constexpr uint8_t ch = 1 << static_cast<int>(Ch)
 
static constexpr uint8_t chR = ch<rgba_channel::R>
 
static constexpr uint8_t chG = ch<rgba_channel::G>
 
static constexpr uint8_t chB = ch<rgba_channel::B>
 
static constexpr uint8_t chA = ch<rgba_channel::A>
 
static constexpr SurfaceIndex SLM_BTI = 254
 
static constexpr SurfaceIndex INVALID_BTI
 

Function Documentation

◆ __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP() [1/2]

sycl::_V1::ext::intel::esimd::detail::__ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP ( )

◆ __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP() [2/2]

__ESIMD_DNS::is_simd_type_v<SimdTx> sycl::_V1::ext::intel::esimd::detail::__ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP ( <=  ,
CmpOp::lte  ,
__ESIMD_DNS::is_simd_type_v< SimdTx >   
)

◆ check_atomic()

template<sycl::ext::intel::esimd::atomic_op Op, typename T , int N, unsigned NumSrc>
constexpr void sycl::_V1::ext::intel::esimd::detail::check_atomic ( )
constexpr

Check the legality of an atomic call in terms of size and type.

Definition at line 706 of file memory.hpp.

References sycl::_V1::detail::device_global_map::add(), sycl::_V1::dec, sycl::_V1::ext::oneapi::fmax(), sycl::_V1::ext::oneapi::fmin(), isPowerOf2(), max(), and min().

◆ get_num_args()

template<sycl::ext::intel::esimd::native::lsc::atomic_op Op>
constexpr int sycl::_V1::ext::intel::esimd::detail::get_num_args ( )
constexpr

◆ has_lsc_equivalent()

template<sycl::ext::intel::esimd::atomic_op Op>
constexpr bool sycl::_V1::ext::intel::esimd::detail::has_lsc_equivalent ( )
constexpr

Definition at line 226 of file common.hpp.

◆ isPowerOf2() [1/2]

constexpr ESIMD_INLINE bool sycl::_V1::ext::intel::esimd::detail::isPowerOf2 ( unsigned int  n)
constexpr

◆ isPowerOf2() [2/2]

constexpr ESIMD_INLINE bool sycl::_V1::ext::intel::esimd::detail::isPowerOf2 ( unsigned int  n,
unsigned int  limit 
)
constexpr

Check at compile time if given 32 bit positive integer is both:

  • a power of 2
  • less or equal to given limit

Definition at line 86 of file common.hpp.

◆ operator%() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator% ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 177 of file operators.hpp.

◆ operator%() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator% ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 177 of file operators.hpp.

◆ operator%() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator% ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 177 of file operators.hpp.

◆ operator&() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator& ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 171 of file operators.hpp.

◆ operator&() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator& ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 171 of file operators.hpp.

◆ operator&() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator& ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 171 of file operators.hpp.

◆ operator*() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator* ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 189 of file operators.hpp.

◆ operator*() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator* ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 189 of file operators.hpp.

◆ operator*() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator* ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 189 of file operators.hpp.

◆ operator+() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator+ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 187 of file operators.hpp.

◆ operator+() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator+ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 187 of file operators.hpp.

◆ operator+() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator+ ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 187 of file operators.hpp.

◆ operator-() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator- ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 188 of file operators.hpp.

◆ operator-() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator- ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 188 of file operators.hpp.

◆ operator-() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator- ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 188 of file operators.hpp.

◆ operator/() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator/ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 190 of file operators.hpp.

◆ operator/() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator/ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 190 of file operators.hpp.

◆ operator/() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< __ESIMD_DNS::is_valid_simd_elem_type_v<T1> &&__ESIMD_DNS::is_valid_simd_elem_type_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator/ ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 190 of file operators.hpp.

◆ operator<<() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator<< ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 178 of file operators.hpp.

◆ operator<<() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator<< ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 178 of file operators.hpp.

◆ operator<<() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator<< ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 178 of file operators.hpp.

◆ operator>>() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator>> ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 179 of file operators.hpp.

◆ operator>>() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator>> ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 179 of file operators.hpp.

◆ operator>>() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> &&__ESIMD_DNS::is_simd_type_v<SimdTx> >>
auto sycl::_V1::ext::intel::esimd::detail::operator>> ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 179 of file operators.hpp.

◆ operator^() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator^ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 169 of file operators.hpp.

◆ operator^() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator^ ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 169 of file operators.hpp.

◆ operator^() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator^ ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 169 of file operators.hpp.

◆ operator|() [1/3]

template<class T1 , class T2 , int N, template< class, int > class SimdT, class SimdTx = SimdT<T1, N>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator| ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N, SimdT< T1, N >> &  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N, SimdT< T2, N >> &  RHS 
)
inline

Definition at line 170 of file operators.hpp.

◆ operator|() [2/3]

template<class T1 , int N1, template< class, int > class SimdT1, class T2 , class SimdTx = SimdT1<T1, N1>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator| ( const __ESIMD_DNS::simd_obj_impl< __raw_t< T1 >, N1, SimdT1< T1, N1 >> &  LHS,
T2  RHS 
)
inline

Definition at line 170 of file operators.hpp.

◆ operator|() [3/3]

template<class T1 , class T2 , int N2, template< class, int > class SimdT2, class SimdTx = SimdT2<T2, N2>, class = std::enable_if_t< std::is_integral_v<T1> &&std::is_integral_v<T2> >>
auto sycl::_V1::ext::intel::esimd::detail::operator| ( T1  LHS,
const __ESIMD_DNS::simd_obj_impl< __raw_t< T2 >, N2, SimdT2< T2, N2 >> &  RHS 
)
inline

Definition at line 170 of file operators.hpp.

◆ prod()

template<typename T0 , typename T1 , int SZ>
ESIMD_INLINE ESIMD_NODEBUG T0 sycl::_V1::ext::intel::esimd::detail::prod ( simd< T1, SZ >  v)

Definition at line 1024 of file math.hpp.

◆ reduce()

template<typename T0 , typename T1 , int SZ, template< typename RT, typename T, int N > class OpType>
T0 sycl::_V1::ext::intel::esimd::detail::reduce ( simd< T1, SZ >  v)

Definition at line 1001 of file math.hpp.

References isPowerOf2().

◆ reduce_pair()

template<typename T0 , typename T1 , int N1, int N2, template< typename RT, typename T, int N > class OpType>
T0 sycl::_V1::ext::intel::esimd::detail::reduce_pair ( simd< T1, N1 >  v1,
simd< T1, N2 >  v2 
)

◆ reduce_single()

template<typename T0 , typename T1 , int SZ, template< typename RT, typename T, int N > class OpType>
T0 sycl::_V1::ext::intel::esimd::detail::reduce_single ( simd< T1, SZ >  v)

Definition at line 961 of file math.hpp.

References isPowerOf2().

◆ sum()

template<typename T0 , typename T1 , int SZ>
ESIMD_INLINE ESIMD_NODEBUG T0 sycl::_V1::ext::intel::esimd::detail::sum ( simd< T1, SZ >  v)

Definition at line 1016 of file math.hpp.

◆ to_atomic_op()

template<sycl::ext::intel::esimd::native::lsc::atomic_op Op>
constexpr sycl::ext::intel::esimd::atomic_op sycl::_V1::ext::intel::esimd::detail::to_atomic_op ( )
constexpr

◆ to_lsc_atomic_op()

template<sycl::ext::intel::esimd::atomic_op Op>
constexpr sycl::ext::intel::esimd::native::lsc::atomic_op sycl::_V1::ext::intel::esimd::detail::to_lsc_atomic_op ( )
constexpr

◆ validate_rgba_write_channel_mask()

template<rgba_channel_mask M>
static void sycl::_V1::ext::intel::esimd::detail::validate_rgba_write_channel_mask ( )
static

Definition at line 570 of file memory.hpp.

Variable Documentation

◆ ch

template<rgba_channel Ch>
constexpr uint8_t sycl::_V1::ext::intel::esimd::detail::ch = 1 << static_cast<int>(Ch)
inlinestaticconstexpr

Definition at line 91 of file common.hpp.

◆ chA

constexpr uint8_t sycl::_V1::ext::intel::esimd::detail::chA = ch<rgba_channel::A>
inlinestaticconstexpr

Definition at line 95 of file common.hpp.

◆ chB

constexpr uint8_t sycl::_V1::ext::intel::esimd::detail::chB = ch<rgba_channel::B>
inlinestaticconstexpr

Definition at line 94 of file common.hpp.

◆ chG

constexpr uint8_t sycl::_V1::ext::intel::esimd::detail::chG = ch<rgba_channel::G>
inlinestaticconstexpr

Definition at line 93 of file common.hpp.

◆ chR

constexpr uint8_t sycl::_V1::ext::intel::esimd::detail::chR = ch<rgba_channel::R>
inlinestaticconstexpr

Definition at line 92 of file common.hpp.

◆ INVALID_BTI

constexpr SurfaceIndex sycl::_V1::ext::intel::esimd::detail::INVALID_BTI
inlinestaticconstexpr
Initial value:
=
static_cast<SurfaceIndex>(-1)
unsigned int SurfaceIndex
Surface index type.
Definition: common.hpp:64

Definition at line 99 of file common.hpp.

◆ is_saturation_tag_v

template<class T >
constexpr bool sycl::_V1::ext::intel::esimd::detail::is_saturation_tag_v = is_saturation_tag<T>::value
inlineconstexpr

Definition at line 76 of file common.hpp.

◆ SLM_BTI

constexpr SurfaceIndex sycl::_V1::ext::intel::esimd::detail::SLM_BTI = 254
inlinestaticconstexpr

Definition at line 98 of file common.hpp.

Referenced by sycl::_V1::ext::intel::esimd::get_surface_index(), and piPluginInit().