summaryrefslogtreecommitdiff
path: root/libavcodec/arm/dcadsp_neon.S
diff options
context:
space:
mode:
authorChristophe Gisquet <christophe.gisquet@gmail.com>2014-02-05 23:40:52 +0000
committerJanne Grunau <janne-libav@jannau.net>2014-02-07 22:54:18 +0100
commit5fdbfcb5b793f5849c496214668094a8ec99fa07 (patch)
tree8f705b537443ec12285e367aa0747fd1fec1671b /libavcodec/arm/dcadsp_neon.S
parent5b59a9fc6152169599561f04b4f66370edda5c9c (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.S18
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