28 #ifndef INCLUDE_VOLK_VOLK_SSE3_INTRINSICS_H_
29 #define INCLUDE_VOLK_VOLK_SSE3_INTRINSICS_H_
30 #include <pmmintrin.h>
34 __m128 yl, yh, tmp1, tmp2;
35 yl = _mm_moveldup_ps(y);
36 yh = _mm_movehdup_ps(y);
37 tmp1 = _mm_mul_ps(x, yl);
38 x = _mm_shuffle_ps(x, x, 0xB1);
39 tmp2 = _mm_mul_ps(x, yh);
40 return _mm_addsub_ps(tmp1,
46 const __m128 conjugator = _mm_setr_ps(0, -0.f, 0, -0.f);
47 y = _mm_xor_ps(y, conjugator);
53 cplxValue1 = _mm_mul_ps(cplxValue1, cplxValue1);
54 cplxValue2 = _mm_mul_ps(cplxValue2, cplxValue2);
55 return _mm_hadd_ps(cplxValue1, cplxValue2);
64 const __m128 symbols1,
74 const __m128 diff0 = _mm_sub_ps(symbols0, points0);
75 const __m128 diff1 = _mm_sub_ps(symbols1, points1);
77 return _mm_mul_ps(norms, scalar);