CMS 3D CMS Logo

Classes | Namespaces | Functions
AVXVec.h File Reference

Go to the source code of this file.

Classes

union  mathSSE::Vec4< double >
 

Namespaces

 mathSSE
 

Functions

double __attribute__ ((always_inline)) __attribute__((pure)) dot(mathSSE
 
mathSSE::Vec4< double > andnot (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > cmpeq (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > cmpgt (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > hadd (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator & (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator* (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator* (double a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator* (mathSSE::Vec4< double > b, double a)
 
mathSSE::Vec4< double > operator+ (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator- (mathSSE::Vec4< double > a)
 
mathSSE::Vec4< double > operator- (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator/ (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator/ (mathSSE::Vec4< double > b, double a)
 
bool operator== (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator^ (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 
mathSSE::Vec4< double > operator| (mathSSE::Vec4< double > a, mathSSE::Vec4< double > b)
 

Function Documentation

◆ __attribute__()

double __attribute__ ( (always_inline)  )
inline

Definition at line 140 of file AVXVec.h.

References a, b, and runTheMatrix::ret.

141  {
142  using mathSSE::_mm256_dot_pd;
144  ret.vec = _mm256_dot_pd(a.vec, b.vec);
145  return ret.arr[0];
146 }
ret
prodAgent to be discontinued
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ andnot()

mathSSE::Vec4<double> andnot ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 108 of file AVXVec.h.

References a, and b.

108  {
109  return _mm256_andnot_pd(a.vec, b.vec);
110 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ cmpeq()

mathSSE::Vec4<double> cmpeq ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 82 of file AVXVec.h.

References a, and b.

82  {
83  return _mm256_cmp_pd(a.vec, b.vec, _CMP_EQ_OS);
84 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ cmpgt()

mathSSE::Vec4<double> cmpgt ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 86 of file AVXVec.h.

References a, and b.

86  {
87  return _mm256_cmp_pd(a.vec, b.vec, _CMP_GT_OS);
88 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ hadd()

mathSSE::Vec4<double> hadd ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 90 of file AVXVec.h.

References a, and b.

90  {
91  return _mm256_hadd_pd(a.vec, b.vec);
92 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator &()

mathSSE::Vec4<double> operator& ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 99 of file AVXVec.h.

References a, and b.

99  {
100  return _mm256_and_pd(a.vec, b.vec);
101 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator*() [1/3]

mathSSE::Vec4<double> operator* ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 120 of file AVXVec.h.

References a, and b.

120  {
121  return _mm256_mul_pd(a.vec, b.vec);
122 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator*() [2/3]

mathSSE::Vec4<double> operator* ( double  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 128 of file AVXVec.h.

References a, and b.

128  {
129  return _mm256_mul_pd(_mm256_set1_pd(a), b.vec);
130 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator*() [3/3]

mathSSE::Vec4<double> operator* ( mathSSE::Vec4< double >  b,
double  a 
)
inline

Definition at line 132 of file AVXVec.h.

References a, and b.

132  {
133  return _mm256_mul_pd(_mm256_set1_pd(a), b.vec);
134 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator+()

mathSSE::Vec4<double> operator+ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 112 of file AVXVec.h.

References a, and b.

112  {
113  return _mm256_add_pd(a.vec, b.vec);
114 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator-() [1/2]

mathSSE::Vec4<double> operator- ( mathSSE::Vec4< double >  a)
inline

Definition at line 94 of file AVXVec.h.

References a.

94  {
95  const __m256d neg = _mm256_set_pd(-0.0, -0.0, -0.0, -0.0);
96  return _mm256_xor_pd(a.vec, neg);
97 }
double a
Definition: hdecay.h:121

◆ operator-() [2/2]

mathSSE::Vec4<double> operator- ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 116 of file AVXVec.h.

References a, and b.

116  {
117  return _mm256_sub_pd(a.vec, b.vec);
118 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator/() [1/2]

mathSSE::Vec4<double> operator/ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 124 of file AVXVec.h.

References a, and b.

124  {
125  return _mm256_div_pd(a.vec, b.vec);
126 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator/() [2/2]

mathSSE::Vec4<double> operator/ ( mathSSE::Vec4< double >  b,
double  a 
)
inline

Definition at line 136 of file AVXVec.h.

References a, and b.

136  {
137  return _mm256_div_pd(b.vec, _mm256_set1_pd(a));
138 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator==()

bool operator== ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 78 of file AVXVec.h.

References a, and b.

78  {
79  return _mm256_movemask_pd(_mm256_cmp_pd(a.vec, b.vec, _CMP_EQ_OS)) == 0xf;
80 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator^()

mathSSE::Vec4<double> operator^ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 105 of file AVXVec.h.

References a, and b.

105  {
106  return _mm256_xor_pd(a.vec, b.vec);
107 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

◆ operator|()

mathSSE::Vec4<double> operator| ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 102 of file AVXVec.h.

References a, and b.

102  {
103  return _mm256_or_pd(a.vec, b.vec);
104 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121