2 @ ARMv4-optimized IDCT functions
3 @ Copyright (c) 2004 AGAWA Koji <i (AT) atty (DOT) jp>
5 @ This file is part of FFmpeg.
7 @ FFmpeg is free software; you can redistribute it and/or
8 @ modify it under the terms of the GNU Lesser General Public
9 @ License as published by the Free Software Foundation; either
10 @ version 2.1 of the License, or (at your option) any later version.
12 @ FFmpeg is distributed in the hope that it will be useful,
13 @ but WITHOUT ANY WARRANTY; without even the implied warranty of
14 @ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 @ Lesser General Public License for more details.
17 @ You should have received a copy of the GNU Lesser General Public
18 @ License along with FFmpeg; if not, write to the Free Software
19 @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 #include "libavutil/arm/asm.S"
25 @ void ff_add_pixels_clamped_arm(int16_t *block, uint8_t *dest, ptrdiff_t stride)
26 function ff_add_pixels_clamped_arm, export=1, align=5
30 ldr r4, [r1] /* load dest */
31 /* block[0] and block[1]*/
37 add r8, r7, r8, lsr #8
47 ldrsh r5, [r0, #4] /* moved form [A] */
48 orr r9, r9, r8, lsl #8
49 /* block[2] and block[3] */
53 and r8, r4, #0xFF000000
54 add r6, r5, r6, lsr #16
55 add r8, r7, r8, lsr #24
64 orr r9, r9, r6, lsl #16
65 ldr r4, [r1, #4] /* moved form [B] */
66 orr r9, r9, r8, lsl #24
68 ldrsh r5, [r0, #8] /* moved form [C] */
73 /* block[4] and block[5] */
79 add r8, r7, r8, lsr #8
89 ldrsh r5, [r0, #12] /* moved from [D] */
90 orr r9, r9, r8, lsl #8
91 /* block[6] and block[7] */
95 and r8, r4, #0xFF000000
96 add r6, r5, r6, lsr #16
97 add r8, r7, r8, lsr #24
102 movne r6, r5, lsr #24
105 movne r8, r7, lsr #24
106 orr r9, r9, r6, lsl #16
107 add r0, r0, #16 /* moved from [E] */
108 orr r9, r9, r8, lsl #24
109 subs r10, r10, #1 /* moved from [F] */