STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Public Attributes | Protected Attributes | Friends | List of all members
F32vec4 Class Reference

#include <fvec.h>

Public Member Functions

 F32vec4 ()
 
 F32vec4 (__m128 _M)
 
 F32vec4 (float _F3, float _F2, float _F1, float _F0)
 
 F32vec4 (float _F)
 
 F32vec4 (double _D)
 
F32vec4operator= (float _F)
 
F32vec4operator= (double _D)
 
 operator __m128 () const
 
F32vec4operator= (const F32vec4 &_A)
 
F32vec4operator= (const __m128 &_Avec)
 
F32vec4operator+= (const F32vec4 &_A)
 
F32vec4operator-= (const F32vec4 &_A)
 
F32vec4operator*= (const F32vec4 &_A)
 
F32vec4operator/= (const F32vec4 &_A)
 
F32vec4operator&= (const F32vec4 &_A)
 
F32vec4operator|= (const F32vec4 &_A)
 
F32vec4operator^= (const F32vec4 &_A)
 
 Fvec32s4_COMP (eq) Fvec32s4_COMP(lt) Fvec32s4_COMP(le) Fvec32s4_COMP(gt) Fvec32s4_COMP(ge) Fvec32s4_COMP(neq) Fvec32s4_COMP(nlt) Fvec32s4_COMP(nle) Fvec32s4_COMP(ngt) Fvec32s4_COMP(nge) friend F32vec4 simd_min(const F32vec4 &_A
 
const float & operator[] (int _I) const
 
float & operator[] (int _I)
 

Public Attributes

const F32vec4_B { return _mm_min_ps(_A,_B)
 

Protected Attributes

__m128 vec
 

Friends

F32vec4 operator& (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator| (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator^ (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator+ (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator- (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator* (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 operator/ (const F32vec4 &_A, const F32vec4 &_B)
 
float add_horizontal (const F32vec4 &_A)
 
F32vec4 sqrt (const F32vec4 &_A)
 
F32vec4 rcp (const F32vec4 &_A)
 
F32vec4 rsqrt (const F32vec4 &_A)
 
F32vec4 rcp_nr (const F32vec4 &_A)
 
F32vec4 rsqrt_nr (const F32vec4 &_A)
 
F32vec4 simd_max (const F32vec4 &_A, const F32vec4 &_B)
 
F32vec4 abs (const F32vec4 &_A)
 

Constructor & Destructor Documentation

F32vec4::F32vec4 ( )
inline
85 {}
F32vec4::F32vec4 ( __m128  _M)
inline
88 { vec = _M;}
__m128 vec
Definition: fvec.h:81
F32vec4::F32vec4 ( float  _F3,
float  _F2,
float  _F1,
float  _F0 
)
inline
91 { vec= _mm_set_ps(_F3,_F2,_F1,_F0); }
__m128 _mm_set_ps(float _A, float _B, float _C, float _D)
__m128 vec
Definition: fvec.h:81
F32vec4::F32vec4 ( float  _F)
inlineexplicit
94 { vec = _mm_set_ps1(_F); }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:81
F32vec4::F32vec4 ( double  _D)
inlineexplicit
97 { vec = _mm_set_ps1((float)_D); }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:81

Member Function Documentation

F32vec4::Fvec32s4_COMP ( eq  ) const
F32vec4::operator __m128 ( ) const
inline
110 { return vec; } /* Convert to __m128 */
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator&= ( const F32vec4 _A)
inline
129 { return *this = _mm_and_ps(vec,_A); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator*= ( const F32vec4 _A)
inline
127 { return *this = _mm_mul_ps(vec,_A); }
__m128 _mm_mul_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator+= ( const F32vec4 _A)
inline
125 { return *this = _mm_add_ps(vec,_A); }
__m128 _mm_add_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator-= ( const F32vec4 _A)
inline
126 { return *this = _mm_sub_ps(vec,_A); }
__m128 _mm_sub_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator/= ( const F32vec4 _A)
inline
128 { return *this = _mm_div_ps(vec,_A); }
__m128 _mm_div_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator= ( float  _F)
inline
101 { vec = _mm_set_ps1(_F); return *this; }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator= ( double  _D)
inline
104  {
105  vec = _mm_set_ps1((float)_D);
106  return *this;
107  }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator= ( const F32vec4 _A)
inline
123 { vec = _A.vec; return *this; }
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator= ( const __m128 _Avec)
inline
124 { vec = _Avec; return *this; }
__m128 vec
Definition: fvec.h:81
const float& F32vec4::operator[] ( int  _I) const
inline
210  {
211  /* Assert enabled only during debug /DDEBUG */
212  _VEC_ASSERT((0 <= _I) && (_I <= 3)); /* User should only access elements 0-3 */
213  float *_Fp = (float*)&vec;
214  return *(_Fp+ _I);
215  }
#define _VEC_ASSERT(_Expression)
Definition: fvec.h:59
__m128 vec
Definition: fvec.h:81
float& F32vec4::operator[] ( int  _I)
inline
218  {
219  /* Assert enabled only during debug /DDEBUG */
220  _VEC_ASSERT((0 <= _I) && (_I <= 3)); /* User should only access elements 0-3 */
221  float *_Fp = (float*)&vec;
222  return *(_Fp+ _I);
223  }
#define _VEC_ASSERT(_Expression)
Definition: fvec.h:59
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator^= ( const F32vec4 _A)
inline
131 { return *this = _mm_xor_ps(vec,_A); }
__m128 _mm_xor_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:81
F32vec4& F32vec4::operator|= ( const F32vec4 _A)
inline
130 { return *this = _mm_or_ps(vec,_A); }
__m128 vec
Definition: fvec.h:81
__m128 _mm_or_ps(__m128 _A, __m128 _B)

Friends And Related Function Documentation

F32vec4 abs ( const F32vec4 _A)
friend
192 {return _mm_and_ps(_A, _f32vec4_abs_mask); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
#define _f32vec4_abs_mask
Definition: fvec.h:76
float add_horizontal ( const F32vec4 _A)
friend
135  {
136  F32vec4 _Ftemp = _mm_add_ps(_A, _mm_movehl_ps(_A, _A));
137  _Ftemp = _mm_add_ss(_Ftemp, _mm_shuffle_ps(_Ftemp, _Ftemp, 1));
138  return _mm_cvtss_f32(_Ftemp);
139  }
Definition: fvec.h:78
__m128 _mm_movehl_ps(__m128, __m128)
__m128 _mm_shuffle_ps(__m128 _A, __m128 _B, unsigned int _Imm8)
__m128 _mm_add_ps(__m128 _A, __m128 _B)
__m128 _mm_add_ss(__m128 _A, __m128 _B)
float _mm_cvtss_f32(__m128 _A)
F32vec4 operator& ( const F32vec4 _A,
const F32vec4 _B 
)
friend
113 { return _mm_and_ps(_A,_B); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
F32vec4 operator* ( const F32vec4 _A,
const F32vec4 _B 
)
friend
120 { return _mm_mul_ps(_A,_B); }
__m128 _mm_mul_ps(__m128 _A, __m128 _B)
F32vec4 operator+ ( const F32vec4 _A,
const F32vec4 _B 
)
friend
118 { return _mm_add_ps(_A,_B); }
__m128 _mm_add_ps(__m128 _A, __m128 _B)
F32vec4 operator- ( const F32vec4 _A,
const F32vec4 _B 
)
friend
119 { return _mm_sub_ps(_A,_B); }
__m128 _mm_sub_ps(__m128 _A, __m128 _B)
F32vec4 operator/ ( const F32vec4 _A,
const F32vec4 _B 
)
friend
121 { return _mm_div_ps(_A,_B); }
__m128 _mm_div_ps(__m128 _A, __m128 _B)
F32vec4 operator^ ( const F32vec4 _A,
const F32vec4 _B 
)
friend
115 { return _mm_xor_ps(_A,_B); }
__m128 _mm_xor_ps(__m128 _A, __m128 _B)
F32vec4 operator| ( const F32vec4 _A,
const F32vec4 _B 
)
friend
114 { return _mm_or_ps(_A,_B); }
__m128 _mm_or_ps(__m128 _A, __m128 _B)
F32vec4 rcp ( const F32vec4 _A)
friend
144 { return _mm_rcp_ps(_A); }
__m128 _mm_rcp_ps(__m128 _A)
F32vec4 rcp_nr ( const F32vec4 _A)
friend
151  {
152  F32vec4 _Ra0 = _mm_rcp_ps(_A);
153  return _mm_sub_ps(_mm_add_ps(_Ra0, _Ra0), _mm_mul_ps(_mm_mul_ps(_Ra0, _A), _Ra0));
154  }
Definition: fvec.h:78
__m128 _mm_add_ps(__m128 _A, __m128 _B)
__m128 _mm_sub_ps(__m128 _A, __m128 _B)
__m128 _mm_rcp_ps(__m128 _A)
__m128 _mm_mul_ps(__m128 _A, __m128 _B)
F32vec4 rsqrt ( const F32vec4 _A)
friend
146 { return _mm_rsqrt_ps(_A); }
__m128 _mm_rsqrt_ps(__m128 _A)
F32vec4 rsqrt_nr ( const F32vec4 _A)
friend
161  {
162  static const F32vec4 fvecf0pt5(0.5f);
163  static const F32vec4 fvecf3pt0(3.0f);
164  F32vec4 _Ra0 = _mm_rsqrt_ps(_A);
165  return (fvecf0pt5 * _Ra0) * (fvecf3pt0 - (_A * _Ra0) * _Ra0);
166  }
Definition: fvec.h:78
__m128 _mm_rsqrt_ps(__m128 _A)
F32vec4 simd_max ( const F32vec4 _A,
const F32vec4 _B 
)
friend
189 { return _mm_max_ps(_A,_B); }
__m128 _mm_max_ps(__m128 _A, __m128 _B)
F32vec4 sqrt ( const F32vec4 _A)
friend
142 { return _mm_sqrt_ps(_A); }
__m128 _mm_sqrt_ps(__m128 _A)

Member Data Documentation

const F32vec4& F32vec4::_B { return _mm_min_ps(_A,_B)
__m128 F32vec4::vec
protected

The documentation for this class was generated from the following file: