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)
 
EXPLICIT F32vec8 (float f)
 
EXPLICIT 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
1143 {}
F32vec8::F32vec8 ( __m256  m)
inline
1146 { vec = m; }
__m128d m
Definition: dvec.h:71
__m256 vec
Definition: dvec.h:1138
F32vec8::F32vec8 ( float  f7,
float  f6,
float  f5,
float  f4,
float  f3,
float  f2,
float  f1,
float  f0 
)
inline
1150  {
1151  vec = _mm256_set_ps(f7,f6,f5,f4,f3,f2,f1,f0);
1152  }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_set_ps(float, float, float, float, float, float, float, float)
EXPLICIT F32vec8::F32vec8 ( float  f)
inline
1155 { vec = _mm256_set1_ps(f); }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_set1_ps(float)
EXPLICIT F32vec8::F32vec8 ( double  d)
inline
1158 { vec = _mm256_set1_ps((float) d); }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_set1_ps(float)

Member Function Documentation

F32vec8::operator __m256 ( ) const
inline
1174 { return vec; }
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator&= ( const F32vec8 a)
inline
1191 { return *this = _mm256_and_ps(vec,a); }
__m256 __cdecl _mm256_and_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator*= ( const F32vec8 a)
inline
1189 { return *this = _mm256_mul_ps(vec,a); }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_mul_ps(__m256, __m256)
F32vec8& F32vec8::operator+= ( const F32vec8 a)
inline
1187 { return *this = _mm256_add_ps(vec,a); }
__m256 __cdecl _mm256_add_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator-= ( const F32vec8 a)
inline
1188 { return *this = _mm256_sub_ps(vec,a); }
__m256 __cdecl _mm256_sub_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator/= ( const F32vec8 a)
inline
1190 { return *this = _mm256_div_ps(vec,a); }
__m256 __cdecl _mm256_div_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator= ( float  f)
inline
1162  {
1163  vec = _mm256_set1_ps(f);
1164  return *this;
1165  }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_set1_ps(float)
F32vec8& F32vec8::operator= ( double  d)
inline
1168  {
1169  vec = _mm256_set1_ps((float) d);
1170  return *this;
1171  }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_set1_ps(float)
const float& F32vec8::operator[] ( int  i) const
inline
1302  {
1303  /* Assert enabled only during debug /DDEBUG */
1304  _VEC_ASSERT((0 <= i) && (i <= 7));
1305  float *fp = (float*)&vec;
1306  return *(fp+i);
1307  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
int i[4]
Definition: dvec.h:70
__m256 vec
Definition: dvec.h:1138
float& F32vec8::operator[] ( int  i)
inline
1311  {
1312  /* Assert enabled only during debug /DDEBUG */
1313  _VEC_ASSERT((0 <= i) && (i <= 7));
1314  float *fp = (float*)&vec;
1315  return *(fp+i);
1316  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
int i[4]
Definition: dvec.h:70
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator^= ( const F32vec8 a)
inline
1193 { return *this = _mm256_xor_ps(vec,a); }
__m256 __cdecl _mm256_xor_ps(__m256, __m256)
__m256 vec
Definition: dvec.h:1138
F32vec8& F32vec8::operator|= ( const F32vec8 a)
inline
1192 { return *this = _mm256_or_ps(vec,a); }
__m256 vec
Definition: dvec.h:1138
__m256 __cdecl _mm256_or_ps(__m256, __m256)

Friends And Related Function Documentation

F32vec8 abs ( const F32vec8 a)
friend
1271  {
1272  static const union
1273  {
1274  int i[8];
1275  __m256 m;
1276  } __f32vec8_abs_mask = { 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
1277  0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
1278  return _mm256_and_ps(a, __f32vec8_abs_mask.m);
1279  }
__m128d m
Definition: dvec.h:71
int i[4]
Definition: dvec.h:70
__m256 __cdecl _mm256_and_ps(__m256, __m256)
__m256
Definition: immintrin.h:34
float add_horizontal ( const F32vec8 a)
friend
1197  {
1198  F32vec8 temp = _mm256_add_ps(a, _mm256_permute_ps(a, 0xee));
1199  temp = _mm256_add_ps(temp, _mm256_movehdup_ps(temp));
1201  }
__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:1135
float _mm_cvtss_f32(__m128 _A)
__m128 __cdecl _mm256_extractf128_ps(__m256, const int)
F32vec8 andnot ( const F32vec8 a,
const F32vec8 b 
)
friend
1204 { return _mm256_andnot_ps(a,b); }
__m256 __cdecl _mm256_andnot_ps(__m256, __m256)
F32vec8 cmp_eq ( const F32vec8 a,
const F32vec8 b 
)
friend
1243  { return _mm256_cmp_ps(a, b, _CMP_EQ_OQ); }
#define _CMP_EQ_OQ
Definition: immintrin.h:55
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_ge ( const F32vec8 a,
const F32vec8 b 
)
friend
1251  { return _mm256_cmp_ps(a, b, _CMP_GE_OS); }
#define _CMP_GE_OS
Definition: immintrin.h:70
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_gt ( const F32vec8 a,
const F32vec8 b 
)
friend
1249  { return _mm256_cmp_ps(a, b, _CMP_GT_OS); }
#define _CMP_GT_OS
Definition: immintrin.h:71
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_le ( const F32vec8 a,
const F32vec8 b 
)
friend
1247  { 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:57
F32vec8 cmp_lt ( const F32vec8 a,
const F32vec8 b 
)
friend
1245  { return _mm256_cmp_ps(a, b, _CMP_LT_OS); }
#define _CMP_LT_OS
Definition: immintrin.h:56
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_neq ( const F32vec8 a,
const F32vec8 b 
)
friend
1253  { return _mm256_cmp_ps(a, b, _CMP_NEQ_UQ); }
#define _CMP_NEQ_UQ
Definition: immintrin.h:59
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nge ( const F32vec8 a,
const F32vec8 b 
)
friend
1261  { return _mm256_cmp_ps(a, b, _CMP_NGE_US); }
#define _CMP_NGE_US
Definition: immintrin.h:65
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_ngt ( const F32vec8 a,
const F32vec8 b 
)
friend
1259  { return _mm256_cmp_ps(a, b, _CMP_NGT_US); }
#define _CMP_NGT_US
Definition: immintrin.h:67
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nle ( const F32vec8 a,
const F32vec8 b 
)
friend
1257  { return _mm256_cmp_ps(a, b, _CMP_NLE_US); }
#define _CMP_NLE_US
Definition: immintrin.h:61
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 cmp_nlt ( const F32vec8 a,
const F32vec8 b 
)
friend
1255  { return _mm256_cmp_ps(a, b, _CMP_NLT_US); }
#define _CMP_NLT_US
Definition: immintrin.h:60
__m256 __cdecl _mm256_cmp_ps(__m256, __m256, const int)
F32vec8 operator& ( const F32vec8 a,
const F32vec8 b 
)
friend
1177 { return _mm256_and_ps(a,b); }
__m256 __cdecl _mm256_and_ps(__m256, __m256)
F32vec8 operator* ( const F32vec8 a,
const F32vec8 b 
)
friend
1184 { return _mm256_mul_ps(a,b); }
__m256 __cdecl _mm256_mul_ps(__m256, __m256)
F32vec8 operator+ ( const F32vec8 a,
const F32vec8 b 
)
friend
1182 { return _mm256_add_ps(a,b); }
__m256 __cdecl _mm256_add_ps(__m256, __m256)
F32vec8 operator- ( const F32vec8 a,
const F32vec8 b 
)
friend
1183 { return _mm256_sub_ps(a,b); }
__m256 __cdecl _mm256_sub_ps(__m256, __m256)
F32vec8 operator/ ( const F32vec8 a,
const F32vec8 b 
)
friend
1185 { return _mm256_div_ps(a,b); }
__m256 __cdecl _mm256_div_ps(__m256, __m256)
F32vec8 operator^ ( const F32vec8 a,
const F32vec8 b 
)
friend
1179 { return _mm256_xor_ps(a,b); }
__m256 __cdecl _mm256_xor_ps(__m256, __m256)
F32vec8 operator| ( const F32vec8 a,
const F32vec8 b 
)
friend
1178 { return _mm256_or_ps(a,b); }
__m256 __cdecl _mm256_or_ps(__m256, __m256)
F32vec8 rcp ( const F32vec8 a)
friend
1210 { return _mm256_rcp_ps(a); }
__m256 __cdecl _mm256_rcp_ps(__m256)
F32vec8 rcp_nr ( const F32vec8 a)
friend
1220  {
1221  F32vec8 Ra0 = _mm256_rcp_ps(a);
1222  return _mm256_sub_ps(_mm256_add_ps(Ra0, Ra0), _mm256_mul_ps(_mm256_mul_ps(Ra0, a), Ra0));
1223  }
__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:1135
F32vec8 rsqrt ( const F32vec8 a)
friend
1213 { return _mm256_rsqrt_ps(a); }
__m256 __cdecl _mm256_rsqrt_ps(__m256)
F32vec8 rsqrt_nr ( const F32vec8 a)
friend
1230  {
1231 #pragma warning(push)
1232 #pragma warning(disable:4640)
1233  static const F32vec8 fvecf0pt5(0.5f);
1234  static const F32vec8 fvecf3pt0(3.0f);
1235 #pragma warning(pop)
1236  F32vec8 Ra0 = _mm256_rsqrt_ps(a);
1237  return (fvecf0pt5 * Ra0) * (fvecf3pt0 - (a * Ra0) * Ra0);
1238 
1239  }
__m256 __cdecl _mm256_rsqrt_ps(__m256)
Definition: dvec.h:1135
F32vec8 simd_max ( const F32vec8 a,
const F32vec8 b 
)
friend
1267  { return _mm256_max_ps(a,b); }
__m256 __cdecl _mm256_max_ps(__m256, __m256)
F32vec8 simd_min ( const F32vec8 a,
const F32vec8 b 
)
friend
1265  { return _mm256_min_ps(a,b); }
__m256 __cdecl _mm256_min_ps(__m256, __m256)
F32vec8 sqrt ( const F32vec8 a)
friend
1207 { 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: