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

double __attribute__ ( (always_inline)  )
inline

Definition at line 163 of file AVXVec.h.

References mathSSE::Vec4< T >::__attribute__(), a, b, cross(), hadd(), and mathSSE::Vec4< double >::vec.

164  {
165  using mathSSE::_mm256_dot_pd;
167  ret.vec = _mm256_dot_pd(a.vec,b.vec);
168  return ret.arr[0];
169 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
mathSSE::Vec4<double> andnot ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 128 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

128  {
129  return _mm256_andnot_pd(a.vec,b.vec);
130 }
mathSSE::Vec4<double> cmpeq ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 100 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

100  {
101  return _mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS);
102 }
mathSSE::Vec4<double> cmpgt ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 104 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

104  {
105  return _mm256_cmp_pd(a.vec,b.vec,_CMP_GT_OS);
106 }
mathSSE::Vec4<double> hadd ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 108 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by __attribute__(), and mathSSE::as3D().

108  {
109  return _mm256_hadd_pd(a.vec,b.vec);
110 }
mathSSE::Vec4<double> operator& ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 119 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

119  {
120  return _mm256_and_pd(a.vec,b.vec);
121 }
mathSSE::Vec4<double> operator* ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 141 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

141  {
142  return _mm256_mul_pd(a.vec,b.vec);
143 }
mathSSE::Vec4<double> operator* ( double  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 149 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

149  {
150  return _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
151 }
double a
Definition: hdecay.h:121
mathSSE::Vec4<double> operator* ( mathSSE::Vec4< double >  b,
double  a 
)
inline

Definition at line 153 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

153  {
154  return _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
155 }
double a
Definition: hdecay.h:121
mathSSE::Vec4<double> operator+ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 133 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

133  {
134  return _mm256_add_pd(a.vec,b.vec);
135 }
mathSSE::Vec4<double> operator- ( mathSSE::Vec4< double >  a)
inline

Definition at line 114 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

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 }
mathSSE::Vec4<double> operator- ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 137 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

137  {
138  return _mm256_sub_pd(a.vec,b.vec);
139 }
mathSSE::Vec4<double> operator/ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 145 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

145  {
146  return _mm256_div_pd(a.vec,b.vec);
147 }
mathSSE::Vec4<double> operator/ ( mathSSE::Vec4< double >  b,
double  a 
)
inline

Definition at line 157 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

157  {
158  return _mm256_div_pd(b.vec,_mm256_set1_pd(a));
159 }
double a
Definition: hdecay.h:121
bool operator== ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 96 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

96  {
97  return _mm256_movemask_pd(_mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS))==0xf;
98 }
mathSSE::Vec4<double> operator^ ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 125 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

125  {
126  return _mm256_xor_pd(a.vec,b.vec);
127 }
mathSSE::Vec4<double> operator| ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
)
inline

Definition at line 122 of file AVXVec.h.

References mathSSE::Vec4< double >::vec.

Referenced by mathSSE::as3D().

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