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* (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)
 
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 163 of file AVXVec.h.

164  {
165  using mathSSE::_mm256_dot_pd;
167  ret.vec = _mm256_dot_pd(a.vec,b.vec);
168  return ret.arr[0];
169 }

References a, b, and runTheMatrix::ret.

◆ andnot()

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

Definition at line 128 of file AVXVec.h.

128  {
129  return _mm256_andnot_pd(a.vec,b.vec);
130 }

References a, and b.

◆ cmpeq()

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

Definition at line 100 of file AVXVec.h.

100  {
101  return _mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS);
102 }

References a, and b.

◆ cmpgt()

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

Definition at line 104 of file AVXVec.h.

104  {
105  return _mm256_cmp_pd(a.vec,b.vec,_CMP_GT_OS);
106 }

References a, and b.

◆ hadd()

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

Definition at line 108 of file AVXVec.h.

108  {
109  return _mm256_hadd_pd(a.vec,b.vec);
110 }

References a, and b.

◆ operator&()

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

Definition at line 119 of file AVXVec.h.

119  {
120  return _mm256_and_pd(a.vec,b.vec);
121 }

References a, and b.

◆ operator*() [1/3]

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

Definition at line 149 of file AVXVec.h.

149  {
150  return _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
151 }

References a, and b.

◆ operator*() [2/3]

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

Definition at line 141 of file AVXVec.h.

141  {
142  return _mm256_mul_pd(a.vec,b.vec);
143 }

References a, and b.

◆ operator*() [3/3]

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

Definition at line 153 of file AVXVec.h.

153  {
154  return _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
155 }

References a, and b.

◆ operator+()

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

Definition at line 133 of file AVXVec.h.

133  {
134  return _mm256_add_pd(a.vec,b.vec);
135 }

References a, and b.

◆ operator-() [1/2]

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

Definition at line 114 of file AVXVec.h.

114  {
115  const __m256d neg = _mm256_set_pd ( -0.0 , -0.0 , -0.0, -0.0);
116  return _mm256_xor_pd(a.vec,neg);
117 }

References a.

◆ operator-() [2/2]

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

Definition at line 137 of file AVXVec.h.

137  {
138  return _mm256_sub_pd(a.vec,b.vec);
139 }

References a, and b.

◆ operator/() [1/2]

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

Definition at line 145 of file AVXVec.h.

145  {
146  return _mm256_div_pd(a.vec,b.vec);
147 }

References a, and b.

◆ operator/() [2/2]

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

Definition at line 157 of file AVXVec.h.

157  {
158  return _mm256_div_pd(b.vec,_mm256_set1_pd(a));
159 }

References a, and b.

◆ operator==()

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

Definition at line 96 of file AVXVec.h.

96  {
97  return _mm256_movemask_pd(_mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS))==0xf;
98 }

References a, and b.

◆ operator^()

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

Definition at line 125 of file AVXVec.h.

125  {
126  return _mm256_xor_pd(a.vec,b.vec);
127 }

References a, and b.

◆ operator|()

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

Definition at line 122 of file AVXVec.h.

122  {
123  return _mm256_or_pd(a.vec,b.vec);
124 }

References a, and b.

runTheMatrix.ret
ret
prodAgent to be discontinued
Definition: runTheMatrix.py:355
mathSSE::Vec4< double >
Definition: AVXVec.h:9
b
double b
Definition: hdecay.h:118
a
double a
Definition: hdecay.h:119