]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/arm/vp8_armv6.S
dcadsp: add int8x8_fmul_int32 to dsp context
[ffmpeg] / libavcodec / arm / vp8_armv6.S
index 54c036b82a8f96441cbaec41f0df00ff96bb5002..3863dc31a5fb7e39b5b1c7dadc11f97b737ff80f 100644 (file)
@@ -1,39 +1,42 @@
-/**
+/*
  * Copyright (C) 2010 Mans Rullgard
  *
- * This file is part of FFmpeg.
+ * This file is part of Libav.
  *
- * FFmpeg is free software; you can redistribute it and/or
+ * Libav is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
- * FFmpeg is distributed in the hope that it will be useful,
+ * Libav is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
+ * License along with Libav; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
-
-        .syntax         unified
+#include "libavutil/arm/asm.S"
 
 .macro rac_get_prob     h, bs, buf, cw, pr, t0, t1
         adds            \bs, \bs, \t0
         lsl             \cw, \cw, \t0
         lsl             \t0, \h,  \t0
         rsb             \h,  \pr, #256
+        it              cs
         ldrhcs          \t1, [\buf], #2
         smlabb          \h,  \t0, \pr, \h
+T       itttt           cs
         rev16cs         \t1, \t1
-        orrcs           \cw, \cw, \t1, lsl \bs
+A       orrcs           \cw, \cw, \t1, lsl \bs
+T       lslcs           \t1, \t1, \bs
+T       orrcs           \cw, \cw, \t1
         subcs           \bs, \bs, #16
         lsr             \h,  \h,  #8
         cmp             \cw, \h,  lsl #16
+        itt             ge
         subge           \cw, \cw, \h,  lsl #16
         subge           \h,  \t0, \h
 .endm
         adds            \bs, \bs, \t0
         lsl             \cw, \cw, \t0
         lsl             \t0, \h,  \t0
+        it              cs
         ldrhcs          \t1, [\buf], #2
         mov             \h,  #128
+        it              cs
         rev16cs         \t1, \t1
         add             \h,  \h,  \t0, lsl #7
-        orrcs           \cw, \cw, \t1, lsl \bs
+A       orrcs           \cw, \cw, \t1, lsl \bs
+T       ittt            cs
+T       lslcs           \t1, \t1, \bs
+T       orrcs           \cw, \cw, \t1
         subcs           \bs, \bs, #16
         lsr             \h,  \h,  #8
         cmp             \cw, \h,  lsl #16
+        itt             ge
         subge           \cw, \cw, \h,  lsl #16
         subge           \h,  \t0, \h
 .endm
 
 function ff_decode_block_coeffs_armv6, export=1
         push            {r0,r1,r4-r11,lr}
-        movrel          lr,  ff_vp56_norm_shift
+        movrelx         lr,  X(ff_vp56_norm_shift)
         ldrd            r4,  r5,  [sp, #44]             @ token_prob, qmul
         cmp             r3,  #0
         ldr             r11, [r5]
         ldm             r0,  {r5-r7}                    @ high, bits, buf
+        it              ne
         pkhtbne         r11, r11, r11, asr #16
         ldr             r8,  [r0, #16]                  @ code_word
 0:
@@ -78,23 +88,30 @@ function ff_decode_block_coeffs_armv6, export=1
 
         add             r4,  r3,  r3,  lsl #5
         sxth            r12, r11
-        add             r4,  r2,  r4
+        add             r4,  r4,  r2
         adds            r6,  r6,  r9
         add             r4,  r4,  #11
         lsl             r8,  r8,  r9
+        it              cs
         ldrhcs          r10, [r7], #2
         lsl             r9,  r5,  r9
         mov             r5,  #128
+        it              cs
         rev16cs         r10, r10
         add             r5,  r5,  r9,  lsl #7
-        orrcs           r8,  r8,  r10, lsl r6
+T       ittt            cs
+T       lslcs           r10, r10, r6
+T       orrcs           r8,  r8,  r10
+A       orrcs           r8,  r8,  r10, lsl r6
         subcs           r6,  r6,  #16
         lsr             r5,  r5,  #8
         cmp             r8,  r5,  lsl #16
         movrel          r10, zigzag_scan-1
+        itt             ge
         subge           r8,  r8,  r5,  lsl #16
         subge           r5,  r9,  r5
         ldrb            r10, [r10, r3]
+        it              ge
         rsbge           r12, r12, #0
         cmp             r3,  #16
         strh            r12, [r1, r10]
@@ -110,6 +127,7 @@ function ff_decode_block_coeffs_armv6, export=1
         ldr             r0,  [sp]
         ldr             r9,  [r0, #12]
         cmp             r7,  r9
+        it              hi
         movhi           r7,  r9
         stm             r0,  {r5-r7}                    @ high, bits, buf
         str             r8,  [r0, #16]                  @ code_word
@@ -120,7 +138,7 @@ function ff_decode_block_coeffs_armv6, export=1
 2:
         add             r4,  r3,  r3,  lsl #5
         cmp             r3,  #16
-        add             r4,  r2,  r4
+        add             r4,  r4,  r2
         pkhtb           r11, r11, r11, asr #16
         bne             0b
         b               6b
@@ -133,11 +151,13 @@ function ff_decode_block_coeffs_armv6, export=1
         mov             r12, #2
         ldrb            r0,  [r4, #4]
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r12, #1
         ldrb            r9,  [lr, r5]
         blt             4f
         ldrb            r0,  [r4, #5]
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r12, #1
         ldrb            r9,  [lr, r5]
         b               4f
@@ -155,6 +175,7 @@ function ff_decode_block_coeffs_armv6, export=1
         mov             r12, #5
         mov             r0,  #159
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r12, r12, #1
         ldrb            r9,  [lr, r5]
         b               4f
@@ -162,25 +183,30 @@ function ff_decode_block_coeffs_armv6, export=1
         mov             r12, #7
         mov             r0,  #165
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r12, r12, #2
         ldrb            r9,  [lr, r5]
         mov             r0,  #145
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r12, r12, #1
         ldrb            r9,  [lr, r5]
         b               4f
 3:
         ldrb            r0,  [r4, #8]
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
+        it              ge
         addge           r4,  r4,  #1
         ldrb            r9,  [lr, r5]
+        ite             ge
         movge           r12, #2
         movlt           r12, #0
         ldrb            r0,  [r4, #9]
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
         mov             r9,  #8
+        it              ge
         addge           r12, r12, #1
-        movrel          r4,  ff_vp8_dct_cat_prob
+        movrelx         r4,  X(ff_vp8_dct_cat_prob), r1
         lsl             r9,  r9,  r12
         ldr             r4,  [r4, r12, lsl #2]
         add             r12, r9,  #3
@@ -191,6 +217,7 @@ function ff_decode_block_coeffs_armv6, export=1
         lsl             r1,  r1,  #1
         rac_get_prob    r5,  r6,  r7,  r8,  r0,  r9,  r10
         ldrb            r0,  [r4], #1
+        it              ge
         addge           r1,  r1,  #1
         cmp             r0,  #0
         bne             1b
@@ -199,9 +226,10 @@ function ff_decode_block_coeffs_armv6, export=1
         ldr             r1,  [sp, #4]
 4:
         add             r4,  r3,  r3,  lsl #5
-        add             r4,  r2,  r4
+        add             r4,  r4,  r2
         add             r4,  r4,  #22
         rac_get_128     r5,  r6,  r7,  r8,  r9,  r10
+        it              ge
         rsbge           r12, r12, #0
         smulbb          r12, r12, r11
         movrel          r9,  zigzag_scan-1
@@ -212,9 +240,9 @@ function ff_decode_block_coeffs_armv6, export=1
         b               5b
 endfunc
 
-        .section        .rodata
-zigzag_scan:
+const zigzag_scan
         .byte            0,  2,  8, 16
         .byte           10,  4,  6, 12
         .byte           18, 24, 26, 20
         .byte           14, 22, 28, 30
+endconst