Macro KFR_VEC_OPERATOR2¶
macro KFR_VEC_OPERATOR2 simd¶
KFR_VEC_OPERATOR2(op, asgnop, fn) \
template <typename T1, typename T2, size_t N> \
requires(vec_rank<T1> == vec_rank<T2>) \
constexpr KFR_INTRINSIC vec<T1, N>& operator asgnop(vec<T1, N>& x, const vec<T2, N>& y) \
{ \
x = intr::fn(x, promoteto<T1>(y)); \
return x; \
} \
template <typename T1, typename T2, size_t N> \
requires(1 + vec_rank<T1> > vec_rank<T2>) \
constexpr KFR_INTRINSIC vec<T1, N>& operator asgnop(vec<T1, N>& x, const T2& y) \
{ \
x = intr::fn(x, T1(y)); \
return x; \
} \
template <typename T1, typename T2, size_t N, typename C = std::common_type_t<T1, T2>> \
requires(1 + vec_rank<T1> > vec_rank<T2>) \
constexpr KFR_INTRINSIC vec<C, N> operator op(const vec<T1, N>& x, const T2& y) \
{ \
return intr::fn(promoteto<C>(x), C(y)); \
} \
template <typename T1, typename T2, size_t N, typename C = std::common_type_t<T1, T2>> \
requires(vec_rank<T1> < 1 + vec_rank<T2>) \
constexpr KFR_INTRINSIC vec<C, N> operator op(const T1& x, const vec<T2, N>& y) \
{ \
return intr::fn(C(x), promoteto<C>(y)); \
} \
template <typename T1, typename T2, size_t N, typename C = std::common_type_t<T1, T2>> \
requires(vec_rank<T1> == vec_rank<T2>) \
constexpr KFR_INTRINSIC vec<C, N> operator op(const vec<T1, N>& x, const vec<T2, N>& y) \
{ \
return intr::fn(promoteto<C>(x), promoteto<C>(y)); \
} Fully qualified name: KFR_VEC_OPERATOR2
Declared at simd/operators.hpp:45
This file was generated by cxxdox, a C++ documentation generator based on MkDocs Material and libclang.