Skip to content

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.