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_pix_abs16_armv6, export=1
33 usada8 r12, r4, r8, r12
38 usada8 r12, r6, r8, r12
52 function ff_pix_abs16_x2_armv6, export=1
57 orr lr, lr, lr, lsl #8
58 orr lr, lr, lr, lsl #16
65 orr r10, r10, r9, lsl #24
69 orr r6, r6, r5, lsl #24
81 orr r10, r10, r6, lsl #24
93 orr r10, r10, r7, lsl #24
101 usada8 r0, r5, r9, r0
107 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3
115 usada8 r0, \p0, \n2, r0
123 usada8 r0, \p1, \p0, r0
131 usada8 r0, \p2, \p1, r0
138 usada8 r0, \p3, \p0, r0
142 function ff_pix_abs16_y2_armv6, export=1
149 orr lr, lr, lr, lsl #8
150 orr lr, lr, lr, lsl #16
157 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11
159 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7
165 function ff_pix_abs8_armv6, export=1
171 ldrd_post r4, r5, r1, r3
176 ldrd_post r8, r9, r1, r3
177 usada8 r0, r4, r6, r0
179 usada8 lr, r5, r7, lr
183 ldrd_post r4, r5, r1, r3
184 usada8 r0, r8, r6, r0
186 usada8 lr, r9, r7, lr
189 usada8 r0, r8, r6, r0
190 usada8 lr, r9, r7, lr
195 function ff_sse16_armv6, export=1
203 uxtb16 r4, r4, ror #8
205 uxtb16 r8, r8, ror #8
211 uxtb16 lr, r5, ror #8
213 uxtb16 r9, r7, ror #8
215 ldrd r4, r5, [r1, #8]
221 uxtb16 r4, r4, ror #8
223 uxtb16 r7, r7, ror #8
230 uxtb16 r5, r5, ror #8
232 uxtb16 r8, r8, ror #8