Mercurial > libavcodec.hg
annotate arm/dsputil_armv6.S @ 11112:ffe1ea72ea29 libavcodec
ARMv6 optimised pix_abs8
author | mru |
---|---|
date | Tue, 09 Feb 2010 16:13:34 +0000 |
parents | 95b1fd6057d3 |
children | b529129c4563 |
rev | line source |
---|---|
10372 | 1 /* |
2 * Copyright (c) 2009 Mans Rullgard <mans@mansr.com> | |
3 * | |
4 * This file is part of FFmpeg. | |
5 * | |
6 * FFmpeg is free software; you can redistribute it and/or | |
7 * modify it under the terms of the GNU Lesser General Public | |
8 * License as published by the Free Software Foundation; either | |
9 * version 2.1 of the License, or (at your option) any later version. | |
10 * | |
11 * FFmpeg is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 * Lesser General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU Lesser General Public | |
17 * License along with FFmpeg; if not, write to the Free Software | |
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
19 */ | |
20 | |
21 #include "asm.S" | |
22 | |
23 .text | |
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 | 263 function ff_add_pixels_clamped_armv6, export=1 |
264 push {r4-r8,lr} | |
265 mov r3, #8 | |
266 1: | |
267 ldm r0!, {r4,r5,r12,lr} | |
268 ldrd r6, r7, [r1] | |
269 pkhbt r8, r4, r5, lsl #16 | |
270 pkhtb r5, r5, r4, asr #16 | |
271 pkhbt r4, r12, lr, lsl #16 | |
272 pkhtb lr, lr, r12, asr #16 | |
273 pld [r1, r2] | |
274 uxtab16 r8, r8, r6 | |
275 uxtab16 r5, r5, r6, ror #8 | |
276 uxtab16 r4, r4, r7 | |
277 uxtab16 lr, lr, r7, ror #8 | |
278 usat16 r8, #8, r8 | |
279 usat16 r5, #8, r5 | |
280 usat16 r4, #8, r4 | |
281 usat16 lr, #8, lr | |
282 orr r6, r8, r5, lsl #8 | |
283 orr r7, r4, lr, lsl #8 | |
284 subs r3, r3, #1 | |
285 strd r6, r7, [r1], r2 | |
286 bgt 1b | |
287 pop {r4-r8,pc} | |
288 .endfunc | |
11109 | 289 |
290 function ff_pix_abs16_armv6, export=1 | |
291 ldr r0, [sp] | |
292 push {r4-r9, lr} | |
293 mov r12, #0 | |
294 mov lr, #0 | |
295 ldm r1, {r4-r7} | |
296 ldr r8, [r2] | |
297 1: | |
298 ldr r9, [r2, #4] | |
299 pld [r1, r3] | |
300 usada8 r12, r4, r8, r12 | |
301 ldr r8, [r2, #8] | |
302 pld [r2, r3] | |
303 usada8 lr, r5, r9, lr | |
304 ldr r9, [r2, #12] | |
305 usada8 r12, r6, r8, r12 | |
306 subs r0, r0, #1 | |
307 usada8 lr, r7, r9, lr | |
308 beq 2f | |
309 add r1, r1, r3 | |
310 ldm r1, {r4-r7} | |
311 add r2, r2, r3 | |
312 ldr r8, [r2] | |
313 b 1b | |
314 2: | |
315 add r0, r12, lr | |
316 pop {r4-r9, pc} | |
317 .endfunc | |
11110 | 318 |
319 function ff_pix_abs16_x2_armv6, export=1 | |
320 ldr r12, [sp] | |
321 push {r4-r11, lr} | |
322 mov r0, #0 | |
323 mov lr, #1 | |
324 orr lr, lr, lr, lsl #8 | |
325 orr lr, lr, lr, lsl #16 | |
326 1: | |
327 ldr r8, [r2] | |
328 ldr r9, [r2, #4] | |
329 lsr r10, r8, #8 | |
330 ldr r4, [r1] | |
331 lsr r6, r9, #8 | |
332 orr r10, r10, r9, lsl #24 | |
333 ldr r5, [r2, #8] | |
334 eor r11, r8, r10 | |
335 uhadd8 r7, r8, r10 | |
336 orr r6, r6, r5, lsl #24 | |
337 and r11, r11, lr | |
338 uadd8 r7, r7, r11 | |
339 ldr r8, [r1, #4] | |
340 usada8 r0, r4, r7, r0 | |
341 eor r7, r9, r6 | |
342 lsr r10, r5, #8 | |
343 and r7, r7, lr | |
344 uhadd8 r4, r9, r6 | |
345 ldr r6, [r2, #12] | |
346 uadd8 r4, r4, r7 | |
347 pld [r1, r3] | |
348 orr r10, r10, r6, lsl #24 | |
349 usada8 r0, r8, r4, r0 | |
350 ldr r4, [r1, #8] | |
351 eor r11, r5, r10 | |
352 ldrb r7, [r2, #16] | |
353 and r11, r11, lr | |
354 uhadd8 r8, r5, r10 | |
355 ldr r5, [r1, #12] | |
356 uadd8 r8, r8, r11 | |
357 pld [r2, r3] | |
358 lsr r10, r6, #8 | |
359 usada8 r0, r4, r8, r0 | |
360 orr r10, r10, r7, lsl #24 | |
361 subs r12, r12, #1 | |
362 eor r11, r6, r10 | |
363 add r1, r1, r3 | |
364 uhadd8 r9, r6, r10 | |
365 and r11, r11, lr | |
366 uadd8 r9, r9, r11 | |
367 add r2, r2, r3 | |
368 usada8 r0, r5, r9, r0 | |
369 bgt 1b | |
370 | |
371 pop {r4-r11, pc} | |
372 .endfunc | |
11111 | 373 |
374 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3 | |
375 ldr \n0, [r2] | |
376 eor \n1, \p0, \n0 | |
377 uhadd8 \p0, \p0, \n0 | |
378 and \n1, \n1, lr | |
379 ldr \n2, [r1] | |
380 uadd8 \p0, \p0, \n1 | |
381 ldr \n1, [r2, #4] | |
382 usada8 r0, \p0, \n2, r0 | |
383 pld [r1, r3] | |
384 eor \n3, \p1, \n1 | |
385 uhadd8 \p1, \p1, \n1 | |
386 and \n3, \n3, lr | |
387 ldr \p0, [r1, #4] | |
388 uadd8 \p1, \p1, \n3 | |
389 ldr \n2, [r2, #8] | |
390 usada8 r0, \p1, \p0, r0 | |
391 pld [r2, r3] | |
392 eor \p0, \p2, \n2 | |
393 uhadd8 \p2, \p2, \n2 | |
394 and \p0, \p0, lr | |
395 ldr \p1, [r1, #8] | |
396 uadd8 \p2, \p2, \p0 | |
397 ldr \n3, [r2, #12] | |
398 usada8 r0, \p2, \p1, r0 | |
399 eor \p1, \p3, \n3 | |
400 uhadd8 \p3, \p3, \n3 | |
401 and \p1, \p1, lr | |
402 ldr \p0, [r1, #12] | |
403 uadd8 \p3, \p3, \p1 | |
404 add r1, r1, r3 | |
405 usada8 r0, \p3, \p0, r0 | |
406 add r2, r2, r3 | |
407 .endm | |
408 | |
409 function ff_pix_abs16_y2_armv6, export=1 | |
410 pld [r1] | |
411 pld [r2] | |
412 ldr r12, [sp] | |
413 push {r4-r11, lr} | |
414 mov r0, #0 | |
415 mov lr, #1 | |
416 orr lr, lr, lr, lsl #8 | |
417 orr lr, lr, lr, lsl #16 | |
418 ldr r4, [r2] | |
419 ldr r5, [r2, #4] | |
420 ldr r6, [r2, #8] | |
421 ldr r7, [r2, #12] | |
422 add r2, r2, r3 | |
423 1: | |
424 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11 | |
425 subs r12, r12, #2 | |
426 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7 | |
427 bgt 1b | |
428 | |
429 pop {r4-r11, pc} | |
430 .endfunc | |
11112 | 431 |
432 function ff_pix_abs8_armv6, export=1 | |
433 pld [r2, r3] | |
434 ldr r12, [sp] | |
435 push {r4-r9, lr} | |
436 mov r0, #0 | |
437 mov lr, #0 | |
438 ldrd r4, r5, [r1], r3 | |
439 1: | |
440 subs r12, r12, #2 | |
441 ldr r7, [r2, #4] | |
442 ldr r6, [r2], r3 | |
443 ldrd r8, r9, [r1], r3 | |
444 usada8 r0, r4, r6, r0 | |
445 pld [r2, r3] | |
446 usada8 lr, r5, r7, lr | |
447 ldr r7, [r2, #4] | |
448 ldr r6, [r2], r3 | |
449 beq 2f | |
450 ldrd r4, r5, [r1], r3 | |
451 usada8 r0, r8, r6, r0 | |
452 pld [r2, r3] | |
453 usada8 lr, r9, r7, lr | |
454 b 1b | |
455 2: | |
456 usada8 r0, r8, r6, r0 | |
457 usada8 lr, r9, r7, lr | |
458 add r0, r0, lr | |
459 pop {r4-r9, pc} | |
460 .endfunc |