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

#include <dvec.h>

Public Member Functions

 F32vec8 ()
 
 F32vec8 (__m256 _M)
 
 F32vec8 (float _F7, float _F6, float _F5, float _F4, float _F3, float _F2, float _F1, float _F0)
 
 F32vec8 (float _F)
 
 F32vec8 (double _D)
 
F32vec8operator= (float _F)
 
F32vec8operator= (double _D)
 
 operator __m256 () const
 
F32vec8operator+= (const F32vec8 &_A)
 
F32vec8operator-= (const F32vec8 &_A)
 
F32vec8operator*= (const F32vec8 &_A)
 
F32vec8operator/= (const F32vec8 &_A)
 
F32vec8operator&= (const F32vec8 &_A)
 
F32vec8operator|= (const F32vec8 &_A)
 
F32vec8operator^= (const F32vec8 &_A)
 
const float & operator[] (int _I) const
 
float & operator[] (int _I)
 

Protected Attributes

__m256 vec
 

Friends

F32vec8 operator& (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator| (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator^ (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator+ (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator- (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator* (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 operator/ (const F32vec8 &_A, const F32vec8 &_B)
 
float add_horizontal (const F32vec8 &_A)
 
F32vec8 andnot (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 sqrt (const F32vec8 &_A)
 
F32vec8 rcp (const F32vec8 &_A)
 
F32vec8 rsqrt (const F32vec8 &_A)
 
F32vec8 rcp_nr (const F32vec8 &_A)
 
F32vec8 rsqrt_nr (const F32vec8 &_A)
 
F32vec8 cmp_eq (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_lt (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_le (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_gt (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_ge (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_neq (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_nlt (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_nle (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_ngt (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 cmp_nge (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 simd_min (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 simd_max (const F32vec8 &_A, const F32vec8 &_B)
 
F32vec8 abs (const F32vec8 &_A)
 

Constructor & Destructor Documentation

F32vec8::F32vec8 ( )
inline
1141 {}
F32vec8::F32vec8 ( __m256  _M)
inline
1144 { vec = _M; }
__m256 vec
Definition: dvec.h:1136
F32vec8::F32vec8 ( float  _F7,
float  _F6,
float  _F5,
float  _F4,
float  _F3,
float  _F2,
float  _F1,
float  _F0 
)
inline
1148  {
1149  vec = _mm256_set_ps(_F7, _F6, _F5, _F4, _F3, _F2,_F1, _F0);
1150  }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_set_ps(float, float, float, float, float, float, float, float)
F32vec8::F32vec8 ( float  _F)
inlineexplicit
1153 { vec = _mm256_set1_ps(_F); }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_set1_ps(float)
F32vec8::F32vec8 ( double  _D)
inlineexplicit
1156 { vec = _mm256_set1_ps((float) _D); }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_set1_ps(float)

Member Function Documentation

F32vec8::operator __m256 ( ) const
inline
1172 { return vec; }
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator&= ( const F32vec8 _A)
inline
1189 { return *this = _mm256_and_ps(vec,_A); }
__m256 __cdecl _mm256_and_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator*= ( const F32vec8 _A)
inline
1187 { return *this = _mm256_mul_ps(vec,_A); }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_mul_ps(__m256, __m256)
F32vec8& F32vec8::operator+= ( const F32vec8 _A)
inline
1185 { return *this = _mm256_add_ps(vec,_A); }
__m256 __cdecl _mm256_add_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator-= ( const F32vec8 _A)
inline
1186 { return *this = _mm256_sub_ps(vec,_A); }
__m256 __cdecl _mm256_sub_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator/= ( const F32vec8 _A)
inline
1188 { return *this = _mm256_div_ps(vec,_A); }
__m256 __cdecl _mm256_div_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator= ( float  _F)
inline
1160  {
1161  vec = _mm256_set1_ps(_F);
1162  return *this;
1163  }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_set1_ps(float)
F32vec8& F32vec8::operator= ( double  _D)
inline
1166  {
1167  vec = _mm256_set1_ps((float) _D);
1168  return *this;
1169  }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_set1_ps(float)
const float& F32vec8::operator[] ( int  _I) const
inline
1300  {
1301  /* Assert enabled only during debug /DDEBUG */
1302  _VEC_ASSERT((0 <= _I) && (_I <= 7));
1303  float *_Fp = (float*)&vec;
1304  return *(_Fp+ _I);
1305  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
__m256 vec
Definition: dvec.h:1136
float& F32vec8::operator[] ( int  _I)
inline
1309  {
1310  /* Assert enabled only during debug /DDEBUG */
1311  _VEC_ASSERT((0 <= _I) && (_I <= 7));
1312  float *_Fp = (float*)&vec;
1313  return *(_Fp+ _I);
1314  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator^= ( const F32vec8 _A)
inline
1191 { return *this = _mm256_xor_ps(vec,_A); }
__m256 __cdecl _mm256_xor_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1136
F32vec8& F32vec8::operator|= ( const F32vec8 _A)
inline
1190 { return *this = _mm256_or_ps(vec,_A); }
__m256 vec
Definition: dvec.h:1136
__m256 __cdecl _mm256_or_ps(__m256, __m256)

Friends And Related Function Documentation

F32vec8 abs ( const F32vec8 _A)
friend
1269  {
1270  static const union
1271  {
1272  int i[8];
1273  __m256 m;
1274  } __f32vec8_abs_mask = { 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
1275  0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
1276  return _mm256_and_ps(_A, __f32vec8_abs_mask.m);
1277  }
__m128d m
Definition: dvec.h:69
int i[4]
Definition: dvec.h:68
__m256 __cdecl _mm256_and_ps(__m256, __m256)
__m256
Definition: immintrin.h:39
float add_horizontal ( const F32vec8 _A)
friend
1195  {
1196  F32vec8 _Temp = _mm256_add_ps(_A, _mm256_permute_ps(_A, 0xee));
1197  _Temp = _mm256_add_ps(_Temp, _mm256_movehdup_ps(_Temp));
1199  }
__m256 __cdecl _mm256_permute_ps(__m256, int)
__m256 __cdecl _mm256_add_ps(__m256, __m256)
__m256 __cdecl _mm256_movehdup_ps(__m256)
__m128 __cdecl _mm256_castps256_ps128(__m256)
__m128 _mm_add_ss(__m128 _A, __m128 _B)
Definition: dvec.h:1133
float _mm_cvtss_f32(__m128 _A)
__m128 __cdecl _mm256_extractf128_ps(__m256, const int)
F32vec8 andnot ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1202 { return _mm256_andnot_ps(_A,_B); }
__m256 __cdecl _mm256_andnot_ps(__m256, __m256)
F32vec8 cmp_eq ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1241  { return _mm256_cmp_ps(_A, _B, _CMP_EQ_OQ); }
#define _CMP_EQ_OQ
Definition: immintrin.h:60
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_ge ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1249  { return _mm256_cmp_ps(_A, _B, _CMP_GE_OS); }
#define _CMP_GE_OS
Definition: immintrin.h:75
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_gt ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1247  { return _mm256_cmp_ps(_A, _B, _CMP_GT_OS); }
#define _CMP_GT_OS
Definition: immintrin.h:76
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_le ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1245  { return _mm256_cmp_ps(_A, _B, _CMP_LE_OS); }
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
#define _CMP_LE_OS
Definition: immintrin.h:62
F32vec8 cmp_lt ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1243  { return _mm256_cmp_ps(_A, _B, _CMP_LT_OS); }
#define _CMP_LT_OS
Definition: immintrin.h:61
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_neq ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1251  { return _mm256_cmp_ps(_A, _B, _CMP_NEQ_UQ); }
#define _CMP_NEQ_UQ
Definition: immintrin.h:64
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nge ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1259  { return _mm256_cmp_ps(_A, _B, _CMP_NGE_US); }
#define _CMP_NGE_US
Definition: immintrin.h:70
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_ngt ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1257  { return _mm256_cmp_ps(_A, _B, _CMP_NGT_US); }
#define _CMP_NGT_US
Definition: immintrin.h:72
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nle ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1255  { return _mm256_cmp_ps(_A, _B, _CMP_NLE_US); }
#define _CMP_NLE_US
Definition: immintrin.h:66
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nlt ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1253  { return _mm256_cmp_ps(_A, _B, _CMP_NLT_US); }
#define _CMP_NLT_US
Definition: immintrin.h:65
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 operator& ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1175 { return _mm256_and_ps(_A,_B); }
__m256 __cdecl _mm256_and_ps(__m256, __m256)
F32vec8 operator* ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1182 { return _mm256_mul_ps(_A,_B); }
__m256 __cdecl _mm256_mul_ps(__m256, __m256)
F32vec8 operator+ ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1180 { return _mm256_add_ps(_A,_B); }
__m256 __cdecl _mm256_add_ps(__m256, __m256)
F32vec8 operator- ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1181 { return _mm256_sub_ps(_A,_B); }
__m256 __cdecl _mm256_sub_ps(__m256, __m256)
F32vec8 operator/ ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1183 { return _mm256_div_ps(_A,_B); }
__m256 __cdecl _mm256_div_ps(__m256, __m256)
F32vec8 operator^ ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1177 { return _mm256_xor_ps(_A,_B); }
__m256 __cdecl _mm256_xor_ps(__m256, __m256)
F32vec8 operator| ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1176 { return _mm256_or_ps(_A,_B); }
__m256 __cdecl _mm256_or_ps(__m256, __m256)
F32vec8 rcp ( const F32vec8 _A)
friend
1208 { return _mm256_rcp_ps(_A); }
__m256 __cdecl _mm256_rcp_ps(__m256)
F32vec8 rcp_nr ( const F32vec8 _A)
friend
1218  {
1219  F32vec8 _Ra0 = _mm256_rcp_ps(_A);
1220  return _mm256_sub_ps(_mm256_add_ps(_Ra0, _Ra0), _mm256_mul_ps(_mm256_mul_ps(_Ra0, _A), _Ra0));
1221  }
__m256 __cdecl _mm256_add_ps(__m256, __m256)
__m256 __cdecl _mm256_sub_ps(__m256, __m256)
__m256 __cdecl _mm256_mul_ps(__m256, __m256)
__m256 __cdecl _mm256_rcp_ps(__m256)
Definition: dvec.h:1133
F32vec8 rsqrt ( const F32vec8 _A)
friend
1211 { return _mm256_rsqrt_ps(_A); }
__m256 __cdecl _mm256_rsqrt_ps(__m256)
F32vec8 rsqrt_nr ( const F32vec8 _A)
friend
1228  {
1229 #pragma warning(push)
1230 #pragma warning(disable:4640)
1231  static const F32vec8 fvecf0pt5(0.5f);
1232  static const F32vec8 fvecf3pt0(3.0f);
1233 #pragma warning(pop)
1234  F32vec8 _Ra0 = _mm256_rsqrt_ps(_A);
1235  return (fvecf0pt5 * _Ra0) * (fvecf3pt0 - (_A * _Ra0) * _Ra0);
1236 
1237  }
__m256 __cdecl _mm256_rsqrt_ps(__m256)
Definition: dvec.h:1133
F32vec8 simd_max ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1265  { return _mm256_max_ps(_A,_B); }
__m256 __cdecl _mm256_max_ps(__m256, __m256)
F32vec8 simd_min ( const F32vec8 _A,
const F32vec8 _B 
)
friend
1263  { return _mm256_min_ps(_A,_B); }
__m256 __cdecl _mm256_min_ps(__m256, __m256)
F32vec8 sqrt ( const F32vec8 _A)
friend
1205 { return _mm256_sqrt_ps(_A); }
__m256 __cdecl _mm256_sqrt_ps(__m256)

Member Data Documentation

__m256 F32vec8::vec
protected

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