DPC++ Runtime
Runtime libraries for oneAPI DPC++
operators.hpp File Reference
Include dependency graph for operators.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 sycl
 ---— Error handling, matching OpenCL plugin semantics.
 
 sycl::_V1
 
 sycl::_V1::ext
 
 sycl::_V1::ext::intel
 
 sycl::_V1::ext::intel::esimd
 
 sycl::_V1::ext::intel::esimd::detail
 

Macros

#define __ESIMD_DEF_SIMD_OBJ_IMPL_BIN_OP(BINOP, BINOP_ID, COND)
 
#define __ESIMD_BITWISE_OP_FILTER    std::is_integral_v<T1> &&std::is_integral_v<T2>
 
#define __ESIMD_SHIFT_OP_FILTER
 
#define __ESIMD_ARITH_OP_FILTER
 
#define __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP(CMPOP, CMPOP_ID, COND)
 
#define __ESIMD_DEF_SIMD_VIEW_BIN_OP(BINOP, COND)
 
#define __ESIMD_BITWISE_OP_FILTER    std::is_integral_v<T1> &&std::is_integral_v<T2>
 
#define __ESIMD_SHIFT_OP_FILTER
 
#define __ESIMD_ARITH_OP_FILTER
 
#define __ESIMD_DEF_SIMD_VIEW_CMP_OP(CMPOP, COND)
 

Functions

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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
 sycl::_V1::ext::intel::esimd::detail::__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 > sycl::_V1::ext::intel::esimd::detail::__ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP (<=, CmpOp::lte, __ESIMD_DNS::is_simd_type_v< SimdTx >) __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP(>
 

Macro Definition Documentation

◆ __ESIMD_ARITH_OP_FILTER [1/2]

#define __ESIMD_ARITH_OP_FILTER
Value:
__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>

Definition at line 182 of file operators.hpp.

◆ __ESIMD_ARITH_OP_FILTER [2/2]

#define __ESIMD_ARITH_OP_FILTER
Value:
__ESIMD_DNS::is_simd_type_v<SimdT1> \
&&__ESIMD_DNS::is_valid_simd_elem_type_v<T1> \
&&__ESIMD_DNS::is_valid_simd_elem_type_v<T2>

Definition at line 182 of file operators.hpp.

◆ __ESIMD_BITWISE_OP_FILTER [1/2]

#define __ESIMD_BITWISE_OP_FILTER    std::is_integral_v<T1> &&std::is_integral_v<T2>

Definition at line 167 of file operators.hpp.

◆ __ESIMD_BITWISE_OP_FILTER [2/2]

#define __ESIMD_BITWISE_OP_FILTER    std::is_integral_v<T1> &&std::is_integral_v<T2>

Definition at line 167 of file operators.hpp.

◆ __ESIMD_DEF_SIMD_OBJ_IMPL_BIN_OP

#define __ESIMD_DEF_SIMD_OBJ_IMPL_BIN_OP (   BINOP,
  BINOP_ID,
  COND 
)

Definition at line 111 of file operators.hpp.

◆ __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP

#define __ESIMD_DEF_SIMD_OBJ_IMPL_CMP_OP (   CMPOP,
  CMPOP_ID,
  COND 
)

Definition at line 199 of file operators.hpp.

◆ __ESIMD_DEF_SIMD_VIEW_BIN_OP

#define __ESIMD_DEF_SIMD_VIEW_BIN_OP (   BINOP,
  COND 
)

◆ __ESIMD_DEF_SIMD_VIEW_CMP_OP

#define __ESIMD_DEF_SIMD_VIEW_CMP_OP (   CMPOP,
  COND 
)

◆ __ESIMD_SHIFT_OP_FILTER [1/2]

#define __ESIMD_SHIFT_OP_FILTER
Value:
std::is_integral_v<T1> &&std::is_integral_v<T2> \
&&__ESIMD_DNS::is_simd_type_v<SimdTx>

Definition at line 174 of file operators.hpp.

◆ __ESIMD_SHIFT_OP_FILTER [2/2]

#define __ESIMD_SHIFT_OP_FILTER
Value:
std::is_integral_v<T1> &&std::is_integral_v<T2> \
&&__ESIMD_DNS::is_simd_type_v<SimdT1>

Definition at line 174 of file operators.hpp.