2 * Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
4 * This file is part of Libav.
6 * Libav 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.
11 * Libav 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.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with Libav; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #include "libavutil/arm/asm.S"
23 function ff_get_pixels_armv6, export=1
28 ldrd_post r4, r5, r1, r2
35 pkhbt r5, r6, r4, lsl #16
36 pkhtb r6, r4, r6, asr #16
37 pkhbt r7, r12, r8, lsl #16
38 pkhtb r12, r8, r12, asr #16
39 stm r0!, {r5,r6,r7,r12}
45 function ff_diff_pixels_armv6, export=1
51 ldrd_post r4, r5, r1, r3
52 ldrd_post r6, r7, r2, r3
63 pkhbt r4, r9, r6, lsl #16
64 pkhtb r6, r6, r9, asr #16
70 pkhbt r8, r9, r5, lsl #16
71 pkhtb r9, r5, r9, asr #16
72 stm r0!, {r4,r6,r8,r9}
78 function ff_pix_abs16_armv6, export=1
88 usada8 r12, r4, r8, r12
93 usada8 r12, r6, r8, r12
107 function ff_pix_abs16_x2_armv6, export=1
112 orr lr, lr, lr, lsl #8
113 orr lr, lr, lr, lsl #16
120 orr r10, r10, r9, lsl #24
124 orr r6, r6, r5, lsl #24
128 usada8 r0, r4, r7, r0
136 orr r10, r10, r6, lsl #24
137 usada8 r0, r8, r4, r0
147 usada8 r0, r4, r8, r0
148 orr r10, r10, r7, lsl #24
156 usada8 r0, r5, r9, r0
162 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3
170 usada8 r0, \p0, \n2, r0
178 usada8 r0, \p1, \p0, r0
186 usada8 r0, \p2, \p1, r0
193 usada8 r0, \p3, \p0, r0
197 function ff_pix_abs16_y2_armv6, export=1
204 orr lr, lr, lr, lsl #8
205 orr lr, lr, lr, lsl #16
212 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11
214 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7
220 function ff_pix_abs8_armv6, export=1
226 ldrd_post r4, r5, r1, r3
231 ldrd_post r8, r9, r1, r3
232 usada8 r0, r4, r6, r0
234 usada8 lr, r5, r7, lr
238 ldrd_post r4, r5, r1, r3
239 usada8 r0, r8, r6, r0
241 usada8 lr, r9, r7, lr
244 usada8 r0, r8, r6, r0
245 usada8 lr, r9, r7, lr
250 function ff_sse16_armv6, export=1
258 uxtb16 r4, r4, ror #8
260 uxtb16 r8, r8, ror #8
266 uxtb16 lr, r5, ror #8
268 uxtb16 r9, r7, ror #8
270 ldrd r4, r5, [r1, #8]
276 uxtb16 r4, r4, ror #8
278 uxtb16 r7, r7, ror #8
285 uxtb16 r5, r5, ror #8
287 uxtb16 r8, r8, ror #8