summaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
Diffstat (limited to 'Alc')
-rw-r--r--Alc/mixer_inc.c2
-rw-r--r--Alc/mixer_sse.c6
2 files changed, 2 insertions, 6 deletions
diff --git a/Alc/mixer_inc.c b/Alc/mixer_inc.c
index 21166b60..b7051f64 100644
--- a/Alc/mixer_inc.c
+++ b/Alc/mixer_inc.c
@@ -53,7 +53,7 @@ void MERGE4(MixDirect_Hrtf_,SAMPLER,_,SUFFIX)(
ALfloat (*RESTRICT Values)[2] = Source->Hrtf.Values[i];
ALint Counter = maxu(Source->Hrtf.Counter, OutPos) - OutPos;
ALuint Offset = Source->Hrtf.Offset + OutPos;
- ALfloat Coeffs[HRIR_LENGTH][2];
+ ALfloat Coeffs[HRIR_LENGTH][2] ALIGN(16);
ALuint Delay[2];
ALfloat left, right;
diff --git a/Alc/mixer_sse.c b/Alc/mixer_sse.c
index e189971a..2da2b6b8 100644
--- a/Alc/mixer_sse.c
+++ b/Alc/mixer_sse.c
@@ -20,16 +20,12 @@ static __inline void ApplyCoeffs(ALuint Offset, ALfloat (*RESTRICT Values)[2],
{
const ALuint o0 = (Offset++)&HRIR_MASK;
const ALuint o1 = (Offset++)&HRIR_MASK;
+ __m128 coeffs = _mm_load_ps(&Coeffs[c][0]);
__m128 vals = { 0.0f, 0.0f, 0.0f, 0.0f };
- __m128 coeffs = { 0.0f, 0.0f, 0.0f, 0.0f };
-
vals = _mm_loadl_pi(vals, (__m64*)&Values[o0][0]);
vals = _mm_loadh_pi(vals, (__m64*)&Values[o1][0]);
- coeffs = _mm_loadl_pi(coeffs, (__m64*)&Coeffs[c ][0]);
- coeffs = _mm_loadh_pi(coeffs, (__m64*)&Coeffs[c+1][0]);
vals = _mm_add_ps(vals, _mm_mul_ps(coeffs, lrlr));
-
_mm_storel_pi((__m64*)&Values[o0][0], vals);
_mm_storeh_pi((__m64*)&Values[o1][0], vals);
}