diff options
author | Christophe Gisquet <christophe.gisquet@gmail.com> | 2014-02-05 23:40:52 +0000 |
---|---|---|
committer | Janne Grunau <janne-libav@jannau.net> | 2014-02-07 22:54:18 +0100 |
commit | 5fdbfcb5b793f5849c496214668094a8ec99fa07 (patch) | |
tree | 8f705b537443ec12285e367aa0747fd1fec1671b /libavcodec/arm/dcadsp_neon.S | |
parent | 5b59a9fc6152169599561f04b4f66370edda5c9c (diff) |
dcadsp: split lfe_dir cases
The x86 runs short on registers because numerous elements are not static.
In addition, splitting them allows more optimized code, at least for x86.
Arm asm changes by Janne Grunau.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
Diffstat (limited to 'libavcodec/arm/dcadsp_neon.S')
-rw-r--r-- | libavcodec/arm/dcadsp_neon.S | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/libavcodec/arm/dcadsp_neon.S b/libavcodec/arm/dcadsp_neon.S index fe3aae801a..c798fea7f7 100644 --- a/libavcodec/arm/dcadsp_neon.S +++ b/libavcodec/arm/dcadsp_neon.S @@ -20,17 +20,23 @@ #include "libavutil/arm/asm.S" -function ff_dca_lfe_fir_neon, export=1 +function ff_dca_lfe_fir0_neon, export=1 push {r4-r6,lr} +NOVFP vmov s0, r3 @ scale + mov r3, #32 @ decifactor + mov r6, #256/32 + b dca_lfe_fir +endfunc +function ff_dca_lfe_fir1_neon, export=1 + push {r4-r6,lr} +NOVFP vmov s0, r3 @ scale + mov r3, #64 @ decifactor + mov r6, #256/64 +dca_lfe_fir: add r4, r0, r3, lsl #2 @ out2 add r5, r2, #256*4-16 @ cf1 sub r1, r1, #12 - cmp r3, #32 - ite eq - moveq r6, #256/32 - movne r6, #256/64 -NOVFP vldr s0, [sp, #16] @ scale mov lr, #-16 1: vmov.f32 q2, #0.0 @ v0 |