|
template<int... Ix, int N, typename T > |
SI Vec< sizeof...(Ix), T > | shuffle (const Vec< N, T > &) |
|
SINT Vec< 2 *N, T > | join (const Vec< N, T > &lo, const Vec< N, T > &hi) |
|
SIT Vec< 1, T > | operator+ (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator- (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator* (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator/ (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator^ (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator& (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator| (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, T > | operator! (const Vec< 1, T > &x) |
|
SIT Vec< 1, T > | operator- (const Vec< 1, T > &x) |
|
SIT Vec< 1, T > | operator~ (const Vec< 1, T > &x) |
|
SIT Vec< 1, T > | operator<< (const Vec< 1, T > &x, int k) |
|
SIT Vec< 1, T > | operator>> (const Vec< 1, T > &x, int k) |
|
SIT Vec< 1, M< T > > | operator== (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, M< T > > | operator!= (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, M< T > > | operator<= (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, M< T > > | operator>= (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, M< T > > | operator< (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SIT Vec< 1, M< T > > | operator> (const Vec< 1, T > &x, const Vec< 1, T > &y) |
|
SINT Vec< N, T > | operator+ (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator- (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator* (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator/ (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator^ (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator& (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator| (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | operator! (const Vec< N, T > &x) |
|
SINT Vec< N, T > | operator- (const Vec< N, T > &x) |
|
SINT Vec< N, T > | operator~ (const Vec< N, T > &x) |
|
SINT Vec< N, T > | operator<< (const Vec< N, T > &x, int k) |
|
SINT Vec< N, T > | operator>> (const Vec< N, T > &x, int k) |
|
SINT Vec< N, M< T > > | operator== (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, M< T > > | operator!= (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, M< T > > | operator<= (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, M< T > > | operator>= (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, M< T > > | operator< (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, M< T > > | operator> (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator+ (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator- (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator* (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator/ (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator^ (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator& (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator| (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator== (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator!= (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator<= (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator>= (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator< (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, M< T > > | operator> (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | operator+ (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator- (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator* (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator/ (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator^ (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator& (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | operator| (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator== (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator!= (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator<= (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator>= (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator< (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, M< T > > | operator> (const Vec< N, T > &x, U y) |
|
SINT Vec< N, T > & | operator+= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator-= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator*= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator/= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator^= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator&= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > & | operator|= (Vec< N, T > &x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > & | operator+= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator-= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator*= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator/= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator^= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator&= (Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > & | operator|= (Vec< N, T > &x, U y) |
|
SINT Vec< N, T > & | operator<<= (Vec< N, T > &x, int bits) |
|
SINT Vec< N, T > & | operator>>= (Vec< N, T > &x, int bits) |
|
SINT Vec< N, T > | naive_if_then_else (const Vec< N, M< T > > &cond, const Vec< N, T > &t, const Vec< N, T > &e) |
|
SIT Vec< 1, T > | if_then_else (const Vec< 1, M< T > > &cond, const Vec< 1, T > &t, const Vec< 1, T > &e) |
|
SINT Vec< N, T > | if_then_else (const Vec< N, M< T > > &cond, const Vec< N, T > &t, const Vec< N, T > &e) |
|
SIT bool | any (const Vec< 1, T > &x) |
|
SINT bool | any (const Vec< N, T > &x) |
|
SIT bool | all (const Vec< 1, T > &x) |
|
SINT bool | all (const Vec< N, T > &x) |
|
template<typename D , typename S > |
SI Vec< 1, D > | cast (const Vec< 1, S > &src) |
|
template<typename D , int N, typename S > |
SI Vec< N, D > | cast (const Vec< N, S > &src) |
|
SIT T | min (const Vec< 1, T > &x) |
|
SIT T | max (const Vec< 1, T > &x) |
|
SINT T | min (const Vec< N, T > &x) |
|
SINT T | max (const Vec< N, T > &x) |
|
SINT Vec< N, T > | min (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | max (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | min (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | max (const Vec< N, T > &x, U y) |
|
SINTU Vec< N, T > | min (U x, const Vec< N, T > &y) |
|
SINTU Vec< N, T > | max (U x, const Vec< N, T > &y) |
|
SINT Vec< N, T > | pin (const Vec< N, T > &x, const Vec< N, T > &lo, const Vec< N, T > &hi) |
|
template<typename Fn , typename... Args, size_t... I> |
SI auto | map (std::index_sequence< I... >, Fn &&fn, const Args &... args) -> skvx::Vec< sizeof...(I), decltype(fn(args[0]...))> |
|
template<typename Fn , int N, typename T , typename... Rest> |
auto | map (Fn &&fn, const Vec< N, T > &first, const Rest &... rest) |
|
SIN Vec< N, float > | ceil (const Vec< N, float > &x) |
|
SIN Vec< N, float > | floor (const Vec< N, float > &x) |
|
SIN Vec< N, float > | trunc (const Vec< N, float > &x) |
|
SIN Vec< N, float > | round (const Vec< N, float > &x) |
|
SIN Vec< N, float > | sqrt (const Vec< N, float > &x) |
|
SIN Vec< N, float > | abs (const Vec< N, float > &x) |
|
SIN Vec< N, float > | fma (const Vec< N, float > &x, const Vec< N, float > &y, const Vec< N, float > &z) |
|
SI Vec< 1, int > | lrint (const Vec< 1, float > &x) |
|
SIN Vec< N, int > | lrint (const Vec< N, float > &x) |
|
SIN Vec< N, float > | fract (const Vec< N, float > &x) |
|
SIN Vec< N, uint16_t > | to_half (const Vec< N, float > &x) |
|
SIN Vec< N, float > | from_half (const Vec< N, uint16_t > &x) |
|
SIN Vec< N, uint8_t > | div255 (const Vec< N, uint16_t > &x) |
|
SIN Vec< N, uint8_t > | approx_scale (const Vec< N, uint8_t > &x, const Vec< N, uint8_t > &y) |
|
SINT std::enable_if_t< std::is_unsigned_v< T >, Vec< N, T > > | saturated_add (const Vec< N, T > &x, const Vec< N, T > &y) |
|
SIN Vec< N, uint16_t > | mull (const Vec< N, uint8_t > &x, const Vec< N, uint8_t > &y) |
|
SIN Vec< N, uint32_t > | mull (const Vec< N, uint16_t > &x, const Vec< N, uint16_t > &y) |
|
SIN Vec< N, uint16_t > | mulhi (const Vec< N, uint16_t > &x, const Vec< N, uint16_t > &y) |
|
SINT T | dot (const Vec< N, T > &a, const Vec< N, T > &b) |
|
SIT T | cross (const Vec< 2, T > &a, const Vec< 2, T > &b) |
|
SIN float | length (const Vec< N, float > &v) |
|
SIN double | length (const Vec< N, double > &v) |
|
SIN Vec< N, float > | normalize (const Vec< N, float > &v) |
|
SIN Vec< N, double > | normalize (const Vec< N, double > &v) |
|
SINT bool | isfinite (const Vec< N, T > &v) |
|
SIT void | strided_load4 (const T *v, Vec< 1, T > &a, Vec< 1, T > &b, Vec< 1, T > &c, Vec< 1, T > &d) |
|
SINT void | strided_load4 (const T *v, Vec< N, T > &a, Vec< N, T > &b, Vec< N, T > &c, Vec< N, T > &d) |
|
SI void | strided_load4 (const float *v, Vec< 4, float > &a, Vec< 4, float > &b, Vec< 4, float > &c, Vec< 4, float > &d) |
|
SIT void | strided_load2 (const T *v, Vec< 1, T > &a, Vec< 1, T > &b) |
|
SINT void | strided_load2 (const T *v, Vec< N, T > &a, Vec< N, T > &b) |
|
| DEF_TEST (SkVx, r) |
|
| DEF_TEST (SkVx_xy, r) |
|
| DEF_TEST (SkVx_xyzw, r) |
|
| DEF_TEST (SkVx_cross_dot, r) |
|
template<int N, typename T > |
void | check_strided_loads (skiatest::Reporter *r) |
|
template<typename T > |
void | check_strided_loads (skiatest::Reporter *r) |
|
| DEF_TEST (SkVx_strided_loads, r) |
|
| DEF_TEST (SkVx_ScaledDividerU32, r) |
|
| DEF_TEST (SkVx_saturated_add, r) |
|
| DEF_TEST (SkVx_length, r) |
|
| DEF_TEST (SkVx_normalize, r) |
|
| DEF_TEST (SkVx_normalize_infinity_and_nan, r) |
|
| DEF_TEST (SkVx_isfinite, r) |
|