Classes for explicit (done by the programmer) vectorization (SIMD) of computations.
More...
|
| FORCEINLINE ARRAY_T | operator- (const ARRAY_T &x) |
| |
| FORCEINLINE ARRAY_T | sqrt (const ARRAY_T &x) |
| |
| FORCEINLINE ARRAY_T | abs (const ARRAY_T &x) |
| |
| FORCEINLINE ARRAY_T | sign (const ARRAY_T &x) |
| |
| FORCEINLINE ARRAY_T | operator+ (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator+ (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator+ (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator- (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator- (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator- (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator* (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator* (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator* (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator/ (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator/ (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator/ (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator< (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator< (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator< (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator> (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator> (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator> (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator== (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator== (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator== (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator!= (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator!= (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator!= (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator<= (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator<= (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator<= (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | operator>= (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | operator>= (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | operator>= (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | fmax (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | fmax (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | fmax (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | fmin (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | fmin (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | fmin (SCALAR_T b, const ARRAY_T &a) |
| |
| FORCEINLINE ARRAY_T | exp (const ARRAY_T &x) |
| |
| FORCEINLINE ARRAY_T | pow (const ARRAY_T &a, const ARRAY_T &b) |
| |
| FORCEINLINE ARRAY_T | pow (const ARRAY_T &a, SCALAR_T b) |
| |
| FORCEINLINE ARRAY_T | pow (SCALAR_T b, const ARRAY_T &a) |
| |
| template<class T > |
| constexpr size_t | simd::preferredLen () |
| | Convert the SIMD size (bytes) to a lenght (num elems).
|
| |
| template<> |
| constexpr size_t | simd::preferredLen< su2double > () |
| |
| __m128d | simd::set1_p (SizeTag::TWO, double p) |
| |
| __m128d | simd::load_p (SizeTag::TWO, const double *p) |
| |
| __m128d | simd::loadu_p (SizeTag::TWO, const double *p) |
| |
| void | simd::store_p (double *p, __m128d x) |
| |
| void | simd::storeu_p (double *p, __m128d x) |
| |
| void | simd::stream_p (double *p, __m128d x) |
| |
| __m128d | simd::add_p (__m128d a, __m128d b) |
| |
| __m128d | simd::sub_p (__m128d a, __m128d b) |
| |
| __m128d | simd::mul_p (__m128d a, __m128d b) |
| |
| __m128d | simd::div_p (__m128d a, __m128d b) |
| |
| __m128d | simd::max_p (__m128d a, __m128d b) |
| |
| __m128d | simd::min_p (__m128d a, __m128d b) |
| |
| __m128d | simd::eq_p (__m128d a, __m128d b) |
| |
| __m128d | simd::lt_p (__m128d a, __m128d b) |
| |
| __m128d | simd::le_p (__m128d a, __m128d b) |
| |
| __m128d | simd::ne_p (__m128d a, __m128d b) |
| |
| __m128d | simd::ge_p (__m128d a, __m128d b) |
| |
| __m128d | simd::gt_p (__m128d a, __m128d b) |
| |
| __m128d | simd::sqrt_p (__m128d x) |
| |
| __m128d | simd::abs_p (__m128d x) |
| |
| __m128d | simd::neg_p (__m128d x) |
| |
| __m128d | simd::sign_p (__m128d x) |
| |
| __m128 | simd::set1_p (SizeTag::FOUR, float p) |
| |
| __m128 | simd::load_p (SizeTag::FOUR, const float *p) |
| |
| __m128 | simd::loadu_p (SizeTag::FOUR, const float *p) |
| |
| void | simd::store_p (float *p, __m128 x) |
| |
| void | simd::storeu_p (float *p, __m128 x) |
| |
| void | simd::stream_p (float *p, __m128 x) |
| |
| __m128 | simd::add_p (__m128 a, __m128 b) |
| |
| __m128 | simd::sub_p (__m128 a, __m128 b) |
| |
| __m128 | simd::mul_p (__m128 a, __m128 b) |
| |
| __m128 | simd::div_p (__m128 a, __m128 b) |
| |
| __m128 | simd::max_p (__m128 a, __m128 b) |
| |
| __m128 | simd::min_p (__m128 a, __m128 b) |
| |
| __m128 | simd::eq_p (__m128 a, __m128 b) |
| |
| __m128 | simd::lt_p (__m128 a, __m128 b) |
| |
| __m128 | simd::le_p (__m128 a, __m128 b) |
| |
| __m128 | simd::ne_p (__m128 a, __m128 b) |
| |
| __m128 | simd::ge_p (__m128 a, __m128 b) |
| |
| __m128 | simd::gt_p (__m128 a, __m128 b) |
| |
| __m128 | simd::sqrt_p (__m128 x) |
| |
| __m128 | simd::abs_p (__m128 x) |
| |
| __m128 | simd::neg_p (__m128 x) |
| |
| __m128 | simd::sign_p (__m128 x) |
| |
Classes for explicit (done by the programmer) vectorization (SIMD) of computations.