Fix TEXTRELs in the ARM asm.
[profile/ivi/libvpx.git] / vp8 / common / arm / neon / sad16_neon.asm
1 ;
2 ;  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 ;
4 ;  Use of this source code is governed by a BSD-style license
5 ;  that can be found in the LICENSE file in the root of the source
6 ;  tree. An additional intellectual property rights grant can be found
7 ;  in the file PATENTS.  All contributing project authors may
8 ;  be found in the AUTHORS file in the root of the source tree.
9 ;
10
11
12     EXPORT  |vp8_sad16x16_neon|
13     EXPORT  |vp8_sad16x8_neon|
14
15     ARM
16     REQUIRE8
17     PRESERVE8
18
19     AREA ||.text||, CODE, READONLY, ALIGN=2
20
21 ; r0    unsigned char *src_ptr
22 ; r1    int  src_stride
23 ; r2    unsigned char *ref_ptr
24 ; r3    int  ref_stride
25 |vp8_sad16x16_neon| PROC
26 ;;
27     vld1.8          {q0}, [r0], r1
28     vld1.8          {q4}, [r2], r3
29
30     vld1.8          {q1}, [r0], r1
31     vld1.8          {q5}, [r2], r3
32
33     vabdl.u8        q12, d0, d8
34     vabdl.u8        q13, d1, d9
35
36     vld1.8          {q2}, [r0], r1
37     vld1.8          {q6}, [r2], r3
38
39     vabal.u8        q12, d2, d10
40     vabal.u8        q13, d3, d11
41
42     vld1.8          {q3}, [r0], r1
43     vld1.8          {q7}, [r2], r3
44
45     vabal.u8        q12, d4, d12
46     vabal.u8        q13, d5, d13
47
48 ;;
49     vld1.8          {q0}, [r0], r1
50     vld1.8          {q4}, [r2], r3
51
52     vabal.u8        q12, d6, d14
53     vabal.u8        q13, d7, d15
54
55     vld1.8          {q1}, [r0], r1
56     vld1.8          {q5}, [r2], r3
57
58     vabal.u8        q12, d0, d8
59     vabal.u8        q13, d1, d9
60
61     vld1.8          {q2}, [r0], r1
62     vld1.8          {q6}, [r2], r3
63
64     vabal.u8        q12, d2, d10
65     vabal.u8        q13, d3, d11
66
67     vld1.8          {q3}, [r0], r1
68     vld1.8          {q7}, [r2], r3
69
70     vabal.u8        q12, d4, d12
71     vabal.u8        q13, d5, d13
72
73 ;;
74     vld1.8          {q0}, [r0], r1
75     vld1.8          {q4}, [r2], r3
76
77     vabal.u8        q12, d6, d14
78     vabal.u8        q13, d7, d15
79
80     vld1.8          {q1}, [r0], r1
81     vld1.8          {q5}, [r2], r3
82
83     vabal.u8        q12, d0, d8
84     vabal.u8        q13, d1, d9
85
86     vld1.8          {q2}, [r0], r1
87     vld1.8          {q6}, [r2], r3
88
89     vabal.u8        q12, d2, d10
90     vabal.u8        q13, d3, d11
91
92     vld1.8          {q3}, [r0], r1
93     vld1.8          {q7}, [r2], r3
94
95     vabal.u8        q12, d4, d12
96     vabal.u8        q13, d5, d13
97
98 ;;
99     vld1.8          {q0}, [r0], r1
100     vld1.8          {q4}, [r2], r3
101
102     vabal.u8        q12, d6, d14
103     vabal.u8        q13, d7, d15
104
105     vld1.8          {q1}, [r0], r1
106     vld1.8          {q5}, [r2], r3
107
108     vabal.u8        q12, d0, d8
109     vabal.u8        q13, d1, d9
110
111     vld1.8          {q2}, [r0], r1
112     vld1.8          {q6}, [r2], r3
113
114     vabal.u8        q12, d2, d10
115     vabal.u8        q13, d3, d11
116
117     vld1.8          {q3}, [r0]
118     vld1.8          {q7}, [r2]
119
120     vabal.u8        q12, d4, d12
121     vabal.u8        q13, d5, d13
122
123     vabal.u8        q12, d6, d14
124     vabal.u8        q13, d7, d15
125
126     vadd.u16        q0, q12, q13
127
128     vpaddl.u16      q1, q0
129     vpaddl.u32      q0, q1
130
131     vadd.u32        d0, d0, d1
132
133     vmov.32         r0, d0[0]
134
135     bx              lr
136
137     ENDP
138
139 ;==============================
140 ;unsigned int vp8_sad16x8_c(
141 ;    unsigned char *src_ptr,
142 ;    int  src_stride,
143 ;    unsigned char *ref_ptr,
144 ;    int  ref_stride)
145 |vp8_sad16x8_neon| PROC
146     vld1.8          {q0}, [r0], r1
147     vld1.8          {q4}, [r2], r3
148
149     vld1.8          {q1}, [r0], r1
150     vld1.8          {q5}, [r2], r3
151
152     vabdl.u8        q12, d0, d8
153     vabdl.u8        q13, d1, d9
154
155     vld1.8          {q2}, [r0], r1
156     vld1.8          {q6}, [r2], r3
157
158     vabal.u8        q12, d2, d10
159     vabal.u8        q13, d3, d11
160
161     vld1.8          {q3}, [r0], r1
162     vld1.8          {q7}, [r2], r3
163
164     vabal.u8        q12, d4, d12
165     vabal.u8        q13, d5, d13
166
167     vld1.8          {q0}, [r0], r1
168     vld1.8          {q4}, [r2], r3
169
170     vabal.u8        q12, d6, d14
171     vabal.u8        q13, d7, d15
172
173     vld1.8          {q1}, [r0], r1
174     vld1.8          {q5}, [r2], r3
175
176     vabal.u8        q12, d0, d8
177     vabal.u8        q13, d1, d9
178
179     vld1.8          {q2}, [r0], r1
180     vld1.8          {q6}, [r2], r3
181
182     vabal.u8        q12, d2, d10
183     vabal.u8        q13, d3, d11
184
185     vld1.8          {q3}, [r0], r1
186     vld1.8          {q7}, [r2], r3
187
188     vabal.u8        q12, d4, d12
189     vabal.u8        q13, d5, d13
190
191     vabal.u8        q12, d6, d14
192     vabal.u8        q13, d7, d15
193
194     vadd.u16        q0, q12, q13
195
196     vpaddl.u16      q1, q0
197     vpaddl.u32      q0, q1
198
199     vadd.u32        d0, d0, d1
200
201     vmov.32         r0, d0[0]
202
203     bx              lr
204
205     ENDP
206
207     END