]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/arm/ac3dsp_neon.S
dashenc: Simplify code by using a local variable
[ffmpeg] / libavcodec / arm / ac3dsp_neon.S
index 43d4e612af4b06751a1cdb0ec2a76799afa89566..f97b1907df4e1c278fab14963e18f41cfc45f7df 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_ac3_max_msb_abs_int16_neon, export=1
         vmov.i16        q0,  #0
@@ -41,6 +41,7 @@ endfunc
 
 function ff_ac3_exponent_min_neon, export=1
         cmp             r1,  #0
+        it              eq
         bxeq            lr
         push            {lr}
         mov             r12, #256
@@ -78,3 +79,55 @@ function ff_ac3_rshift_int32_neon, export=1
         bgt             1b
         bx              lr
 endfunc
+
+function ff_float_to_fixed24_neon, export=1
+1:      vld1.32         {q0-q1},  [r1,:128]!
+        vcvt.s32.f32    q0,  q0,  #24
+        vld1.32         {q2-q3},  [r1,:128]!
+        vcvt.s32.f32    q1,  q1,  #24
+        vcvt.s32.f32    q2,  q2,  #24
+        vst1.32         {q0-q1},  [r0,:128]!
+        vcvt.s32.f32    q3,  q3,  #24
+        vst1.32         {q2-q3},  [r0,:128]!
+        subs            r2,  r2,  #16
+        bgt             1b
+        bx              lr
+endfunc
+
+function ff_ac3_extract_exponents_neon, export=1
+        vmov.i32        q15, #8
+1:
+        vld1.32         {q0},     [r1,:128]!
+        vabs.s32        q1,  q0
+        vclz.i32        q3,  q1
+        vsub.i32        q3,  q3,  q15
+        vmovn.i32       d6,  q3
+        vmovn.i16       d6,  q3
+        vst1.32         {d6[0]},  [r0,:32]!
+        subs            r2,  r2,  #4
+        bgt             1b
+        bx              lr
+endfunc
+
+function ff_apply_window_int16_neon, export=1
+        push            {r4,lr}
+        add             r4,  r1,  r3,  lsl #1
+        add             lr,  r0,  r3,  lsl #1
+        sub             r4,  r4,  #16
+        sub             lr,  lr,  #16
+        mov             r12, #-16
+1:
+        vld1.16         {q0},     [r1,:128]!
+        vld1.16         {q2},     [r2,:128]!
+        vld1.16         {q1},     [r4,:128], r12
+        vrev64.16       q3,  q2
+        vqrdmulh.s16    q0,  q0,  q2
+        vqrdmulh.s16    d2,  d2,  d7
+        vqrdmulh.s16    d3,  d3,  d6
+        vst1.16         {q0},     [r0,:128]!
+        vst1.16         {q1},     [lr,:128], r12
+        subs            r3,  r3,  #16
+        bgt             1b
+
+        pop             {r4,pc}
+endfunc