annotate arm/dsputil_armv6.S @ 12483:0159a19bfff7 libavcodec

aacdec: Rework channel mapping compatibility hacks. For a PCE based configuration map the channels solely based on tags. For an indexed configuration map the channels solely based on position. This works with all known exotic samples including al17, elem_id0, bad_concat, and lfe_is_sce.
author alexc
date Fri, 10 Sep 2010 18:01:48 +0000
parents 361a5fcb4393
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
1 /*
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
2 * Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
3 *
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
4 * This file is part of FFmpeg.
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
5 *
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
10 *
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
14 * Lesser General Public License for more details.
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
15 *
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
19 */
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
20
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
21 #include "asm.S"
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
22
11241
cbf3161706f4 ARM: add missing preserve8 directives
mru
parents: 11117
diff changeset
23 preserve8
cbf3161706f4 ARM: add missing preserve8 directives
mru
parents: 11117
diff changeset
24
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
25 .text
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
26
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
27 .macro call_2x_pixels type, subp
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
28 function ff_\type\()_pixels16\subp\()_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
29 push {r0-r3, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
30 bl ff_\type\()_pixels8\subp\()_armv6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
31 pop {r0-r3, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
32 add r0, r0, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
33 add r1, r1, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
34 b ff_\type\()_pixels8\subp\()_armv6
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
35 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
36 .endm
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
37
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
38 call_2x_pixels avg
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
39 call_2x_pixels put, _x2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
40 call_2x_pixels put, _y2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
41 call_2x_pixels put, _x2_no_rnd
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
42 call_2x_pixels put, _y2_no_rnd
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
43
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
44 function ff_put_pixels16_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
45 push {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
46 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
47 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
48 ldr r6, [r1, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
49 ldr r7, [r1, #12]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
50 ldr r4, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
51 strd r6, r7, [r0, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
52 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
53 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
54 ldr r10, [r1, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
55 ldr r11, [r1, #12]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
56 ldr r8, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
57 strd r10, r11, [r0, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
58 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
59 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
60 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
61
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
62 pop {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
63 bx lr
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
64 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
65
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
66 function ff_put_pixels8_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
67 push {r4-r7}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
68 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
69 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
70 ldr r4, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
71 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
72 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
73 ldr r6, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
74 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
75 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
76 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
77
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
78 pop {r4-r7}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
79 bx lr
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
80 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
81
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
82 function ff_put_pixels8_x2_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
83 push {r4-r11, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
84 mov r12, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
85 orr r12, r12, r12, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
86 orr r12, r12, r12, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
87 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
88 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
89 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
90 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
91 ldr r7, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
92 lsr r6, r4, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
93 ldr r8, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
94 orr r6, r6, r5, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
95 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
96 ldr r11, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
97 lsr r10, r8, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
98 add r1, r1, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
99 orr r10, r10, r9, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
100 eor r14, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
101 uhadd8 r4, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
102 eor r6, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
103 uhadd8 r5, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
104 and r14, r14, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
105 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
106 uadd8 r4, r4, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
107 eor r14, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
108 uadd8 r5, r5, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
109 eor r6, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
110 uhadd8 r8, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
111 and r14, r14, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
112 uhadd8 r9, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
113 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
114 uadd8 r8, r8, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
115 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
116 uadd8 r9, r9, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
117 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
118 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
119
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
120 pop {r4-r11, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
121 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
122
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
123 function ff_put_pixels8_y2_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
124 push {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
125 mov r12, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
126 orr r12, r12, r12, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
127 orr r12, r12, r12, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
128 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
129 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
130 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
131 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
132 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
133 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
134 uhadd8 r8, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
135 eor r10, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
136 uhadd8 r9, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
137 eor r11, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
138 and r10, r10, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
139 ldr r4, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
140 uadd8 r8, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
141 and r11, r11, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
142 uadd8 r9, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
143 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
144 uhadd8 r10, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
145 eor r6, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
146 uhadd8 r11, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
147 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
148 eor r7, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
149 uadd8 r10, r10, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
150 and r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
151 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
152 uadd8 r11, r11, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
153 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
154 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
155 strd r10, r11, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
156 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
157
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
158 pop {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
159 bx lr
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
160 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
161
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
162 function ff_put_pixels8_x2_no_rnd_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
163 push {r4-r9, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
164 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
165 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
166 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
167 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
168 ldr r7, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
169 ldr r8, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
170 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
171 ldr r14, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
172 add r1, r1, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
173 lsr r6, r4, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
174 orr r6, r6, r5, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
175 lsr r12, r8, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
176 orr r12, r12, r9, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
177 uhadd8 r4, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
178 uhadd8 r5, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
179 uhadd8 r8, r8, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
180 uhadd8 r9, r9, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
181 stm r0, {r4,r5}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
182 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
183 stm r0, {r8,r9}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
184 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
185 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
186
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
187 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
188 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
189
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
190 function ff_put_pixels8_y2_no_rnd_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
191 push {r4-r9, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
192 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
193 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
194 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
195 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
196 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
197 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
198 uhadd8 r8, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
199 ldr r4, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
200 uhadd8 r9, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
201 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
202 uhadd8 r12, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
203 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
204 uhadd8 r14, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
205 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
206 stm r0, {r8,r9}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
207 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
208 stm r0, {r12,r14}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
209 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
210 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
211
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
212 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
213 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
214
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
215 function ff_avg_pixels8_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
216 pld [r1, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
217 push {r4-r10, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
218 mov lr, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
219 orr lr, lr, lr, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
220 orr lr, lr, lr, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
221 ldrd r4, r5, [r0]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
222 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
223 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
224 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
225 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
226 pld [r1, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
227 eor r8, r4, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
228 uhadd8 r4, r4, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
229 eor r12, r5, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
230 ldrd r6, r7, [r0, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
231 uhadd8 r5, r5, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
232 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
233 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
234 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
235 uadd8 r4, r4, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
236 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
237 eor r8, r6, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
238 uadd8 r5, r5, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
239 pld [r1, r2, lsl #1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
240 eor r12, r7, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
241 uhadd8 r6, r6, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
242 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
243 uhadd8 r7, r7, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
244 beq 2f
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
245 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
246 ldrd r4, r5, [r0, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
247 uadd8 r6, r6, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
248 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
249 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
250 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
251 uadd8 r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
252 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
253 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
254 b 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
255 2:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
256 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
257 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
258 uadd8 r6, r6, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
259 uadd8 r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
260 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
261
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
262 pop {r4-r10, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
263 endfunc
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
264
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
265 function ff_add_pixels_clamped_armv6, export=1
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
266 push {r4-r8,lr}
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
267 mov r3, #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
268 1:
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
269 ldm r0!, {r4,r5,r12,lr}
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
270 ldrd r6, r7, [r1]
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
271 pkhbt r8, r4, r5, lsl #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
272 pkhtb r5, r5, r4, asr #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
273 pkhbt r4, r12, lr, lsl #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
274 pkhtb lr, lr, r12, asr #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
275 pld [r1, r2]
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
276 uxtab16 r8, r8, r6
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
277 uxtab16 r5, r5, r6, ror #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
278 uxtab16 r4, r4, r7
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
279 uxtab16 lr, lr, r7, ror #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
280 usat16 r8, #8, r8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
281 usat16 r5, #8, r5
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
282 usat16 r4, #8, r4
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
283 usat16 lr, #8, lr
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
284 orr r6, r8, r5, lsl #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
285 orr r7, r4, lr, lsl #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
286 subs r3, r3, #1
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
287 strd r6, r7, [r1], r2
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
288 bgt 1b
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
289 pop {r4-r8,pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
290 endfunc
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
291
11113
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
292 function ff_get_pixels_armv6, export=1
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
293 pld [r1, r2]
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
294 push {r4-r8, lr}
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
295 mov lr, #8
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
296 1:
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
297 ldrd r4, r5, [r1], r2
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
298 subs lr, lr, #1
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
299 uxtb16 r6, r4
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
300 uxtb16 r4, r4, ror #8
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
301 uxtb16 r12, r5
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
302 uxtb16 r8, r5, ror #8
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
303 pld [r1, r2]
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
304 pkhbt r5, r6, r4, lsl #16
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
305 pkhtb r6, r4, r6, asr #16
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
306 pkhbt r7, r12, r8, lsl #16
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
307 pkhtb r12, r8, r12, asr #16
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
308 stm r0!, {r5,r6,r7,r12}
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
309 bgt 1b
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
310
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
311 pop {r4-r8, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
312 endfunc
11113
b529129c4563 ARMv6 optimised get_pixels
mru
parents: 11112
diff changeset
313
11114
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
314 function ff_diff_pixels_armv6, export=1
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
315 pld [r1, r3]
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
316 pld [r2, r3]
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
317 push {r4-r9, lr}
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
318 mov lr, #8
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
319 1:
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
320 ldrd r4, r5, [r1], r3
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
321 ldrd r6, r7, [r2], r3
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
322 uxtb16 r8, r4
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
323 uxtb16 r4, r4, ror #8
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
324 uxtb16 r9, r6
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
325 uxtb16 r6, r6, ror #8
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
326 pld [r1, r3]
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
327 ssub16 r9, r8, r9
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
328 ssub16 r6, r4, r6
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
329 uxtb16 r8, r5
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
330 uxtb16 r5, r5, ror #8
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
331 pld [r2, r3]
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
332 pkhbt r4, r9, r6, lsl #16
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
333 pkhtb r6, r6, r9, asr #16
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
334 uxtb16 r9, r7
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
335 uxtb16 r7, r7, ror #8
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
336 ssub16 r9, r8, r9
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
337 ssub16 r5, r5, r7
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
338 subs lr, lr, #1
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
339 pkhbt r8, r9, r5, lsl #16
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
340 pkhtb r9, r5, r9, asr #16
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
341 stm r0!, {r4,r6,r8,r9}
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
342 bgt 1b
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
343
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
344 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
345 endfunc
11114
852772c36cc6 ARMv6 optimised diff_pixels
mru
parents: 11113
diff changeset
346
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
347 function ff_pix_abs16_armv6, export=1
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
348 ldr r0, [sp]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
349 push {r4-r9, lr}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
350 mov r12, #0
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
351 mov lr, #0
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
352 ldm r1, {r4-r7}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
353 ldr r8, [r2]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
354 1:
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
355 ldr r9, [r2, #4]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
356 pld [r1, r3]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
357 usada8 r12, r4, r8, r12
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
358 ldr r8, [r2, #8]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
359 pld [r2, r3]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
360 usada8 lr, r5, r9, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
361 ldr r9, [r2, #12]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
362 usada8 r12, r6, r8, r12
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
363 subs r0, r0, #1
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
364 usada8 lr, r7, r9, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
365 beq 2f
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
366 add r1, r1, r3
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
367 ldm r1, {r4-r7}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
368 add r2, r2, r3
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
369 ldr r8, [r2]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
370 b 1b
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
371 2:
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
372 add r0, r12, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
373 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
374 endfunc
11110
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
375
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
376 function ff_pix_abs16_x2_armv6, export=1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
377 ldr r12, [sp]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
378 push {r4-r11, lr}
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
379 mov r0, #0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
380 mov lr, #1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
381 orr lr, lr, lr, lsl #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
382 orr lr, lr, lr, lsl #16
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
383 1:
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
384 ldr r8, [r2]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
385 ldr r9, [r2, #4]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
386 lsr r10, r8, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
387 ldr r4, [r1]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
388 lsr r6, r9, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
389 orr r10, r10, r9, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
390 ldr r5, [r2, #8]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
391 eor r11, r8, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
392 uhadd8 r7, r8, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
393 orr r6, r6, r5, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
394 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
395 uadd8 r7, r7, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
396 ldr r8, [r1, #4]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
397 usada8 r0, r4, r7, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
398 eor r7, r9, r6
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
399 lsr r10, r5, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
400 and r7, r7, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
401 uhadd8 r4, r9, r6
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
402 ldr r6, [r2, #12]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
403 uadd8 r4, r4, r7
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
404 pld [r1, r3]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
405 orr r10, r10, r6, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
406 usada8 r0, r8, r4, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
407 ldr r4, [r1, #8]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
408 eor r11, r5, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
409 ldrb r7, [r2, #16]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
410 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
411 uhadd8 r8, r5, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
412 ldr r5, [r1, #12]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
413 uadd8 r8, r8, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
414 pld [r2, r3]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
415 lsr r10, r6, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
416 usada8 r0, r4, r8, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
417 orr r10, r10, r7, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
418 subs r12, r12, #1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
419 eor r11, r6, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
420 add r1, r1, r3
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
421 uhadd8 r9, r6, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
422 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
423 uadd8 r9, r9, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
424 add r2, r2, r3
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
425 usada8 r0, r5, r9, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
426 bgt 1b
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
427
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
428 pop {r4-r11, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
429 endfunc
11111
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
430
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
431 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
432 ldr \n0, [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
433 eor \n1, \p0, \n0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
434 uhadd8 \p0, \p0, \n0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
435 and \n1, \n1, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
436 ldr \n2, [r1]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
437 uadd8 \p0, \p0, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
438 ldr \n1, [r2, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
439 usada8 r0, \p0, \n2, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
440 pld [r1, r3]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
441 eor \n3, \p1, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
442 uhadd8 \p1, \p1, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
443 and \n3, \n3, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
444 ldr \p0, [r1, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
445 uadd8 \p1, \p1, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
446 ldr \n2, [r2, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
447 usada8 r0, \p1, \p0, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
448 pld [r2, r3]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
449 eor \p0, \p2, \n2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
450 uhadd8 \p2, \p2, \n2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
451 and \p0, \p0, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
452 ldr \p1, [r1, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
453 uadd8 \p2, \p2, \p0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
454 ldr \n3, [r2, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
455 usada8 r0, \p2, \p1, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
456 eor \p1, \p3, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
457 uhadd8 \p3, \p3, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
458 and \p1, \p1, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
459 ldr \p0, [r1, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
460 uadd8 \p3, \p3, \p1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
461 add r1, r1, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
462 usada8 r0, \p3, \p0, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
463 add r2, r2, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
464 .endm
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
465
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
466 function ff_pix_abs16_y2_armv6, export=1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
467 pld [r1]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
468 pld [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
469 ldr r12, [sp]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
470 push {r4-r11, lr}
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
471 mov r0, #0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
472 mov lr, #1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
473 orr lr, lr, lr, lsl #8
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
474 orr lr, lr, lr, lsl #16
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
475 ldr r4, [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
476 ldr r5, [r2, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
477 ldr r6, [r2, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
478 ldr r7, [r2, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
479 add r2, r2, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
480 1:
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
481 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
482 subs r12, r12, #2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
483 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
484 bgt 1b
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
485
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
486 pop {r4-r11, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
487 endfunc
11112
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
488
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
489 function ff_pix_abs8_armv6, export=1
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
490 pld [r2, r3]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
491 ldr r12, [sp]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
492 push {r4-r9, lr}
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
493 mov r0, #0
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
494 mov lr, #0
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
495 ldrd r4, r5, [r1], r3
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
496 1:
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
497 subs r12, r12, #2
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
498 ldr r7, [r2, #4]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
499 ldr r6, [r2], r3
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
500 ldrd r8, r9, [r1], r3
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
501 usada8 r0, r4, r6, r0
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
502 pld [r2, r3]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
503 usada8 lr, r5, r7, lr
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
504 ldr r7, [r2, #4]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
505 ldr r6, [r2], r3
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
506 beq 2f
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
507 ldrd r4, r5, [r1], r3
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
508 usada8 r0, r8, r6, r0
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
509 pld [r2, r3]
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
510 usada8 lr, r9, r7, lr
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
511 b 1b
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
512 2:
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
513 usada8 r0, r8, r6, r0
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
514 usada8 lr, r9, r7, lr
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
515 add r0, r0, lr
ffe1ea72ea29 ARMv6 optimised pix_abs8
mru
parents: 11111
diff changeset
516 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
517 endfunc
11115
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
518
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
519 function ff_sse16_armv6, export=1
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
520 ldr r12, [sp]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
521 push {r4-r9, lr}
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
522 mov r0, #0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
523 1:
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
524 ldrd r4, r5, [r1]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
525 ldr r8, [r2]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
526 uxtb16 lr, r4
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
527 uxtb16 r4, r4, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
528 uxtb16 r9, r8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
529 uxtb16 r8, r8, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
530 ldr r7, [r2, #4]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
531 usub16 lr, lr, r9
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
532 usub16 r4, r4, r8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
533 smlad r0, lr, lr, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
534 uxtb16 r6, r5
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
535 uxtb16 lr, r5, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
536 uxtb16 r8, r7
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
537 uxtb16 r9, r7, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
538 smlad r0, r4, r4, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
539 ldrd r4, r5, [r1, #8]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
540 usub16 r6, r6, r8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
541 usub16 r8, lr, r9
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
542 ldr r7, [r2, #8]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
543 smlad r0, r6, r6, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
544 uxtb16 lr, r4
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
545 uxtb16 r4, r4, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
546 uxtb16 r9, r7
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
547 uxtb16 r7, r7, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
548 smlad r0, r8, r8, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
549 ldr r8, [r2, #12]
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
550 usub16 lr, lr, r9
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
551 usub16 r4, r4, r7
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
552 smlad r0, lr, lr, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
553 uxtb16 r6, r5
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
554 uxtb16 r5, r5, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
555 uxtb16 r9, r8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
556 uxtb16 r8, r8, ror #8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
557 smlad r0, r4, r4, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
558 usub16 r6, r6, r9
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
559 usub16 r5, r5, r8
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
560 smlad r0, r6, r6, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
561 add r1, r1, r3
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
562 add r2, r2, r3
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
563 subs r12, r12, #1
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
564 smlad r0, r5, r5, r0
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
565 bgt 1b
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
566
3fba8a5c6288 ARMv6 optimised sse16
mru
parents: 11114
diff changeset
567 pop {r4-r9, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
568 endfunc
11116
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
569
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
570 function ff_pix_norm1_armv6, export=1
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
571 push {r4-r6, lr}
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
572 mov r12, #16
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
573 mov lr, #0
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
574 1:
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
575 ldm r0, {r2-r5}
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
576 uxtb16 r6, r2
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
577 uxtb16 r2, r2, ror #8
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
578 smlad lr, r6, r6, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
579 uxtb16 r6, r3
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
580 smlad lr, r2, r2, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
581 uxtb16 r3, r3, ror #8
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
582 smlad lr, r6, r6, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
583 uxtb16 r6, r4
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
584 smlad lr, r3, r3, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
585 uxtb16 r4, r4, ror #8
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
586 smlad lr, r6, r6, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
587 uxtb16 r6, r5
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
588 smlad lr, r4, r4, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
589 uxtb16 r5, r5, ror #8
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
590 smlad lr, r6, r6, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
591 subs r12, r12, #1
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
592 add r0, r0, r1
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
593 smlad lr, r5, r5, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
594 bgt 1b
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
595
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
596 mov r0, lr
0198e3582544 ARMv6 optimised pix_norm1
mru
parents: 11115
diff changeset
597 pop {r4-r6, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
598 endfunc
11117
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
599
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
600 function ff_pix_sum_armv6, export=1
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
601 push {r4-r7, lr}
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
602 mov r12, #16
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
603 mov r2, #0
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
604 mov r3, #0
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
605 mov lr, #0
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
606 ldr r4, [r0]
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
607 1:
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
608 subs r12, r12, #1
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
609 ldr r5, [r0, #4]
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
610 usada8 r2, r4, lr, r2
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
611 ldr r6, [r0, #8]
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
612 usada8 r3, r5, lr, r3
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
613 ldr r7, [r0, #12]
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
614 usada8 r2, r6, lr, r2
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
615 beq 2f
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
616 ldr r4, [r0, r1]!
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
617 usada8 r3, r7, lr, r3
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
618 bgt 1b
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
619 2:
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
620 usada8 r3, r7, lr, r3
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
621 add r0, r2, r3
ad6d17b36a3a ARMv6 optimised pix_sum
mru
parents: 11116
diff changeset
622 pop {r4-r7, pc}
11443
361a5fcb4393 ARM: set size of asm functions in object files
mru
parents: 11241
diff changeset
623 endfunc