3 #ifdef HAVE_XMMINTRIN_H
13 static __inline
void ApplyCoeffs(ALuint Offset
, ALfloat (*RESTRICT Values
)[2],
14 ALfloat (*RESTRICT Coeffs
)[2],
15 ALfloat left
, ALfloat right
)
17 const __m128 lrlr
= { left
, right
, left
, right
};
19 for(c
= 0;c
< HRIR_LENGTH
;c
+= 2)
21 const ALuint o0
= (Offset
++)&HRIR_MASK
;
22 const ALuint o1
= (Offset
++)&HRIR_MASK
;
23 __m128 coeffs
= _mm_load_ps(&Coeffs
[c
][0]);
24 __m128 vals
= { 0.0f
, 0.0f
, 0.0f
, 0.0f
};
25 vals
= _mm_loadl_pi(vals
, (__m64
*)&Values
[o0
][0]);
26 vals
= _mm_loadh_pi(vals
, (__m64
*)&Values
[o1
][0]);
28 vals
= _mm_add_ps(vals
, _mm_mul_ps(coeffs
, lrlr
));
29 _mm_storel_pi((__m64
*)&Values
[o0
][0], vals
);
30 _mm_storeh_pi((__m64
*)&Values
[o1
][0], vals
);
35 #define SAMPLER point32
36 #include "mixer_inc.c"
38 #define SAMPLER lerp32
39 #include "mixer_inc.c"
41 #define SAMPLER cubic32
42 #include "mixer_inc.c"