Go to the documentation of this file. 1 #ifndef LIT_F32VEC4P4_H
2 #define LIT_F32VEC4P4_H
30 static_cast<int>(0x80000000),
31 static_cast<int>(0x80000000),
32 static_cast<int>(0x80000000)}},
36 static_cast<int>(0xFFFFFFFF),
37 static_cast<int>(0xFFFFFFFF),
38 static_cast<int>(0xFFFFFFFF)}},
41 #define _f32vec4_abs_mask ((F32vec4) __f32vec4_abs_mask_cheat.m)
42 #define _f32vec4_sgn_mask ((F32vec4) __f32vec4_sgn_mask_cheat.m)
43 #define _f32vec4_zero ((F32vec4) __f32vec4_zero_cheat.m)
44 #define _f32vec4_one ((F32vec4) __f32vec4_one_cheat.m)
45 #define _f32vec4_true ((F32vec4) __f32vec4_true_cheat.m)
46 #define _f32vec4_false ((F32vec4) __f32vec4_false_cheat.m)
59 F32vec4(
const float& f0,
const float& f1,
const float& f2,
const float& f3)
60 :
v(_mm_set_ps(f3, f2, f1, f0)) {}
63 operator __m128()
const {
return v; }
67 return _mm_add_ps(a, b);
70 return _mm_sub_ps(a, b);
73 return _mm_mul_ps(a, b);
76 return _mm_div_ps(a, b);
81 return _mm_min_ps(a, b);
84 return _mm_max_ps(a, b);
114 return _mm_and_ps(a, b);
118 return _mm_or_ps(a, b);
122 return _mm_xor_ps(a, b);
135 return _mm_cmplt_ps(a, b);
140 #define _f1(A, F) F32vec4(F(A[0]), F(A[1]), F(A[2]), F(A[3]))
154 strm << a[0] <<
" " << a[1] <<
" " << a[2] <<
" " << a[3];
173 #define _fvecalignment __attribute__((aligned(16)))
friend F32vec4 exp(const F32vec4 &a)
const union @16 __f32vec4_sgn_mask_cheat
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 rsqrt(const F32vec4 &a)
friend F32vec4 fabs(const F32vec4 &a)
const union @16 __f32vec4_zero_cheat
friend F32vec4 operator/(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 log(const F32vec4 &a)
friend F32vec4 operator^(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 operator!(const F32vec4 &a)
friend F32vec4 operator|(const F32vec4 &a, const F32vec4 &b)
#define _f32vec4_sgn_mask
friend F32vec4 sqrt(const F32vec4 &a)
friend std::istream & operator>>(std::istream &strm, F32vec4 &a)
float operator[](int i) const
friend F32vec4 operator<(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 operator+(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 operator-(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 asgnb(const F32vec4 &a, const F32vec4 &b)
#define _f32vec4_abs_mask
float & operator[](int i)
friend F32vec4 rcp(const F32vec4 &a)
const union @16 __f32vec4_true_cheat
friend std::ostream & operator<<(std::ostream &strm, const F32vec4 &a)
class F32vec4 __attribute__((aligned(16)))
friend F32vec4 operator&(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 sgn(const F32vec4 &a)
const union @16 __f32vec4_one_cheat
const union @16 __f32vec4_abs_mask_cheat
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 sin(const F32vec4 &a)
vec_arithmetic(F32vec4, float)
F32vec4(const float &f0, const float &f1, const float &f2, const float &f3)
friend F32vec4 operator*(const F32vec4 &a, const F32vec4 &b)
const union @16 __f32vec4_false_cheat