arm: Remove a leftover define for the pld instruction
[ffmpeg.git] / libavcodec / arm / dsputil_arm.S
1 @
2 @ ARMv4 optimized DSP utils
3 @ Copyright (c) 2004 AGAWA Koji <i (AT) atty (DOT) jp>
4 @
5 @ This file is part of Libav.
6 @
7 @ Libav 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.
11 @
12 @ Libav 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.
16 @
17 @ You should have received a copy of the GNU Lesser General Public
18 @ License along with Libav; if not, write to the Free Software
19 @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 @
21
22 #include "config.h"
23 #include "libavutil/arm/asm.S"
24
25         .align 5
26 @ void ff_add_pixels_clamped_arm(int16_t *block, uint8_t *dest, int stride)
27 function ff_add_pixels_clamped_arm, export=1
28         push            {r4-r10}
29         mov             r10, #8
30 1:
31         ldr             r4,  [r1]               /* load dest */
32         /* block[0] and block[1]*/
33         ldrsh           r5,  [r0]
34         ldrsh           r7,  [r0, #2]
35         and             r6,  r4,  #0xFF
36         and             r8,  r4,  #0xFF00
37         add             r6,  r6,  r5
38         add             r8,  r7,  r8,  lsr #8
39         mvn             r5,  r5
40         mvn             r7,  r7
41         tst             r6,  #0x100
42         it              ne
43         movne           r6,  r5,  lsr #24
44         tst             r8,  #0x100
45         it              ne
46         movne           r8,  r7,  lsr #24
47         mov             r9,  r6
48         ldrsh           r5,  [r0, #4]           /* moved form [A] */
49         orr             r9,  r9,  r8,  lsl #8
50         /* block[2] and block[3] */
51         /* [A] */
52         ldrsh           r7,  [r0, #6]
53         and             r6,  r4,  #0xFF0000
54         and             r8,  r4,  #0xFF000000
55         add             r6,  r5,  r6,  lsr #16
56         add             r8,  r7,  r8,  lsr #24
57         mvn             r5,  r5
58         mvn             r7,  r7
59         tst             r6,  #0x100
60         it              ne
61         movne           r6,  r5,  lsr #24
62         tst             r8,  #0x100
63         it              ne
64         movne           r8,  r7,  lsr #24
65         orr             r9,  r9,  r6,  lsl #16
66         ldr             r4,  [r1, #4]           /* moved form [B] */
67         orr             r9,  r9,  r8,  lsl #24
68         /* store dest */
69         ldrsh           r5,  [r0, #8]           /* moved form [C] */
70         str             r9,  [r1]
71
72         /* load dest */
73         /* [B] */
74         /* block[4] and block[5] */
75         /* [C] */
76         ldrsh           r7,  [r0, #10]
77         and             r6,  r4,  #0xFF
78         and             r8,  r4,  #0xFF00
79         add             r6,  r6,  r5
80         add             r8,  r7,  r8,  lsr #8
81         mvn             r5,  r5
82         mvn             r7,  r7
83         tst             r6,  #0x100
84         it              ne
85         movne           r6,  r5,  lsr #24
86         tst             r8,  #0x100
87         it              ne
88         movne           r8,  r7,  lsr #24
89         mov             r9,  r6
90         ldrsh           r5,  [r0, #12]          /* moved from [D] */
91         orr             r9,  r9,  r8,  lsl #8
92         /* block[6] and block[7] */
93         /* [D] */
94         ldrsh           r7,  [r0, #14]
95         and             r6,  r4,  #0xFF0000
96         and             r8,  r4,  #0xFF000000
97         add             r6,  r5,  r6,  lsr #16
98         add             r8,  r7,  r8,  lsr #24
99         mvn             r5,  r5
100         mvn             r7,  r7
101         tst             r6,  #0x100
102         it              ne
103         movne           r6,  r5,  lsr #24
104         tst             r8,  #0x100
105         it              ne
106         movne           r8,  r7,  lsr #24
107         orr             r9,  r9,  r6,  lsl #16
108         add             r0,  r0,  #16           /* moved from [E] */
109         orr             r9,  r9,  r8,  lsl #24
110         subs            r10, r10, #1            /* moved from [F] */
111         /* store dest */
112         str             r9,  [r1, #4]
113
114         /* [E] */
115         /* [F] */
116         add             r1,  r1,  r2
117         bne             1b
118
119         pop             {r4-r10}
120         bx              lr
121 endfunc