21 template<concepts::SimdMask Mask, concepts::Simd T_Simd>
56#define ALPAKA_SIMD_EXPR_ASSIGN_OP(op_name, op) \
57 constexpr void operator op_name(concepts::Simd auto const& rhs) \
59 if constexpr(requires { value.where(m_mask); }) \
60 value.where(m_mask) op_name rhs.asNativeType(); \
62 value.update(m_mask, value op rhs); \
64 constexpr void operator op_name(concepts::LosslesslyConvertible<value_type> auto const& rhs) \
66 if constexpr(requires { value.where(m_mask); }) \
67 value.where(m_mask) op_name rhs; \
69 value.update(m_mask, value op rhs); \
77#undef ALPAKA_SIMD_EXPR_ASSIGN_OP
86 template<concepts::SimdMask T_Mask, concepts::Simd T_Simd>
#define ALPAKA_SIMD_EXPR_ASSIGN_OP(op_name, op)
#define ALPAKA_TYPEOF(...)
Get the type of instance.
Concept to check if a type can be lossless converted to another type.
constexpr SimdWhereExpr< T_Mask, T_Simd > where(T_Mask const &mask, T_Simd &value)
Conditionally update each component of an SIMD pack.
typename T_Simd::type value_type
constexpr SimdWhereExpr & operator=(SimdWhereExpr &&)=delete
constexpr SimdWhereExpr(SimdWhereExpr const &)=delete
constexpr SimdWhereExpr(SimdWhereExpr &&)=delete
constexpr void operator=(concepts::Simd auto const &rhs)
constexpr SimdWhereExpr & operator=(SimdWhereExpr const &)=delete
constexpr void operator=(concepts::LosslesslyConvertible< value_type > auto const &rhs)
constexpr SimdWhereExpr(Mask const &m, T_Simd &v)