1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
3*fb1b10abSAndroid Build Coastguard Worker *
4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license
5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source
6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found
7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may
8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree.
9*fb1b10abSAndroid Build Coastguard Worker */
10*fb1b10abSAndroid Build Coastguard Worker
11*fb1b10abSAndroid Build Coastguard Worker #include "vpx_dsp/mips/common_dspr2.h"
12*fb1b10abSAndroid Build Coastguard Worker
13*fb1b10abSAndroid Build Coastguard Worker #if HAVE_DSPR2
vpx_h_predictor_16x16_dspr2(uint8_t * dst,ptrdiff_t stride,const uint8_t * above,const uint8_t * left)14*fb1b10abSAndroid Build Coastguard Worker void vpx_h_predictor_16x16_dspr2(uint8_t *dst, ptrdiff_t stride,
15*fb1b10abSAndroid Build Coastguard Worker const uint8_t *above, const uint8_t *left) {
16*fb1b10abSAndroid Build Coastguard Worker int32_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
17*fb1b10abSAndroid Build Coastguard Worker int32_t tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16;
18*fb1b10abSAndroid Build Coastguard Worker (void)above;
19*fb1b10abSAndroid Build Coastguard Worker
20*fb1b10abSAndroid Build Coastguard Worker __asm__ __volatile__(
21*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp1], (%[left]) \n\t"
22*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp2], 1(%[left]) \n\t"
23*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp3], 2(%[left]) \n\t"
24*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp4], 3(%[left]) \n\t"
25*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp5], 4(%[left]) \n\t"
26*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp6], 5(%[left]) \n\t"
27*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp7], 6(%[left]) \n\t"
28*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp8], 7(%[left]) \n\t"
29*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp9], 8(%[left]) \n\t"
30*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp10], 9(%[left]) \n\t"
31*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp11], 10(%[left]) \n\t"
32*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp12], 11(%[left]) \n\t"
33*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp13], 12(%[left]) \n\t"
34*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp14], 13(%[left]) \n\t"
35*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp15], 14(%[left]) \n\t"
36*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp16], 15(%[left]) \n\t"
37*fb1b10abSAndroid Build Coastguard Worker
38*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp1], %[tmp1] \n\t"
39*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp2], %[tmp2] \n\t"
40*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp3], %[tmp3] \n\t"
41*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp4], %[tmp4] \n\t"
42*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp5], %[tmp5] \n\t"
43*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp6], %[tmp6] \n\t"
44*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp7], %[tmp7] \n\t"
45*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp8], %[tmp8] \n\t"
46*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp9], %[tmp9] \n\t"
47*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp10], %[tmp10] \n\t"
48*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp11], %[tmp11] \n\t"
49*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp12], %[tmp12] \n\t"
50*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp13], %[tmp13] \n\t"
51*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp14], %[tmp14] \n\t"
52*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp15], %[tmp15] \n\t"
53*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp16], %[tmp16] \n\t"
54*fb1b10abSAndroid Build Coastguard Worker
55*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], (%[dst]) \n\t"
56*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], 4(%[dst]) \n\t"
57*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], 8(%[dst]) \n\t"
58*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], 12(%[dst]) \n\t"
59*fb1b10abSAndroid Build Coastguard Worker
60*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
61*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], (%[dst]) \n\t"
62*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], 4(%[dst]) \n\t"
63*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], 8(%[dst]) \n\t"
64*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], 12(%[dst]) \n\t"
65*fb1b10abSAndroid Build Coastguard Worker
66*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
67*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], (%[dst]) \n\t"
68*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], 4(%[dst]) \n\t"
69*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], 8(%[dst]) \n\t"
70*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], 12(%[dst]) \n\t"
71*fb1b10abSAndroid Build Coastguard Worker
72*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
73*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], (%[dst]) \n\t"
74*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], 4(%[dst]) \n\t"
75*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], 8(%[dst]) \n\t"
76*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], 12(%[dst]) \n\t"
77*fb1b10abSAndroid Build Coastguard Worker
78*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
79*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], (%[dst]) \n\t"
80*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], 4(%[dst]) \n\t"
81*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], 8(%[dst]) \n\t"
82*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], 12(%[dst]) \n\t"
83*fb1b10abSAndroid Build Coastguard Worker
84*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
85*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], (%[dst]) \n\t"
86*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], 4(%[dst]) \n\t"
87*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], 8(%[dst]) \n\t"
88*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], 12(%[dst]) \n\t"
89*fb1b10abSAndroid Build Coastguard Worker
90*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
91*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], (%[dst]) \n\t"
92*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], 4(%[dst]) \n\t"
93*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], 8(%[dst]) \n\t"
94*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], 12(%[dst]) \n\t"
95*fb1b10abSAndroid Build Coastguard Worker
96*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
97*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], (%[dst]) \n\t"
98*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], 4(%[dst]) \n\t"
99*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], 8(%[dst]) \n\t"
100*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], 12(%[dst]) \n\t"
101*fb1b10abSAndroid Build Coastguard Worker
102*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
103*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp9], (%[dst]) \n\t"
104*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp9], 4(%[dst]) \n\t"
105*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp9], 8(%[dst]) \n\t"
106*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp9], 12(%[dst]) \n\t"
107*fb1b10abSAndroid Build Coastguard Worker
108*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
109*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp10], (%[dst]) \n\t"
110*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp10], 4(%[dst]) \n\t"
111*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp10], 8(%[dst]) \n\t"
112*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp10], 12(%[dst]) \n\t"
113*fb1b10abSAndroid Build Coastguard Worker
114*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
115*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp11], (%[dst]) \n\t"
116*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp11], 4(%[dst]) \n\t"
117*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp11], 8(%[dst]) \n\t"
118*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp11], 12(%[dst]) \n\t"
119*fb1b10abSAndroid Build Coastguard Worker
120*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
121*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp12], (%[dst]) \n\t"
122*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp12], 4(%[dst]) \n\t"
123*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp12], 8(%[dst]) \n\t"
124*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp12], 12(%[dst]) \n\t"
125*fb1b10abSAndroid Build Coastguard Worker
126*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
127*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp13], (%[dst]) \n\t"
128*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp13], 4(%[dst]) \n\t"
129*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp13], 8(%[dst]) \n\t"
130*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp13], 12(%[dst]) \n\t"
131*fb1b10abSAndroid Build Coastguard Worker
132*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
133*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp14], (%[dst]) \n\t"
134*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp14], 4(%[dst]) \n\t"
135*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp14], 8(%[dst]) \n\t"
136*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp14], 12(%[dst]) \n\t"
137*fb1b10abSAndroid Build Coastguard Worker
138*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
139*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp15], (%[dst]) \n\t"
140*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp15], 4(%[dst]) \n\t"
141*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp15], 8(%[dst]) \n\t"
142*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp15], 12(%[dst]) \n\t"
143*fb1b10abSAndroid Build Coastguard Worker
144*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
145*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp16], (%[dst]) \n\t"
146*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp16], 4(%[dst]) \n\t"
147*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp16], 8(%[dst]) \n\t"
148*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp16], 12(%[dst]) \n\t"
149*fb1b10abSAndroid Build Coastguard Worker
150*fb1b10abSAndroid Build Coastguard Worker : [tmp1] "=&r"(tmp1), [tmp2] "=&r"(tmp2), [tmp3] "=&r"(tmp3),
151*fb1b10abSAndroid Build Coastguard Worker [tmp4] "=&r"(tmp4), [tmp5] "=&r"(tmp5), [tmp7] "=&r"(tmp7),
152*fb1b10abSAndroid Build Coastguard Worker [tmp6] "=&r"(tmp6), [tmp8] "=&r"(tmp8), [tmp9] "=&r"(tmp9),
153*fb1b10abSAndroid Build Coastguard Worker [tmp10] "=&r"(tmp10), [tmp11] "=&r"(tmp11), [tmp12] "=&r"(tmp12),
154*fb1b10abSAndroid Build Coastguard Worker [tmp13] "=&r"(tmp13), [tmp14] "=&r"(tmp14), [tmp15] "=&r"(tmp15),
155*fb1b10abSAndroid Build Coastguard Worker [tmp16] "=&r"(tmp16)
156*fb1b10abSAndroid Build Coastguard Worker : [left] "r"(left), [dst] "r"(dst), [stride] "r"(stride));
157*fb1b10abSAndroid Build Coastguard Worker }
158*fb1b10abSAndroid Build Coastguard Worker
vpx_dc_predictor_16x16_dspr2(uint8_t * dst,ptrdiff_t stride,const uint8_t * above,const uint8_t * left)159*fb1b10abSAndroid Build Coastguard Worker void vpx_dc_predictor_16x16_dspr2(uint8_t *dst, ptrdiff_t stride,
160*fb1b10abSAndroid Build Coastguard Worker const uint8_t *above, const uint8_t *left) {
161*fb1b10abSAndroid Build Coastguard Worker int32_t expected_dc;
162*fb1b10abSAndroid Build Coastguard Worker int32_t average;
163*fb1b10abSAndroid Build Coastguard Worker int32_t tmp, above1, above_l1, above_r1, left1, left_r1, left_l1;
164*fb1b10abSAndroid Build Coastguard Worker int32_t above2, left2;
165*fb1b10abSAndroid Build Coastguard Worker
166*fb1b10abSAndroid Build Coastguard Worker __asm__ __volatile__(
167*fb1b10abSAndroid Build Coastguard Worker "lw %[above1], (%[above]) \n\t"
168*fb1b10abSAndroid Build Coastguard Worker "lw %[above2], 4(%[above]) \n\t"
169*fb1b10abSAndroid Build Coastguard Worker "lw %[left1], (%[left]) \n\t"
170*fb1b10abSAndroid Build Coastguard Worker "lw %[left2], 4(%[left]) \n\t"
171*fb1b10abSAndroid Build Coastguard Worker
172*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l1], %[above1] \n\t"
173*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r1], %[above1] \n\t"
174*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l1], %[left1] \n\t"
175*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r1], %[left1] \n\t"
176*fb1b10abSAndroid Build Coastguard Worker
177*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[above_r1], %[above_l1] \n\t"
178*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l1] \n\t"
179*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r1] \n\t"
180*fb1b10abSAndroid Build Coastguard Worker
181*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l1], %[above2] \n\t"
182*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r1], %[above2] \n\t"
183*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l1], %[left2] \n\t"
184*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r1], %[left2] \n\t"
185*fb1b10abSAndroid Build Coastguard Worker
186*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_l1] \n\t"
187*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_r1] \n\t"
188*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l1] \n\t"
189*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r1] \n\t"
190*fb1b10abSAndroid Build Coastguard Worker
191*fb1b10abSAndroid Build Coastguard Worker "lw %[above1], 8(%[above]) \n\t"
192*fb1b10abSAndroid Build Coastguard Worker "lw %[above2], 12(%[above]) \n\t"
193*fb1b10abSAndroid Build Coastguard Worker "lw %[left1], 8(%[left]) \n\t"
194*fb1b10abSAndroid Build Coastguard Worker "lw %[left2], 12(%[left]) \n\t"
195*fb1b10abSAndroid Build Coastguard Worker
196*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l1], %[above1] \n\t"
197*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r1], %[above1] \n\t"
198*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l1], %[left1] \n\t"
199*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r1], %[left1] \n\t"
200*fb1b10abSAndroid Build Coastguard Worker
201*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_l1] \n\t"
202*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_r1] \n\t"
203*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l1] \n\t"
204*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r1] \n\t"
205*fb1b10abSAndroid Build Coastguard Worker
206*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l1], %[above2] \n\t"
207*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r1], %[above2] \n\t"
208*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l1], %[left2] \n\t"
209*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r1], %[left2] \n\t"
210*fb1b10abSAndroid Build Coastguard Worker
211*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_l1] \n\t"
212*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_r1] \n\t"
213*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l1] \n\t"
214*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r1] \n\t"
215*fb1b10abSAndroid Build Coastguard Worker
216*fb1b10abSAndroid Build Coastguard Worker "addiu %[average], %[average], 16 \n\t"
217*fb1b10abSAndroid Build Coastguard Worker "srl %[tmp], %[average], 16 \n\t"
218*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[tmp], %[average] \n\t"
219*fb1b10abSAndroid Build Coastguard Worker "srl %[expected_dc], %[average], 5 \n\t"
220*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[expected_dc], %[expected_dc] \n\t"
221*fb1b10abSAndroid Build Coastguard Worker
222*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
223*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
224*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
225*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
226*fb1b10abSAndroid Build Coastguard Worker
227*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
228*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
229*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
230*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
231*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
232*fb1b10abSAndroid Build Coastguard Worker
233*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
234*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
235*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
236*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
237*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
238*fb1b10abSAndroid Build Coastguard Worker
239*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
240*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
241*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
242*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
243*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
244*fb1b10abSAndroid Build Coastguard Worker
245*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
246*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
247*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
248*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
249*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
250*fb1b10abSAndroid Build Coastguard Worker
251*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
252*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
253*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
254*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
255*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
256*fb1b10abSAndroid Build Coastguard Worker
257*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
258*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
259*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
260*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
261*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
262*fb1b10abSAndroid Build Coastguard Worker
263*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
264*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
265*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
266*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
267*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
268*fb1b10abSAndroid Build Coastguard Worker
269*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
270*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
271*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
272*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
273*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
274*fb1b10abSAndroid Build Coastguard Worker
275*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
276*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
277*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
278*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
279*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
280*fb1b10abSAndroid Build Coastguard Worker
281*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
282*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
283*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
284*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
285*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
286*fb1b10abSAndroid Build Coastguard Worker
287*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
288*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
289*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
290*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
291*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
292*fb1b10abSAndroid Build Coastguard Worker
293*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
294*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
295*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
296*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
297*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
298*fb1b10abSAndroid Build Coastguard Worker
299*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
300*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
301*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
302*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
303*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
304*fb1b10abSAndroid Build Coastguard Worker
305*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
306*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
307*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
308*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
309*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
310*fb1b10abSAndroid Build Coastguard Worker
311*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
312*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
313*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
314*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 8(%[dst]) \n\t"
315*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 12(%[dst]) \n\t"
316*fb1b10abSAndroid Build Coastguard Worker
317*fb1b10abSAndroid Build Coastguard Worker : [left1] "=&r"(left1), [above1] "=&r"(above1), [left_l1] "=&r"(left_l1),
318*fb1b10abSAndroid Build Coastguard Worker [above_l1] "=&r"(above_l1), [left_r1] "=&r"(left_r1),
319*fb1b10abSAndroid Build Coastguard Worker [above_r1] "=&r"(above_r1), [above2] "=&r"(above2),
320*fb1b10abSAndroid Build Coastguard Worker [left2] "=&r"(left2), [average] "=&r"(average), [tmp] "=&r"(tmp),
321*fb1b10abSAndroid Build Coastguard Worker [expected_dc] "=&r"(expected_dc)
322*fb1b10abSAndroid Build Coastguard Worker : [above] "r"(above), [left] "r"(left), [dst] "r"(dst),
323*fb1b10abSAndroid Build Coastguard Worker [stride] "r"(stride));
324*fb1b10abSAndroid Build Coastguard Worker }
325*fb1b10abSAndroid Build Coastguard Worker #endif // #if HAVE_DSPR2
326