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 137 of file AVXVec.h.

References a, b, and runTheMatrix::ret.

138  {
139  using mathSSE::_mm256_dot_pd;
141  ret.vec = _mm256_dot_pd(a.vec, b.vec);
142  return ret.arr[0];
143 }
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 105 of file AVXVec.h.

References a, and b.

105  {
106  return _mm256_andnot_pd(a.vec, b.vec);
107 }
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 79 of file AVXVec.h.

References a, and b.

79  {
80  return _mm256_cmp_pd(a.vec, b.vec, _CMP_EQ_OS);
81 }
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 83 of file AVXVec.h.

References a, and b.

83  {
84  return _mm256_cmp_pd(a.vec, b.vec, _CMP_GT_OS);
85 }
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 87 of file AVXVec.h.

References a, and b.

87  {
88  return _mm256_hadd_pd(a.vec, b.vec);
89 }
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 96 of file AVXVec.h.

References a, and b.

96  {
97  return _mm256_and_pd(a.vec, b.vec);
98 }
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 117 of file AVXVec.h.

References a, and b.

117  {
118  return _mm256_mul_pd(a.vec, b.vec);
119 }
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 125 of file AVXVec.h.

References a, and b.

125  {
126  return _mm256_mul_pd(_mm256_set1_pd(a), b.vec);
127 }
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 129 of file AVXVec.h.

References a, and b.

129  {
130  return _mm256_mul_pd(_mm256_set1_pd(a), b.vec);
131 }
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 109 of file AVXVec.h.

References a, and b.

109  {
110  return _mm256_add_pd(a.vec, b.vec);
111 }
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 91 of file AVXVec.h.

References a.

91  {
92  const __m256d neg = _mm256_set_pd(-0.0, -0.0, -0.0, -0.0);
93  return _mm256_xor_pd(a.vec, neg);
94 }
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 113 of file AVXVec.h.

References a, and b.

113  {
114  return _mm256_sub_pd(a.vec, b.vec);
115 }
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 121 of file AVXVec.h.

References a, and b.

121  {
122  return _mm256_div_pd(a.vec, b.vec);
123 }
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 133 of file AVXVec.h.

References a, and b.

133  {
134  return _mm256_div_pd(b.vec, _mm256_set1_pd(a));
135 }
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 75 of file AVXVec.h.

References a, and b.

75  {
76  return _mm256_movemask_pd(_mm256_cmp_pd(a.vec, b.vec, _CMP_EQ_OS)) == 0xf;
77 }
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_xor_pd(a.vec, b.vec);
104 }
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_or_pd(a.vec, b.vec);
101 }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121