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_8x8_dspr2(uint8_t * dst,ptrdiff_t stride,const uint8_t * above,const uint8_t * left)14*fb1b10abSAndroid Build Coastguard Worker void vpx_h_predictor_8x8_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 (void)above;
18*fb1b10abSAndroid Build Coastguard Worker
19*fb1b10abSAndroid Build Coastguard Worker __asm__ __volatile__(
20*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp1], (%[left]) \n\t"
21*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp2], 1(%[left]) \n\t"
22*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp3], 2(%[left]) \n\t"
23*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp4], 3(%[left]) \n\t"
24*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp5], 4(%[left]) \n\t"
25*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp6], 5(%[left]) \n\t"
26*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp7], 6(%[left]) \n\t"
27*fb1b10abSAndroid Build Coastguard Worker "lb %[tmp8], 7(%[left]) \n\t"
28*fb1b10abSAndroid Build Coastguard Worker
29*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp1], %[tmp1] \n\t"
30*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp2], %[tmp2] \n\t"
31*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp3], %[tmp3] \n\t"
32*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp4], %[tmp4] \n\t"
33*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp5], %[tmp5] \n\t"
34*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp6], %[tmp6] \n\t"
35*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp7], %[tmp7] \n\t"
36*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[tmp8], %[tmp8] \n\t"
37*fb1b10abSAndroid Build Coastguard Worker
38*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], (%[dst]) \n\t"
39*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp1], 4(%[dst]) \n\t"
40*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
41*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], (%[dst]) \n\t"
42*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp2], 4(%[dst]) \n\t"
43*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
44*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], (%[dst]) \n\t"
45*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp3], 4(%[dst]) \n\t"
46*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
47*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], (%[dst]) \n\t"
48*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp4], 4(%[dst]) \n\t"
49*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
50*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], (%[dst]) \n\t"
51*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp5], 4(%[dst]) \n\t"
52*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
53*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], (%[dst]) \n\t"
54*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp6], 4(%[dst]) \n\t"
55*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
56*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], (%[dst]) \n\t"
57*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp7], 4(%[dst]) \n\t"
58*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
59*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], (%[dst]) \n\t"
60*fb1b10abSAndroid Build Coastguard Worker "sw %[tmp8], 4(%[dst]) \n\t"
61*fb1b10abSAndroid Build Coastguard Worker
62*fb1b10abSAndroid Build Coastguard Worker : [tmp1] "=&r"(tmp1), [tmp2] "=&r"(tmp2), [tmp3] "=&r"(tmp3),
63*fb1b10abSAndroid Build Coastguard Worker [tmp4] "=&r"(tmp4), [tmp5] "=&r"(tmp5), [tmp7] "=&r"(tmp7),
64*fb1b10abSAndroid Build Coastguard Worker [tmp6] "=&r"(tmp6), [tmp8] "=&r"(tmp8)
65*fb1b10abSAndroid Build Coastguard Worker : [left] "r"(left), [dst] "r"(dst), [stride] "r"(stride));
66*fb1b10abSAndroid Build Coastguard Worker }
67*fb1b10abSAndroid Build Coastguard Worker
vpx_dc_predictor_8x8_dspr2(uint8_t * dst,ptrdiff_t stride,const uint8_t * above,const uint8_t * left)68*fb1b10abSAndroid Build Coastguard Worker void vpx_dc_predictor_8x8_dspr2(uint8_t *dst, ptrdiff_t stride,
69*fb1b10abSAndroid Build Coastguard Worker const uint8_t *above, const uint8_t *left) {
70*fb1b10abSAndroid Build Coastguard Worker int32_t expected_dc;
71*fb1b10abSAndroid Build Coastguard Worker int32_t average;
72*fb1b10abSAndroid Build Coastguard Worker int32_t tmp, above1, above_l1, above_r1, left1, left_r1, left_l1;
73*fb1b10abSAndroid Build Coastguard Worker int32_t above2, above_l2, above_r2, left2, left_r2, left_l2;
74*fb1b10abSAndroid Build Coastguard Worker
75*fb1b10abSAndroid Build Coastguard Worker __asm__ __volatile__(
76*fb1b10abSAndroid Build Coastguard Worker "lw %[above1], (%[above]) \n\t"
77*fb1b10abSAndroid Build Coastguard Worker "lw %[above2], 4(%[above]) \n\t"
78*fb1b10abSAndroid Build Coastguard Worker "lw %[left1], (%[left]) \n\t"
79*fb1b10abSAndroid Build Coastguard Worker "lw %[left2], 4(%[left]) \n\t"
80*fb1b10abSAndroid Build Coastguard Worker
81*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l1], %[above1] \n\t"
82*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r1], %[above1] \n\t"
83*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l1], %[left1] \n\t"
84*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r1], %[left1] \n\t"
85*fb1b10abSAndroid Build Coastguard Worker
86*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[above_l2], %[above2] \n\t"
87*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[above_r2], %[above2] \n\t"
88*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[left_l2], %[left2] \n\t"
89*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[left_r2], %[left2] \n\t"
90*fb1b10abSAndroid Build Coastguard Worker
91*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[above_r1], %[above_l1] \n\t"
92*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l1] \n\t"
93*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r1] \n\t"
94*fb1b10abSAndroid Build Coastguard Worker
95*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_l2] \n\t"
96*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[above_r2] \n\t"
97*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_l2] \n\t"
98*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[average], %[left_r2] \n\t"
99*fb1b10abSAndroid Build Coastguard Worker
100*fb1b10abSAndroid Build Coastguard Worker "addiu %[average], %[average], 8 \n\t"
101*fb1b10abSAndroid Build Coastguard Worker
102*fb1b10abSAndroid Build Coastguard Worker "srl %[tmp], %[average], 16 \n\t"
103*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[average], %[tmp], %[average] \n\t"
104*fb1b10abSAndroid Build Coastguard Worker "srl %[expected_dc], %[average], 4 \n\t"
105*fb1b10abSAndroid Build Coastguard Worker "replv.qb %[expected_dc], %[expected_dc] \n\t"
106*fb1b10abSAndroid Build Coastguard Worker
107*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
108*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
109*fb1b10abSAndroid Build Coastguard Worker
110*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
111*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
112*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[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 %[expected_dc], (%[dst]) \n\t"
116*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
117*fb1b10abSAndroid Build Coastguard Worker
118*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
119*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
120*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
121*fb1b10abSAndroid Build Coastguard Worker
122*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
123*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
124*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[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 %[expected_dc], (%[dst]) \n\t"
128*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
129*fb1b10abSAndroid Build Coastguard Worker
130*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
131*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
132*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
133*fb1b10abSAndroid Build Coastguard Worker
134*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
135*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], (%[dst]) \n\t"
136*fb1b10abSAndroid Build Coastguard Worker "sw %[expected_dc], 4(%[dst]) \n\t"
137*fb1b10abSAndroid Build Coastguard Worker
138*fb1b10abSAndroid Build Coastguard Worker : [above1] "=&r"(above1), [above_l1] "=&r"(above_l1),
139*fb1b10abSAndroid Build Coastguard Worker [above_r1] "=&r"(above_r1), [left1] "=&r"(left1),
140*fb1b10abSAndroid Build Coastguard Worker [left_l1] "=&r"(left_l1), [left_r1] "=&r"(left_r1),
141*fb1b10abSAndroid Build Coastguard Worker [above2] "=&r"(above2), [above_l2] "=&r"(above_l2),
142*fb1b10abSAndroid Build Coastguard Worker [above_r2] "=&r"(above_r2), [left2] "=&r"(left2),
143*fb1b10abSAndroid Build Coastguard Worker [left_l2] "=&r"(left_l2), [left_r2] "=&r"(left_r2),
144*fb1b10abSAndroid Build Coastguard Worker [average] "=&r"(average), [tmp] "=&r"(tmp),
145*fb1b10abSAndroid Build Coastguard Worker [expected_dc] "=&r"(expected_dc)
146*fb1b10abSAndroid Build Coastguard Worker : [above] "r"(above), [left] "r"(left), [dst] "r"(dst),
147*fb1b10abSAndroid Build Coastguard Worker [stride] "r"(stride));
148*fb1b10abSAndroid Build Coastguard Worker }
149*fb1b10abSAndroid Build Coastguard Worker
vpx_tm_predictor_8x8_dspr2(uint8_t * dst,ptrdiff_t stride,const uint8_t * above,const uint8_t * left)150*fb1b10abSAndroid Build Coastguard Worker void vpx_tm_predictor_8x8_dspr2(uint8_t *dst, ptrdiff_t stride,
151*fb1b10abSAndroid Build Coastguard Worker const uint8_t *above, const uint8_t *left) {
152*fb1b10abSAndroid Build Coastguard Worker int32_t abovel, abover;
153*fb1b10abSAndroid Build Coastguard Worker int32_t abovel_1, abover_1;
154*fb1b10abSAndroid Build Coastguard Worker int32_t left0;
155*fb1b10abSAndroid Build Coastguard Worker int32_t res0, res1, res2, res3;
156*fb1b10abSAndroid Build Coastguard Worker int32_t reshw;
157*fb1b10abSAndroid Build Coastguard Worker int32_t top_left;
158*fb1b10abSAndroid Build Coastguard Worker uint8_t *cm = vpx_ff_cropTbl;
159*fb1b10abSAndroid Build Coastguard Worker
160*fb1b10abSAndroid Build Coastguard Worker __asm__ __volatile__(
161*fb1b10abSAndroid Build Coastguard Worker "ulw %[reshw], (%[above]) \n\t"
162*fb1b10abSAndroid Build Coastguard Worker "ulw %[top_left], 4(%[above]) \n\t"
163*fb1b10abSAndroid Build Coastguard Worker
164*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], (%[left]) \n\t"
165*fb1b10abSAndroid Build Coastguard Worker
166*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[abovel], %[reshw] \n\t"
167*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[abover], %[reshw] \n\t"
168*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbl %[abovel_1], %[top_left] \n\t"
169*fb1b10abSAndroid Build Coastguard Worker "preceu.ph.qbr %[abover_1], %[top_left] \n\t"
170*fb1b10abSAndroid Build Coastguard Worker
171*fb1b10abSAndroid Build Coastguard Worker "lbu %[top_left], -1(%[above]) \n\t"
172*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
173*fb1b10abSAndroid Build Coastguard Worker
174*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[top_left], %[top_left] \n\t"
175*fb1b10abSAndroid Build Coastguard Worker
176*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
177*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
178*fb1b10abSAndroid Build Coastguard Worker
179*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
180*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
181*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
182*fb1b10abSAndroid Build Coastguard Worker
183*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
184*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
185*fb1b10abSAndroid Build Coastguard Worker
186*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
187*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
188*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
189*fb1b10abSAndroid Build Coastguard Worker
190*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
191*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
192*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
193*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
194*fb1b10abSAndroid Build Coastguard Worker
195*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
196*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
197*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
198*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
199*fb1b10abSAndroid Build Coastguard Worker
200*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
201*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
202*fb1b10abSAndroid Build Coastguard Worker
203*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
204*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
205*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
206*fb1b10abSAndroid Build Coastguard Worker
207*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
208*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
209*fb1b10abSAndroid Build Coastguard Worker
210*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
211*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
212*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
213*fb1b10abSAndroid Build Coastguard Worker
214*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 1(%[left]) \n\t"
215*fb1b10abSAndroid Build Coastguard Worker
216*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
217*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
218*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
219*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
220*fb1b10abSAndroid Build Coastguard Worker
221*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
222*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
223*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
224*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
225*fb1b10abSAndroid Build Coastguard Worker
226*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
227*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
228*fb1b10abSAndroid Build Coastguard Worker
229*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
230*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
231*fb1b10abSAndroid Build Coastguard Worker
232*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
233*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
234*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
235*fb1b10abSAndroid Build Coastguard Worker
236*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
237*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
238*fb1b10abSAndroid Build Coastguard Worker
239*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
240*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
241*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
242*fb1b10abSAndroid Build Coastguard Worker
243*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
244*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
245*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
246*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
247*fb1b10abSAndroid Build Coastguard Worker
248*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
249*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
250*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
251*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
252*fb1b10abSAndroid Build Coastguard Worker
253*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
254*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
255*fb1b10abSAndroid Build Coastguard Worker
256*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
257*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
258*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
259*fb1b10abSAndroid Build Coastguard Worker
260*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
261*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
262*fb1b10abSAndroid Build Coastguard Worker
263*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
264*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
265*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
266*fb1b10abSAndroid Build Coastguard Worker
267*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 2(%[left]) \n\t"
268*fb1b10abSAndroid Build Coastguard Worker
269*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
270*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
271*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
272*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
273*fb1b10abSAndroid Build Coastguard Worker
274*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
275*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
276*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
277*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
278*fb1b10abSAndroid Build Coastguard Worker
279*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
280*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
281*fb1b10abSAndroid Build Coastguard Worker
282*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
283*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
284*fb1b10abSAndroid Build Coastguard Worker
285*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
286*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
287*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
288*fb1b10abSAndroid Build Coastguard Worker
289*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
290*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
291*fb1b10abSAndroid Build Coastguard Worker
292*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
293*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
294*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
295*fb1b10abSAndroid Build Coastguard Worker
296*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
297*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
298*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
299*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
300*fb1b10abSAndroid Build Coastguard Worker
301*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
302*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
303*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
304*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
305*fb1b10abSAndroid Build Coastguard Worker
306*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
307*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
308*fb1b10abSAndroid Build Coastguard Worker
309*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
310*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
311*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
312*fb1b10abSAndroid Build Coastguard Worker
313*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
314*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
315*fb1b10abSAndroid Build Coastguard Worker
316*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
317*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
318*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
319*fb1b10abSAndroid Build Coastguard Worker
320*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 3(%[left]) \n\t"
321*fb1b10abSAndroid Build Coastguard Worker
322*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
323*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
324*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
325*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
326*fb1b10abSAndroid Build Coastguard Worker
327*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
328*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
329*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
330*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
331*fb1b10abSAndroid Build Coastguard Worker
332*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
333*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
334*fb1b10abSAndroid Build Coastguard Worker
335*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
336*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
337*fb1b10abSAndroid Build Coastguard Worker
338*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
339*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
340*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
341*fb1b10abSAndroid Build Coastguard Worker
342*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
343*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
344*fb1b10abSAndroid Build Coastguard Worker
345*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
346*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
347*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
348*fb1b10abSAndroid Build Coastguard Worker
349*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
350*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
351*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
352*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
353*fb1b10abSAndroid Build Coastguard Worker
354*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
355*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
356*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
357*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
358*fb1b10abSAndroid Build Coastguard Worker
359*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
360*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
361*fb1b10abSAndroid Build Coastguard Worker
362*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
363*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
364*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
365*fb1b10abSAndroid Build Coastguard Worker
366*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
367*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
368*fb1b10abSAndroid Build Coastguard Worker
369*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
370*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
371*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
372*fb1b10abSAndroid Build Coastguard Worker
373*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 4(%[left]) \n\t"
374*fb1b10abSAndroid Build Coastguard Worker
375*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
376*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
377*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
378*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
379*fb1b10abSAndroid Build Coastguard Worker
380*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
381*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
382*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
383*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
384*fb1b10abSAndroid Build Coastguard Worker
385*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
386*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
387*fb1b10abSAndroid Build Coastguard Worker
388*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
389*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
390*fb1b10abSAndroid Build Coastguard Worker
391*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
392*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
393*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
394*fb1b10abSAndroid Build Coastguard Worker
395*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
396*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
397*fb1b10abSAndroid Build Coastguard Worker
398*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
399*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
400*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
401*fb1b10abSAndroid Build Coastguard Worker
402*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
403*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
404*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
405*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
406*fb1b10abSAndroid Build Coastguard Worker
407*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
408*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
409*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
410*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
411*fb1b10abSAndroid Build Coastguard Worker
412*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
413*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
414*fb1b10abSAndroid Build Coastguard Worker
415*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
416*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
417*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
418*fb1b10abSAndroid Build Coastguard Worker
419*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
420*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
421*fb1b10abSAndroid Build Coastguard Worker
422*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
423*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
424*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
425*fb1b10abSAndroid Build Coastguard Worker
426*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 5(%[left]) \n\t"
427*fb1b10abSAndroid Build Coastguard Worker
428*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
429*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
430*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
431*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
432*fb1b10abSAndroid Build Coastguard Worker
433*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
434*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
435*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
436*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
437*fb1b10abSAndroid Build Coastguard Worker
438*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
439*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
440*fb1b10abSAndroid Build Coastguard Worker
441*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
442*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
443*fb1b10abSAndroid Build Coastguard Worker
444*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
445*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
446*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
447*fb1b10abSAndroid Build Coastguard Worker
448*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
449*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
450*fb1b10abSAndroid Build Coastguard Worker
451*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
452*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
453*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
454*fb1b10abSAndroid Build Coastguard Worker
455*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
456*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
457*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
458*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
459*fb1b10abSAndroid Build Coastguard Worker
460*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
461*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
462*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
463*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
464*fb1b10abSAndroid Build Coastguard Worker
465*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
466*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
467*fb1b10abSAndroid Build Coastguard Worker
468*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
469*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
470*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
471*fb1b10abSAndroid Build Coastguard Worker
472*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
473*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
474*fb1b10abSAndroid Build Coastguard Worker
475*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
476*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
477*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
478*fb1b10abSAndroid Build Coastguard Worker
479*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 6(%[left]) \n\t"
480*fb1b10abSAndroid Build Coastguard Worker
481*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
482*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
483*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
484*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
485*fb1b10abSAndroid Build Coastguard Worker
486*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
487*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
488*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
489*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
490*fb1b10abSAndroid Build Coastguard Worker
491*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
492*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
493*fb1b10abSAndroid Build Coastguard Worker
494*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
495*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
496*fb1b10abSAndroid Build Coastguard Worker
497*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
498*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
499*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
500*fb1b10abSAndroid Build Coastguard Worker
501*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
502*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
503*fb1b10abSAndroid Build Coastguard Worker
504*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
505*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
506*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
507*fb1b10abSAndroid Build Coastguard Worker
508*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
509*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
510*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
511*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
512*fb1b10abSAndroid Build Coastguard Worker
513*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
514*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
515*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
516*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
517*fb1b10abSAndroid Build Coastguard Worker
518*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
519*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
520*fb1b10abSAndroid Build Coastguard Worker
521*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
522*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
523*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
524*fb1b10abSAndroid Build Coastguard Worker
525*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
526*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
527*fb1b10abSAndroid Build Coastguard Worker
528*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
529*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
530*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
531*fb1b10abSAndroid Build Coastguard Worker
532*fb1b10abSAndroid Build Coastguard Worker "lbu %[left0], 7(%[left]) \n\t"
533*fb1b10abSAndroid Build Coastguard Worker
534*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
535*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
536*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
537*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
538*fb1b10abSAndroid Build Coastguard Worker
539*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
540*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
541*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
542*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
543*fb1b10abSAndroid Build Coastguard Worker
544*fb1b10abSAndroid Build Coastguard Worker "replv.ph %[left0], %[left0] \n\t"
545*fb1b10abSAndroid Build Coastguard Worker "add %[dst], %[dst], %[stride] \n\t"
546*fb1b10abSAndroid Build Coastguard Worker
547*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel], %[left0] \n\t"
548*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
549*fb1b10abSAndroid Build Coastguard Worker
550*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
551*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
552*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
553*fb1b10abSAndroid Build Coastguard Worker
554*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover], %[left0] \n\t"
555*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
556*fb1b10abSAndroid Build Coastguard Worker
557*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
558*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
559*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
560*fb1b10abSAndroid Build Coastguard Worker
561*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
562*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
563*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
564*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
565*fb1b10abSAndroid Build Coastguard Worker
566*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], (%[dst]) \n\t"
567*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 1(%[dst]) \n\t"
568*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 2(%[dst]) \n\t"
569*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 3(%[dst]) \n\t"
570*fb1b10abSAndroid Build Coastguard Worker
571*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abovel_1], %[left0] \n\t"
572*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
573*fb1b10abSAndroid Build Coastguard Worker
574*fb1b10abSAndroid Build Coastguard Worker "sll %[res2], %[reshw], 16 \n\t"
575*fb1b10abSAndroid Build Coastguard Worker "sra %[res2], %[res2], 16 \n\t"
576*fb1b10abSAndroid Build Coastguard Worker "sra %[res3], %[reshw], 16 \n\t"
577*fb1b10abSAndroid Build Coastguard Worker
578*fb1b10abSAndroid Build Coastguard Worker "addu.ph %[reshw], %[abover_1], %[left0] \n\t"
579*fb1b10abSAndroid Build Coastguard Worker "subu.ph %[reshw], %[reshw], %[top_left] \n\t"
580*fb1b10abSAndroid Build Coastguard Worker
581*fb1b10abSAndroid Build Coastguard Worker "sll %[res0], %[reshw], 16 \n\t"
582*fb1b10abSAndroid Build Coastguard Worker "sra %[res0], %[res0], 16 \n\t"
583*fb1b10abSAndroid Build Coastguard Worker "sra %[res1], %[reshw], 16 \n\t"
584*fb1b10abSAndroid Build Coastguard Worker
585*fb1b10abSAndroid Build Coastguard Worker "lbux %[res0], %[res0](%[cm]) \n\t"
586*fb1b10abSAndroid Build Coastguard Worker "lbux %[res1], %[res1](%[cm]) \n\t"
587*fb1b10abSAndroid Build Coastguard Worker "lbux %[res2], %[res2](%[cm]) \n\t"
588*fb1b10abSAndroid Build Coastguard Worker "lbux %[res3], %[res3](%[cm]) \n\t"
589*fb1b10abSAndroid Build Coastguard Worker
590*fb1b10abSAndroid Build Coastguard Worker "sb %[res0], 4(%[dst]) \n\t"
591*fb1b10abSAndroid Build Coastguard Worker "sb %[res1], 5(%[dst]) \n\t"
592*fb1b10abSAndroid Build Coastguard Worker "sb %[res2], 6(%[dst]) \n\t"
593*fb1b10abSAndroid Build Coastguard Worker "sb %[res3], 7(%[dst]) \n\t"
594*fb1b10abSAndroid Build Coastguard Worker
595*fb1b10abSAndroid Build Coastguard Worker : [abovel] "=&r"(abovel), [abover] "=&r"(abover),
596*fb1b10abSAndroid Build Coastguard Worker [abovel_1] "=&r"(abovel_1), [abover_1] "=&r"(abover_1),
597*fb1b10abSAndroid Build Coastguard Worker [left0] "=&r"(left0), [res2] "=&r"(res2), [res3] "=&r"(res3),
598*fb1b10abSAndroid Build Coastguard Worker [res0] "=&r"(res0), [res1] "=&r"(res1), [reshw] "=&r"(reshw),
599*fb1b10abSAndroid Build Coastguard Worker [top_left] "=&r"(top_left)
600*fb1b10abSAndroid Build Coastguard Worker : [above] "r"(above), [left] "r"(left), [dst] "r"(dst),
601*fb1b10abSAndroid Build Coastguard Worker [stride] "r"(stride), [cm] "r"(cm));
602*fb1b10abSAndroid Build Coastguard Worker }
603*fb1b10abSAndroid Build Coastguard Worker #endif // #if HAVE_DSPR2
604