diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-04-28 19:03:20 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-04-28 19:06:11 +0400 |
commit | 95057b197268eaa45a96923d9a13e4181b2af809 (patch) | |
tree | 36743205d3909653c12758dae03ff0f0c1cbcf18 /libswresample/x86 | |
parent | 113738d6c289748bb6e32a1776986a97a2e2f515 (diff) |
swr: int16->int32: use the old index negate trick to avoid 2 adds
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample/x86')
-rw-r--r-- | libswresample/x86/audio_convert.asm | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libswresample/x86/audio_convert.asm b/libswresample/x86/audio_convert.asm index 118b5e3716..59de2d48fa 100644 --- a/libswresample/x86/audio_convert.asm +++ b/libswresample/x86/audio_convert.asm @@ -35,18 +35,20 @@ cglobal int16_to_int32_%1, 3, 3, 3, dst, src, len %else int16_to_int32_u_int %+ SUFFIX %endif + add dstq, lenq + shr lenq, 1 + add srcq, lenq + neg lenq .next - mov%1 m4, [srcq] - pxor m0, m0 - pxor m1, m1 - punpcklwd m0, m4 - punpckhwd m1, m4 - mov%1 [ dstq], m0 - mov%1 [mmsize + dstq], m1 - add srcq, mmsize - add dstq, 2*mmsize - sub lenq, 2*mmsize - jg .next + mov%1 m2, [srcq+lenq] + pxor m0, m0 + pxor m1, m1 + punpcklwd m0, m2 + punpckhwd m1, m2 + mov%1 [ dstq+2*lenq], m0 + mov%1 [mmsize + dstq+2*lenq], m1 + add lenq, mmsize + jl .next %if mmsize == 8 emms %endif |