diff options
author | Chris Robinson <[email protected]> | 2012-08-29 01:56:04 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2012-08-29 01:56:04 -0700 |
commit | 3c042a054d3cf714959ec58d81e77fc6d8cbb650 (patch) | |
tree | 54d059752660607c040f8c62e082a979a1959857 /Alc/mixer_sse.c | |
parent | 332d66c18301b913d46e22fd24c3d4782bea1568 (diff) |
Add an SSE-enhanced path for applying the mixer matrix
Diffstat (limited to 'Alc/mixer_sse.c')
-rw-r--r-- | Alc/mixer_sse.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Alc/mixer_sse.c b/Alc/mixer_sse.c index bbca54ec..270817fb 100644 --- a/Alc/mixer_sse.c +++ b/Alc/mixer_sse.c @@ -61,6 +61,21 @@ static __inline void ApplyCoeffs(ALuint Offset, ALfloat (*RESTRICT Values)[2], } } + +static __inline void ApplyValue(ALfloat *RESTRICT Output, ALfloat value, const ALfloat *DrySend) +{ + const __m128 val4 = _mm_set1_ps(value); + ALuint c; + for(c = 0;c < MaxChannels;c += 4) + { + const __m128 gains = _mm_load_ps(&DrySend[c]); + __m128 out = _mm_load_ps(&Output[c]); + out = _mm_add_ps(out, _mm_mul_ps(val4, gains)); + _mm_store_ps(&Output[c], out); + } +} + + #define SUFFIX SSE #define SAMPLER point32 #include "mixer_inc.c" |