summaryrefslogtreecommitdiff
path: root/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
blob: 1472699be0d841bab140c0efe97d9232553ae19d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
--- ffmpeg-3.4.1.orig/libavcodec/arm/synth_filter_vfp.S	2016-03-29 04:25:11.000000000 +0200
+++ ffmpeg-3.4.1/libavcodec/arm/synth_filter_vfp.S	2017-07-27 02:09:00.326946211 +0200
@@ -1,6 +1,5 @@
 /*
  * Copyright (c) 2013 RISC OS Open Ltd
- * Author: Ben Avison <bavison@riscosopen.org>
  *
  * This file is part of FFmpeg.
  *
@@ -17,6 +16,8 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Ben Avison <bavison@riscosopen.org>
  */
 
 #include "libavutil/arm/asm.S"
@@ -124,7 +125,7 @@ function ff_synth_filter_float_vfp, expo
         push    {r3-r7,lr}
         vpush   {s16-s31}
         ldr     lr, [P_SB_OFF]
-        add     a2, ORIG_P_SB, lr, lsl #2 @ calculate synth_buf to pass to imdct_half
+        add     a2, ORIG_P_SB, lr, LSL #2 @ calculate synth_buf to pass to imdct_half
         mov     P_SB, a2                  @ and keep a copy for ourselves
         bic     J_WRAP, lr, #63           @ mangled to make testing for wrap easier in inner loop
         sub     lr, lr, #32
@@ -132,12 +133,12 @@ function ff_synth_filter_float_vfp, expo
         str     lr, [P_SB_OFF]            @ rotate offset, modulo buffer size, ready for next call
         ldr     a3, [sp, #(16+6+2)*4]     @ fetch in from stack, to pass to imdct_half
 VFP     vmov    s16, SCALE                @ imdct_half is free to corrupt s0, but it contains one of our arguments in hardfp case
-        bl      X(ff_imdct_half_vfp)
+        bl      ff_imdct_half_c
 VFP     vmov    SCALE, s16
 
-        fmrx    OLDFPSCR, FPSCR
+        vmrs    OLDFPSCR, FPSCR
         ldr     lr, =0x03030000           @ RunFast mode, short vectors of length 4, stride 1
-        fmxr    FPSCR, lr
+        vmsr    FPSCR, lr
         ldr     P_SB2_DN, [sp, #16*4]
         ldr     P_WIN_DN, [sp, #(16+6+0)*4]
         ldr     P_OUT_DN, [sp, #(16+6+1)*4]
@@ -196,48 +197,10 @@ NOVFP   vldr    SCALE, [sp, #(16+6+3)*4]
         vstmdb  P_SB2_DN!, {VD0-VD3}
         bne     1b
 
-        fmxr    FPSCR, OLDFPSCR
+        vmsr    FPSCR, OLDFPSCR
         vpop    {s16-s31}
         pop     {r3-r7,pc}
 endfunc
 
-        .unreq  IMDCT
-        .unreq  ORIG_P_SB
-        .unreq  P_SB_OFF
-        .unreq  I
-        .unreq  P_SB2_UP
-        .unreq  OLDFPSCR
-        .unreq  P_SB2_DN
-        .unreq  P_WIN_DN
-        .unreq  P_OUT_DN
-        .unreq  P_SB
-        .unreq  J_WRAP
-        .unreq  P_WIN_UP
-        .unreq  P_OUT_UP
-
-        .unreq  SCALE
-        .unreq  SBUF_DAT_REV0
-        .unreq  SBUF_DAT_REV1
-        .unreq  SBUF_DAT_REV2
-        .unreq  SBUF_DAT_REV3
-        .unreq  VA0
-        .unreq  VA3
-        .unreq  VB0
-        .unreq  VB3
-        .unreq  VC0
-        .unreq  VC3
-        .unreq  VD0
-        .unreq  VD3
-        .unreq  SBUF_DAT0
-        .unreq  SBUF_DAT1
-        .unreq  SBUF_DAT2
-        .unreq  SBUF_DAT3
-        .unreq  SBUF_DAT_ALT0
-        .unreq  SBUF_DAT_ALT1
-        .unreq  SBUF_DAT_ALT2
-        .unreq  SBUF_DAT_ALT3
-        .unreq  WIN_DN_DAT0
-        .unreq  WIN_UP_DAT0
-
         .align  3
 zero:   .word   0, 0