xref: /aosp_15_r20/external/libvpx/vpx_dsp/mips/intrapred8_dspr2.c (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
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