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)
 
EXPLICIT F32vec4 (float f)
 
EXPLICIT 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 F32vec4b { 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
89 {}
F32vec4::F32vec4 ( __m128  m)
inline
92 { vec = m;}
__m128 m
Definition: fvec.h:77
__m128 vec
Definition: fvec.h:85
F32vec4::F32vec4 ( float  f3,
float  f2,
float  f1,
float  f0 
)
inline
95 { 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:85
EXPLICIT F32vec4::F32vec4 ( float  f)
inline
98 { vec = _mm_set_ps1(f); }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:85
EXPLICIT F32vec4::F32vec4 ( double  d)
inline
101 { vec = _mm_set_ps1((float) d); }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:85

Member Function Documentation

F32vec4::Fvec32s4_COMP ( eq  ) const
F32vec4::operator __m128 ( ) const
inline
114 { return vec; } /* Convert to __m128 */
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator&= ( const F32vec4 a)
inline
133 { return *this = _mm_and_ps(vec,a); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator*= ( const F32vec4 a)
inline
131 { return *this = _mm_mul_ps(vec,a); }
__m128 _mm_mul_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator+= ( const F32vec4 a)
inline
129 { return *this = _mm_add_ps(vec,a); }
__m128 _mm_add_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator-= ( const F32vec4 a)
inline
130 { return *this = _mm_sub_ps(vec,a); }
__m128 _mm_sub_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator/= ( const F32vec4 a)
inline
132 { return *this = _mm_div_ps(vec,a); }
__m128 _mm_div_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator= ( float  f)
inline
105 { vec = _mm_set_ps1(f); return *this; }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator= ( double  d)
inline
108  {
109  vec = _mm_set_ps1((float) d);
110  return *this;
111  }
__m128 _mm_set_ps1(float _A)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator= ( const F32vec4 a)
inline
127 { vec = a.vec; return *this; }
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator= ( const __m128 avec)
inline
128 { vec = avec; return *this; }
__m128 vec
Definition: fvec.h:85
const float& F32vec4::operator[] ( int  i) const
inline
214  {
215  /* Assert enabled only during debug /DDEBUG */
216  _VEC_ASSERT((0 <= i) && (i <= 3)); /* User should only access elements 0-3 */
217  float *fp = (float*)&vec;
218  return *(fp+i);
219  }
#define _VEC_ASSERT(_Expression)
Definition: fvec.h:59
__m128 vec
Definition: fvec.h:85
int i[4]
Definition: fvec.h:76
float& F32vec4::operator[] ( int  i)
inline
222  {
223  /* Assert enabled only during debug /DDEBUG */
224  _VEC_ASSERT((0 <= i) && (i <= 3)); /* User should only access elements 0-3 */
225  float *fp = (float*)&vec;
226  return *(fp+i);
227  }
#define _VEC_ASSERT(_Expression)
Definition: fvec.h:59
__m128 vec
Definition: fvec.h:85
int i[4]
Definition: fvec.h:76
F32vec4& F32vec4::operator^= ( const F32vec4 a)
inline
135 { return *this = _mm_xor_ps(vec,a); }
__m128 _mm_xor_ps(__m128 _A, __m128 _B)
__m128 vec
Definition: fvec.h:85
F32vec4& F32vec4::operator|= ( const F32vec4 a)
inline
134 { return *this = _mm_or_ps(vec,a); }
__m128 vec
Definition: fvec.h:85
__m128 _mm_or_ps(__m128 _A, __m128 _B)

Friends And Related Function Documentation

F32vec4 abs ( const F32vec4 a)
friend
196 {return _mm_and_ps(a, _f32vec4_abs_mask); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
#define _f32vec4_abs_mask
Definition: fvec.h:80
float add_horizontal ( const F32vec4 a)
friend
139  {
140  F32vec4 ftemp = _mm_add_ps(a, _mm_movehl_ps(a, a));
141  ftemp = _mm_add_ss(ftemp, _mm_shuffle_ps(ftemp, ftemp, 1));
142  return _mm_cvtss_f32(ftemp);
143  }
Definition: fvec.h:82
__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
117 { return _mm_and_ps(a,b); }
__m128 _mm_and_ps(__m128 _A, __m128 _B)
F32vec4 operator* ( const F32vec4 a,
const F32vec4 b 
)
friend
124 { return _mm_mul_ps(a,b); }
__m128 _mm_mul_ps(__m128 _A, __m128 _B)
F32vec4 operator+ ( const F32vec4 a,
const F32vec4 b 
)
friend
122 { return _mm_add_ps(a,b); }
__m128 _mm_add_ps(__m128 _A, __m128 _B)
F32vec4 operator- ( const F32vec4 a,
const F32vec4 b 
)
friend
123 { return _mm_sub_ps(a,b); }
__m128 _mm_sub_ps(__m128 _A, __m128 _B)
F32vec4 operator/ ( const F32vec4 a,
const F32vec4 b 
)
friend
125 { return _mm_div_ps(a,b); }
__m128 _mm_div_ps(__m128 _A, __m128 _B)
F32vec4 operator^ ( const F32vec4 a,
const F32vec4 b 
)
friend
119 { return _mm_xor_ps(a,b); }
__m128 _mm_xor_ps(__m128 _A, __m128 _B)
F32vec4 operator| ( const F32vec4 a,
const F32vec4 b 
)
friend
118 { return _mm_or_ps(a,b); }
__m128 _mm_or_ps(__m128 _A, __m128 _B)
F32vec4 rcp ( const F32vec4 a)
friend
148 { return _mm_rcp_ps(a); }
__m128 _mm_rcp_ps(__m128 _A)
F32vec4 rcp_nr ( const F32vec4 a)
friend
155  {
156  F32vec4 Ra0 = _mm_rcp_ps(a);
157  return _mm_sub_ps(_mm_add_ps(Ra0, Ra0), _mm_mul_ps(_mm_mul_ps(Ra0, a), Ra0));
158  }
Definition: fvec.h:82
__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
150 { return _mm_rsqrt_ps(a); }
__m128 _mm_rsqrt_ps(__m128 _A)
F32vec4 rsqrt_nr ( const F32vec4 a)
friend
165  {
166  static const F32vec4 fvecf0pt5(0.5f);
167  static const F32vec4 fvecf3pt0(3.0f);
168  F32vec4 Ra0 = _mm_rsqrt_ps(a);
169  return (fvecf0pt5 * Ra0) * (fvecf3pt0 - (a * Ra0) * Ra0);
170  }
Definition: fvec.h:82
__m128 _mm_rsqrt_ps(__m128 _A)
F32vec4 simd_max ( const F32vec4 a,
const F32vec4 b 
)
friend
193 { return _mm_max_ps(a,b); }
__m128 _mm_max_ps(__m128 _A, __m128 _B)
F32vec4 sqrt ( const F32vec4 a)
friend
146 { 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: