annotate arm/dsputil_armv6.S @ 11111:95b1fd6057d3 libavcodec

ARMv6 optimised pix_abs16_y2
author mru
date Tue, 09 Feb 2010 16:13:31 +0000
parents 45de2da90eaf
children ffe1ea72ea29
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
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
23 .text
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
24
11108
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
25 .macro call_2x_pixels type, subp
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
26 function ff_\type\()_pixels16\subp\()_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
27 push {r0-r3, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
28 bl ff_\type\()_pixels8\subp\()_armv6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
29 pop {r0-r3, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
30 add r0, r0, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
31 add r1, r1, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
32 b ff_\type\()_pixels8\subp\()_armv6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
33 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
34 .endm
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
35
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
36 call_2x_pixels avg
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
37 call_2x_pixels put, _x2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
38 call_2x_pixels put, _y2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
39 call_2x_pixels put, _x2_no_rnd
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
40 call_2x_pixels put, _y2_no_rnd
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
41
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
42 function ff_put_pixels16_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
43 push {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
44 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
45 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
46 ldr r6, [r1, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
47 ldr r7, [r1, #12]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
48 ldr r4, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
49 strd r6, r7, [r0, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
50 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
51 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
52 ldr r10, [r1, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
53 ldr r11, [r1, #12]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
54 ldr r8, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
55 strd r10, r11, [r0, #8]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
56 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
57 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
58 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
59
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
60 pop {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
61 bx lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
62 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
63
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
64 function ff_put_pixels8_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
65 push {r4-r7}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
66 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
67 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
68 ldr r4, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
69 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
70 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
71 ldr r6, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
72 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
73 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
74 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
75
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
76 pop {r4-r7}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
77 bx lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
78 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
79
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
80 function ff_put_pixels8_x2_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
81 push {r4-r11, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
82 mov r12, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
83 orr r12, r12, r12, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
84 orr r12, r12, r12, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
85 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
86 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
87 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
88 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
89 ldr r7, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
90 lsr r6, r4, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
91 ldr r8, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
92 orr r6, r6, r5, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
93 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
94 ldr r11, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
95 lsr r10, r8, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
96 add r1, r1, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
97 orr r10, r10, r9, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
98 eor r14, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
99 uhadd8 r4, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
100 eor r6, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
101 uhadd8 r5, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
102 and r14, r14, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
103 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
104 uadd8 r4, r4, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
105 eor r14, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
106 uadd8 r5, r5, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
107 eor r6, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
108 uhadd8 r8, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
109 and r14, r14, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
110 uhadd8 r9, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
111 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
112 uadd8 r8, r8, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
113 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
114 uadd8 r9, r9, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
115 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
116 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
117
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
118 pop {r4-r11, pc}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
119 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
120
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
121 function ff_put_pixels8_y2_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
122 push {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
123 mov r12, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
124 orr r12, r12, r12, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
125 orr r12, r12, r12, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
126 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
127 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
128 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
129 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
130 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
131 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
132 uhadd8 r8, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
133 eor r10, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
134 uhadd8 r9, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
135 eor r11, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
136 and r10, r10, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
137 ldr r4, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
138 uadd8 r8, r8, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
139 and r11, r11, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
140 uadd8 r9, r9, r11
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
141 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
142 uhadd8 r10, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
143 eor r6, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
144 uhadd8 r11, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
145 and r6, r6, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
146 eor r7, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
147 uadd8 r10, r10, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
148 and r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
149 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
150 uadd8 r11, r11, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
151 strd r8, r9, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
152 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
153 strd r10, r11, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
154 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
155
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
156 pop {r4-r11}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
157 bx lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
158 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
159
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
160 function ff_put_pixels8_x2_no_rnd_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
161 push {r4-r9, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
162 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
163 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
164 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
165 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
166 ldr r7, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
167 ldr r8, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
168 ldr r9, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
169 ldr r14, [r1, #5]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
170 add r1, r1, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
171 lsr r6, r4, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
172 orr r6, r6, r5, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
173 lsr r12, r8, #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
174 orr r12, r12, r9, lsl #24
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
175 uhadd8 r4, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
176 uhadd8 r5, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
177 uhadd8 r8, r8, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
178 uhadd8 r9, r9, r14
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
179 stm r0, {r4,r5}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
180 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
181 stm r0, {r8,r9}
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 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
184
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
185 pop {r4-r9, pc}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
186 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
187
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
188 function ff_put_pixels8_y2_no_rnd_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
189 push {r4-r9, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
190 ldr r4, [r1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
191 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
192 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
193 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
194 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
195 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
196 uhadd8 r8, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
197 ldr r4, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
198 uhadd8 r9, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
199 ldr r5, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
200 uhadd8 r12, r4, r6
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
201 ldr r6, [r1, r2]!
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
202 uhadd8 r14, r5, r7
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
203 ldr r7, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
204 stm r0, {r8,r9}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
205 add r0, r0, r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
206 stm r0, {r12,r14}
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 bne 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
209
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
210 pop {r4-r9, pc}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
211 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
212
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
213 function ff_avg_pixels8_armv6, export=1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
214 pld [r1, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
215 push {r4-r10, lr}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
216 mov lr, #1
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
217 orr lr, lr, lr, lsl #8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
218 orr lr, lr, lr, lsl #16
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
219 ldrd r4, r5, [r0]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
220 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
221 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
222 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
223 1:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
224 pld [r1, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
225 eor r8, r4, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
226 uhadd8 r4, r4, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
227 eor r12, r5, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
228 ldrd r6, r7, [r0, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
229 uhadd8 r5, r5, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
230 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
231 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
232 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
233 uadd8 r4, r4, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
234 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
235 eor r8, r6, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
236 uadd8 r5, r5, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
237 pld [r1, r2, lsl #1]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
238 eor r12, r7, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
239 uhadd8 r6, r6, r9
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
240 strd r4, r5, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
241 uhadd8 r7, r7, r10
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
242 beq 2f
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
243 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
244 ldrd r4, r5, [r0, r2]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
245 uadd8 r6, r6, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
246 ldr r10, [r1, #4]
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
247 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
248 subs r3, r3, #2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
249 uadd8 r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
250 ldr r9, [r1], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
251 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
252 b 1b
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
253 2:
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
254 and r8, r8, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
255 and r12, r12, lr
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
256 uadd8 r6, r6, r8
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
257 uadd8 r7, r7, r12
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
258 strd r6, r7, [r0], r2
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
259
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
260 pop {r4-r10, pc}
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
261 .endfunc
0f845e20982a ARMv6 optimised put_pixels functions except xy2 variants
mru
parents: 10372
diff changeset
262
10372
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
263 function ff_add_pixels_clamped_armv6, export=1
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
264 push {r4-r8,lr}
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
265 mov r3, #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
266 1:
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
267 ldm r0!, {r4,r5,r12,lr}
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
268 ldrd r6, r7, [r1]
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
269 pkhbt r8, r4, r5, lsl #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
270 pkhtb r5, r5, r4, asr #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
271 pkhbt r4, r12, lr, lsl #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
272 pkhtb lr, lr, r12, asr #16
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
273 pld [r1, r2]
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
274 uxtab16 r8, r8, r6
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
275 uxtab16 r5, r5, r6, ror #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
276 uxtab16 r4, r4, r7
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
277 uxtab16 lr, lr, r7, ror #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
278 usat16 r8, #8, r8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
279 usat16 r5, #8, r5
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
280 usat16 r4, #8, r4
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
281 usat16 lr, #8, lr
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
282 orr r6, r8, r5, lsl #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
283 orr r7, r4, lr, lsl #8
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
284 subs r3, r3, #1
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
285 strd r6, r7, [r1], r2
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
286 bgt 1b
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
287 pop {r4-r8,pc}
e55d957ef1a2 ARM: ARMv6 optimised add_pixels_clamped()
mru
parents:
diff changeset
288 .endfunc
11109
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
289
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
290 function ff_pix_abs16_armv6, export=1
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
291 ldr r0, [sp]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
292 push {r4-r9, lr}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
293 mov r12, #0
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
294 mov lr, #0
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
295 ldm r1, {r4-r7}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
296 ldr r8, [r2]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
297 1:
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
298 ldr r9, [r2, #4]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
299 pld [r1, r3]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
300 usada8 r12, r4, r8, r12
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
301 ldr r8, [r2, #8]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
302 pld [r2, r3]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
303 usada8 lr, r5, r9, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
304 ldr r9, [r2, #12]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
305 usada8 r12, r6, r8, r12
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
306 subs r0, r0, #1
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
307 usada8 lr, r7, r9, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
308 beq 2f
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
309 add r1, r1, r3
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
310 ldm r1, {r4-r7}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
311 add r2, r2, r3
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
312 ldr r8, [r2]
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
313 b 1b
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
314 2:
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
315 add r0, r12, lr
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
316 pop {r4-r9, pc}
9f00412b0bc8 ARMv6 optimised pix_abs16
mru
parents: 11108
diff changeset
317 .endfunc
11110
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
318
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
319 function ff_pix_abs16_x2_armv6, export=1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
320 ldr r12, [sp]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
321 push {r4-r11, lr}
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
322 mov r0, #0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
323 mov lr, #1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
324 orr lr, lr, lr, lsl #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
325 orr lr, lr, lr, lsl #16
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
326 1:
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
327 ldr r8, [r2]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
328 ldr r9, [r2, #4]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
329 lsr r10, r8, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
330 ldr r4, [r1]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
331 lsr r6, r9, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
332 orr r10, r10, r9, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
333 ldr r5, [r2, #8]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
334 eor r11, r8, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
335 uhadd8 r7, r8, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
336 orr r6, r6, r5, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
337 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
338 uadd8 r7, r7, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
339 ldr r8, [r1, #4]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
340 usada8 r0, r4, r7, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
341 eor r7, r9, r6
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
342 lsr r10, r5, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
343 and r7, r7, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
344 uhadd8 r4, r9, r6
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
345 ldr r6, [r2, #12]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
346 uadd8 r4, r4, r7
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
347 pld [r1, r3]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
348 orr r10, r10, r6, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
349 usada8 r0, r8, r4, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
350 ldr r4, [r1, #8]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
351 eor r11, r5, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
352 ldrb r7, [r2, #16]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
353 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
354 uhadd8 r8, r5, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
355 ldr r5, [r1, #12]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
356 uadd8 r8, r8, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
357 pld [r2, r3]
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
358 lsr r10, r6, #8
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
359 usada8 r0, r4, r8, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
360 orr r10, r10, r7, lsl #24
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
361 subs r12, r12, #1
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
362 eor r11, r6, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
363 add r1, r1, r3
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
364 uhadd8 r9, r6, r10
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
365 and r11, r11, lr
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
366 uadd8 r9, r9, r11
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
367 add r2, r2, r3
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
368 usada8 r0, r5, r9, r0
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
369 bgt 1b
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
370
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
371 pop {r4-r11, pc}
45de2da90eaf ARMv6 optimised pix_abs16_x2
mru
parents: 11109
diff changeset
372 .endfunc
11111
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
373
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
374 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
375 ldr \n0, [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
376 eor \n1, \p0, \n0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
377 uhadd8 \p0, \p0, \n0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
378 and \n1, \n1, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
379 ldr \n2, [r1]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
380 uadd8 \p0, \p0, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
381 ldr \n1, [r2, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
382 usada8 r0, \p0, \n2, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
383 pld [r1, r3]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
384 eor \n3, \p1, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
385 uhadd8 \p1, \p1, \n1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
386 and \n3, \n3, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
387 ldr \p0, [r1, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
388 uadd8 \p1, \p1, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
389 ldr \n2, [r2, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
390 usada8 r0, \p1, \p0, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
391 pld [r2, r3]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
392 eor \p0, \p2, \n2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
393 uhadd8 \p2, \p2, \n2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
394 and \p0, \p0, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
395 ldr \p1, [r1, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
396 uadd8 \p2, \p2, \p0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
397 ldr \n3, [r2, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
398 usada8 r0, \p2, \p1, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
399 eor \p1, \p3, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
400 uhadd8 \p3, \p3, \n3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
401 and \p1, \p1, lr
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
402 ldr \p0, [r1, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
403 uadd8 \p3, \p3, \p1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
404 add r1, r1, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
405 usada8 r0, \p3, \p0, r0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
406 add r2, r2, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
407 .endm
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
408
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
409 function ff_pix_abs16_y2_armv6, export=1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
410 pld [r1]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
411 pld [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
412 ldr r12, [sp]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
413 push {r4-r11, lr}
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
414 mov r0, #0
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
415 mov lr, #1
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
416 orr lr, lr, lr, lsl #8
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
417 orr lr, lr, lr, lsl #16
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
418 ldr r4, [r2]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
419 ldr r5, [r2, #4]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
420 ldr r6, [r2, #8]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
421 ldr r7, [r2, #12]
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
422 add r2, r2, r3
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
423 1:
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
424 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
425 subs r12, r12, #2
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
426 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
427 bgt 1b
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
428
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
429 pop {r4-r11, pc}
95b1fd6057d3 ARMv6 optimised pix_abs16_y2
mru
parents: 11110
diff changeset
430 .endfunc