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
|