diff options
author | Chris Robinson <[email protected]> | 2014-02-23 21:17:09 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-02-23 21:17:09 -0800 |
commit | 9a4ded249114007d07b8f96277a1fd50f2f48e6f (patch) | |
tree | 5321731ad58fd0ad00471532e25407dafab44515 /Alc/mixer_neon.c | |
parent | c68ce288d06372ff5cfd4c060c1f7b00058ca4d9 (diff) |
Revert "Apply HRTF coefficient stepping separately"
This reverts commit 25b9c3d0c15e959d544f5d0ac7ea507ea5f6d69f.
Conflicts:
Alc/mixer_neon.c
Unfortunately this also undoes the Neon-enhanced ApplyCoeffsStep method.
Diffstat (limited to 'Alc/mixer_neon.c')
-rw-r--r-- | Alc/mixer_neon.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Alc/mixer_neon.c b/Alc/mixer_neon.c index 0aa450ad..65e702eb 100644 --- a/Alc/mixer_neon.c +++ b/Alc/mixer_neon.c @@ -10,19 +10,22 @@ #include "alu.h" -static inline void ApplyCoeffsStep(const ALuint IrSize, +static inline void ApplyCoeffsStep(ALuint Offset, ALfloat (*restrict Values)[2], + const ALuint IrSize, ALfloat (*restrict Coeffs)[2], - const ALfloat (*restrict CoeffStep)[2]) + const ALfloat (*restrict CoeffStep)[2], + ALfloat left, ALfloat right) { float32x4_t coeffs, deltas; ALuint c; for(c = 0;c < IrSize;c += 2) { - coeffs = vld1q_f32(&Coeffs[c][0]); - deltas = vld1q_f32(&CoeffStep[c][0]); - coeffs = vaddq_f32(coeffs, deltas); - vst1q_f32(&Coeffs[c][0], coeffs); + const ALuint off = (Offset+c)&HRIR_MASK; + Values[off][0] += Coeffs[c][0] * left; + Values[off][1] += Coeffs[c][1] * right; + Coeffs[c][0] += CoeffStep[c][0]; + Coeffs[c][1] += CoeffStep[c][1]; } } |