summaryrefslogtreecommitdiff
path: root/libavcodec/arm/dcadsp_vfp.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_vfp.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_vfp.S')
-rw-r--r--libavcodec/arm/dcadsp_vfp.S32
1 files changed, 12 insertions, 20 deletions
diff --git a/libavcodec/arm/dcadsp_vfp.S b/libavcodec/arm/dcadsp_vfp.S
index 5892a84342..edabc29e23 100644
--- a/libavcodec/arm/dcadsp_vfp.S
+++ b/libavcodec/arm/dcadsp_vfp.S
@@ -24,7 +24,6 @@
POUT .req a1
PIN .req a2
PCOEF .req a3
-DECIFACTOR .req a4
OLDFPSCR .req a4
COUNTER .req ip
@@ -129,6 +128,15 @@ POST3 .req s27
.endm
.macro dca_lfe_fir decifactor
+function ff_dca_lfe_fir\decifactor\()_vfp, export=1
+NOVFP vmov s0, r3
+ fmrx OLDFPSCR, FPSCR
+ ldr ip, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1
+ fmxr FPSCR, ip
+ vldr IN0, [PIN, #-0*4]
+ vldr IN1, [PIN, #-1*4]
+ vldr IN2, [PIN, #-2*4]
+ vldr IN3, [PIN, #-3*4]
.if \decifactor == 32
.set JMAX, 8
vpush {s16-s31}
@@ -165,32 +173,16 @@ POST3 .req s27
.endif
fmxr FPSCR, OLDFPSCR
bx lr
+endfunc
.endm
-
-/* void ff_dca_lfe_fir_vfp(float *out, const float *in, const float *coefs,
- * int decifactor, float scale)
- */
-function ff_dca_lfe_fir_vfp, export=1
- teq DECIFACTOR, #32
- fmrx OLDFPSCR, FPSCR
- ldr ip, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1
- fmxr FPSCR, ip
-NOVFP vldr s0, [sp]
- vldr IN0, [PIN, #-0*4]
- vldr IN1, [PIN, #-1*4]
- vldr IN2, [PIN, #-2*4]
- vldr IN3, [PIN, #-3*4]
- beq 32f
-64: dca_lfe_fir 64
+ dca_lfe_fir 64
.ltorg
-32: dca_lfe_fir 32
-endfunc
+ dca_lfe_fir 32
.unreq POUT
.unreq PIN
.unreq PCOEF
- .unreq DECIFACTOR
.unreq OLDFPSCR
.unreq COUNTER