CMS 3D CMS Logo

Classes | Namespaces | Functions

/data/refman/pasoursint/CMSSW_5_3_0/src/DataFormats/Math/interface/AVXVec.h File Reference

Go to the source code of this file.

Classes

union  mathSSE::Vec4< double >

Namespaces

namespace  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 > b, double a)
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 > a)
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)
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 runTheMatrix::ret, and mathSSE::Vec4< double >::vec.

                                                  {
  using  mathSSE::_mm256_dot_pd;
  mathSSE::Vec4<double> ret;
  ret.vec = _mm256_dot_pd(a.vec,b.vec);
  return ret.arr[0];
}
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.

                                                                                {
  return  _mm256_andnot_pd(a.vec,b.vec);
}
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.

                                                                               {
  return _mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS);
}
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.

                                                                               {
  return _mm256_cmp_pd(a.vec,b.vec,_CMP_GT_OS);
}
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 ManipHist::sumHistograms().

                                                                              {
  return _mm256_hadd_pd(a.vec,b.vec);
}
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.

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

Definition at line 153 of file AVXVec.h.

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

                                                                     {
  return  _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
}
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.

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

Definition at line 149 of file AVXVec.h.

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

                                                                      {
  return  _mm256_mul_pd(_mm256_set1_pd(a),b.vec);
}
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.

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

Definition at line 114 of file AVXVec.h.

References neg, and mathSSE::Vec4< double >::vec.

                                                            {
  const __m256d neg = _mm256_set_pd ( -0.0 , -0.0 , -0.0, -0.0);
  return _mm256_xor_pd(a.vec,neg);
}
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.

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

Definition at line 157 of file AVXVec.h.

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

                                                                     {
  return  _mm256_div_pd(b.vec,_mm256_set1_pd(a));
}
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.

                                                                                   {
  return  _mm256_div_pd(a.vec,b.vec);
}
bool operator== ( mathSSE::Vec4< double >  a,
mathSSE::Vec4< double >  b 
) [inline]

Definition at line 96 of file AVXVec.h.

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

                                                                     {
  return _mm256_movemask_pd(_mm256_cmp_pd(a.vec,b.vec,_CMP_EQ_OS))==0xf;
}
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.

                                                                                   {
  return  _mm256_xor_pd(a.vec,b.vec);
}
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.

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