summaryrefslogtreecommitdiff
path: root/libavcodec/arm/ac3dsp_neon.S
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-03-12 22:17:14 +0000
committerMans Rullgard <mans@mansr.com>2011-04-05 01:11:16 +0100
commit5f2e6c0fd11f34ba7cd013a0b22d7bd0d60613b8 (patch)
tree6b1bc81fce4d5816756894a133a41472a90326f9 /libavcodec/arm/ac3dsp_neon.S
parent2310ee4b1cca48609d06774b7c3c70a5f38f3473 (diff)
ac3enc: NEON optimised extract_exponents
Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavcodec/arm/ac3dsp_neon.S')
-rw-r--r--libavcodec/arm/ac3dsp_neon.S20
1 files changed, 20 insertions, 0 deletions
diff --git a/libavcodec/arm/ac3dsp_neon.S b/libavcodec/arm/ac3dsp_neon.S
index d33d978d7c..946b39f25b 100644
--- a/libavcodec/arm/ac3dsp_neon.S
+++ b/libavcodec/arm/ac3dsp_neon.S
@@ -92,3 +92,23 @@ function ff_float_to_fixed24_neon, export=1
bgt 1b
bx lr
endfunc
+
+function ff_ac3_extract_exponents_neon, export=1
+ vmov.i32 q14, #24
+ vmov.i32 q15, #8
+1:
+ vld1.32 {q0}, [r1,:128]
+ vabs.s32 q1, q0
+ vclz.i32 q3, q1
+ vsub.i32 q3, q3, q15
+ vcge.s32 q2, q3, q14
+ vbit q3, q14, q2
+ vbic q0, q0, q2
+ vmovn.i32 d6, q3
+ vmovn.i16 d6, q3
+ vst1.32 {q0}, [r1,:128]!
+ vst1.32 {d6[0]}, [r0,:32]!
+ subs r2, r2, #4
+ bgt 1b
+ bx lr
+endfunc