xref: /aosp_15_r20/external/libdav1d/src/loongarch/ipred.S (revision c09093415860a1c2373dacd84c4fde00c507cdfd)
1*c0909341SAndroid Build Coastguard Worker/*
2*c0909341SAndroid Build Coastguard Worker * Copyright © 2024, VideoLAN and dav1d authors
3*c0909341SAndroid Build Coastguard Worker * Copyright © 2024, Loongson Technology Corporation Limited
4*c0909341SAndroid Build Coastguard Worker * All rights reserved.
5*c0909341SAndroid Build Coastguard Worker *
6*c0909341SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
7*c0909341SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met:
8*c0909341SAndroid Build Coastguard Worker *
9*c0909341SAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright notice, this
10*c0909341SAndroid Build Coastguard Worker *    list of conditions and the following disclaimer.
11*c0909341SAndroid Build Coastguard Worker *
12*c0909341SAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright notice,
13*c0909341SAndroid Build Coastguard Worker *    this list of conditions and the following disclaimer in the documentation
14*c0909341SAndroid Build Coastguard Worker *    and/or other materials provided with the distribution.
15*c0909341SAndroid Build Coastguard Worker *
16*c0909341SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17*c0909341SAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18*c0909341SAndroid Build Coastguard Worker * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19*c0909341SAndroid Build Coastguard Worker * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20*c0909341SAndroid Build Coastguard Worker * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21*c0909341SAndroid Build Coastguard Worker * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22*c0909341SAndroid Build Coastguard Worker * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23*c0909341SAndroid Build Coastguard Worker * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*c0909341SAndroid Build Coastguard Worker * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25*c0909341SAndroid Build Coastguard Worker * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*c0909341SAndroid Build Coastguard Worker */
27*c0909341SAndroid Build Coastguard Worker
28*c0909341SAndroid Build Coastguard Worker#include "src/loongarch/loongson_asm.S"
29*c0909341SAndroid Build Coastguard Worker
30*c0909341SAndroid Build Coastguard Worker.macro ipred_dc_gen topleft, width, height
31*c0909341SAndroid Build Coastguard Worker    add.d          t0,      \width,  \height //dc
32*c0909341SAndroid Build Coastguard Worker    srai.d         t0,      t0,      1
33*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      \topleft,1
34*c0909341SAndroid Build Coastguard Worker
35*c0909341SAndroid Build Coastguard Worker    or             t1,      zero,    zero  //data index
36*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      \width,  4     //loop param
37*c0909341SAndroid Build Coastguard Worker    beqz           t2,      2f
38*c0909341SAndroid Build Coastguard Worker
39*c0909341SAndroid Build Coastguard Worker1:  // width/16
40*c0909341SAndroid Build Coastguard Worker    vldx           vr0,     t3,      t1
41*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
42*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
43*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
44*c0909341SAndroid Build Coastguard Worker    vhaddw.qu.du   vr0,     vr0,     vr0
45*c0909341SAndroid Build Coastguard Worker
46*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
47*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
48*c0909341SAndroid Build Coastguard Worker
49*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      16
50*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
51*c0909341SAndroid Build Coastguard Worker    bnez           t2,      1b
52*c0909341SAndroid Build Coastguard Worker    b              4f
53*c0909341SAndroid Build Coastguard Worker
54*c0909341SAndroid Build Coastguard Worker2:  // &8
55*c0909341SAndroid Build Coastguard Worker    andi           t2,      \width,  8
56*c0909341SAndroid Build Coastguard Worker    beqz           t2,      3f
57*c0909341SAndroid Build Coastguard Worker
58*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
59*c0909341SAndroid Build Coastguard Worker    fldx.d         f0,      t3,      t1
60*c0909341SAndroid Build Coastguard Worker
61*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
62*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
63*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
64*c0909341SAndroid Build Coastguard Worker
65*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
66*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
67*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      8
68*c0909341SAndroid Build Coastguard Worker    b              4f
69*c0909341SAndroid Build Coastguard Worker
70*c0909341SAndroid Build Coastguard Worker3:  // &4
71*c0909341SAndroid Build Coastguard Worker    andi           t2,      \width,  4
72*c0909341SAndroid Build Coastguard Worker    beqz           t2,      4f
73*c0909341SAndroid Build Coastguard Worker
74*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
75*c0909341SAndroid Build Coastguard Worker    fldx.s         f0,      t3,      t1
76*c0909341SAndroid Build Coastguard Worker
77*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
78*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
79*c0909341SAndroid Build Coastguard Worker
80*c0909341SAndroid Build Coastguard Worker    vpickve2gr.wu  t4,      vr0,     0
81*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
82*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      4
83*c0909341SAndroid Build Coastguard Worker
84*c0909341SAndroid Build Coastguard Worker4:
85*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      \topleft,0
86*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      \height, 4     //loop param
87*c0909341SAndroid Build Coastguard Worker    beqz           t2,      8f
88*c0909341SAndroid Build Coastguard Worker
89*c0909341SAndroid Build Coastguard Worker7:  // height/16
90*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -16
91*c0909341SAndroid Build Coastguard Worker    vld            vr0,     t3,      0
92*c0909341SAndroid Build Coastguard Worker
93*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
94*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
95*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
96*c0909341SAndroid Build Coastguard Worker    vhaddw.qu.du   vr0,     vr0,     vr0
97*c0909341SAndroid Build Coastguard Worker
98*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
99*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
100*c0909341SAndroid Build Coastguard Worker
101*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
102*c0909341SAndroid Build Coastguard Worker    bnez           t2,      7b
103*c0909341SAndroid Build Coastguard Worker    b              10f
104*c0909341SAndroid Build Coastguard Worker
105*c0909341SAndroid Build Coastguard Worker8:  // &8
106*c0909341SAndroid Build Coastguard Worker    andi           t2,      \height, 8
107*c0909341SAndroid Build Coastguard Worker    beqz           t2,      9f
108*c0909341SAndroid Build Coastguard Worker
109*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -8
110*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
111*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      t3,      0
112*c0909341SAndroid Build Coastguard Worker
113*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
114*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
115*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
116*c0909341SAndroid Build Coastguard Worker
117*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
118*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
119*c0909341SAndroid Build Coastguard Worker    b              10f
120*c0909341SAndroid Build Coastguard Worker
121*c0909341SAndroid Build Coastguard Worker9:  // &4
122*c0909341SAndroid Build Coastguard Worker    andi           t2,      \height, 4
123*c0909341SAndroid Build Coastguard Worker    beqz           t2,      10f
124*c0909341SAndroid Build Coastguard Worker
125*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -4
126*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
127*c0909341SAndroid Build Coastguard Worker    fld.s          f0,      t3,      0
128*c0909341SAndroid Build Coastguard Worker
129*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
130*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
131*c0909341SAndroid Build Coastguard Worker
132*c0909341SAndroid Build Coastguard Worker    vpickve2gr.wu  t4,      vr0,     0
133*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
134*c0909341SAndroid Build Coastguard Worker
135*c0909341SAndroid Build Coastguard Worker10:
136*c0909341SAndroid Build Coastguard Worker    add.d          t1,      \width,  \height
137*c0909341SAndroid Build Coastguard Worker    ctz.w          t1,      t1
138*c0909341SAndroid Build Coastguard Worker    sra.w          t0,      t0,      t1
139*c0909341SAndroid Build Coastguard Worker
140*c0909341SAndroid Build Coastguard Worker    // w != h
141*c0909341SAndroid Build Coastguard Worker    beq            \width,  \height, 16f
142*c0909341SAndroid Build Coastguard Worker    add.d          t2,      \height, \height
143*c0909341SAndroid Build Coastguard Worker    add.d          t3,      \width,  \width
144*c0909341SAndroid Build Coastguard Worker    slt            t2,      t2,      \width
145*c0909341SAndroid Build Coastguard Worker    slt            t3,      t3,      \height
146*c0909341SAndroid Build Coastguard Worker    or             t2,      t2,      t3
147*c0909341SAndroid Build Coastguard Worker    li.w           t3,      0x3334
148*c0909341SAndroid Build Coastguard Worker    maskeqz        t1,      t3,      t2
149*c0909341SAndroid Build Coastguard Worker    li.w           t3,      0x5556
150*c0909341SAndroid Build Coastguard Worker    masknez        t2,      t3,      t2
151*c0909341SAndroid Build Coastguard Worker    or             t1,      t1,      t2
152*c0909341SAndroid Build Coastguard Worker    mul.w          t0,      t0,      t1
153*c0909341SAndroid Build Coastguard Worker    srai.w         t0,      t0,      16
154*c0909341SAndroid Build Coastguard Worker
155*c0909341SAndroid Build Coastguard Worker16:
156*c0909341SAndroid Build Coastguard Worker.endm
157*c0909341SAndroid Build Coastguard Worker
158*c0909341SAndroid Build Coastguard Worker.macro ipred_splat_dc dst, stride, width, height, dc
159*c0909341SAndroid Build Coastguard Worker    li.w           t1,      4
160*c0909341SAndroid Build Coastguard Worker    blt            t1,      \width,  2f
161*c0909341SAndroid Build Coastguard Worker
162*c0909341SAndroid Build Coastguard Worker    li.w           t1,      0x01010101
163*c0909341SAndroid Build Coastguard Worker    mulw.d.wu      t1,      \dc,     t1
164*c0909341SAndroid Build Coastguard Worker    beqz           \height, 7f
165*c0909341SAndroid Build Coastguard Worker    or             t2,      \dst,    \dst
166*c0909341SAndroid Build Coastguard Worker1:  // width <= 4
167*c0909341SAndroid Build Coastguard Worker    st.w           t1,      t2,      0
168*c0909341SAndroid Build Coastguard Worker    add.d          t2,      t2,      \stride
169*c0909341SAndroid Build Coastguard Worker    addi.d         \height, \height, -1
170*c0909341SAndroid Build Coastguard Worker    bnez           \height, 1b
171*c0909341SAndroid Build Coastguard Worker    b              7f
172*c0909341SAndroid Build Coastguard Worker
173*c0909341SAndroid Build Coastguard Worker2:  //width > 4
174*c0909341SAndroid Build Coastguard Worker    li.d           t1,      0x0101010101010101
175*c0909341SAndroid Build Coastguard Worker    mul.d          t1,      \dc,     t1
176*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.d   vr0,     t1
177*c0909341SAndroid Build Coastguard Worker    or             t4,      \dst,    \dst
178*c0909341SAndroid Build Coastguard Worker    beqz           \height, 7f
179*c0909341SAndroid Build Coastguard Worker
180*c0909341SAndroid Build Coastguard Worker3:
181*c0909341SAndroid Build Coastguard Worker    andi           t5,      \width,  64
182*c0909341SAndroid Build Coastguard Worker    beqz           t5,      4f
183*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      0
184*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      16
185*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      32
186*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      48
187*c0909341SAndroid Build Coastguard Worker    b              6f
188*c0909341SAndroid Build Coastguard Worker
189*c0909341SAndroid Build Coastguard Worker4:
190*c0909341SAndroid Build Coastguard Worker    andi           t5,      \width,  32
191*c0909341SAndroid Build Coastguard Worker    beqz           t5,      41f
192*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      0
193*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      16
194*c0909341SAndroid Build Coastguard Worker    b              6f
195*c0909341SAndroid Build Coastguard Worker
196*c0909341SAndroid Build Coastguard Worker41:
197*c0909341SAndroid Build Coastguard Worker    andi           t5,      \width,  16
198*c0909341SAndroid Build Coastguard Worker    beqz           t5,      5f
199*c0909341SAndroid Build Coastguard Worker    vst            vr0,     t4,      0
200*c0909341SAndroid Build Coastguard Worker    b              6f
201*c0909341SAndroid Build Coastguard Worker
202*c0909341SAndroid Build Coastguard Worker5:
203*c0909341SAndroid Build Coastguard Worker    fst.d          f0,      t4,      0
204*c0909341SAndroid Build Coastguard Worker
205*c0909341SAndroid Build Coastguard Worker6:
206*c0909341SAndroid Build Coastguard Worker    add.d          t4,      t4,      \stride
207*c0909341SAndroid Build Coastguard Worker    addi.d         \height, \height, -1
208*c0909341SAndroid Build Coastguard Worker    bnez           \height, 3b
209*c0909341SAndroid Build Coastguard Worker
210*c0909341SAndroid Build Coastguard Worker7:
211*c0909341SAndroid Build Coastguard Worker.endm
212*c0909341SAndroid Build Coastguard Worker
213*c0909341SAndroid Build Coastguard Worker.macro ipred_dc_gen_top topleft, width
214*c0909341SAndroid Build Coastguard Worker    srai.d         t0,      \width,  1
215*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      \topleft,1
216*c0909341SAndroid Build Coastguard Worker
217*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      \width,  4
218*c0909341SAndroid Build Coastguard Worker    beqz           t2,      2f
219*c0909341SAndroid Build Coastguard Worker1:
220*c0909341SAndroid Build Coastguard Worker    vld            vr0,     t1,      0
221*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
222*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
223*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
224*c0909341SAndroid Build Coastguard Worker    vhaddw.qu.du   vr0,     vr0,     vr0
225*c0909341SAndroid Build Coastguard Worker
226*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t3,      vr0,     0
227*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t3
228*c0909341SAndroid Build Coastguard Worker
229*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      16
230*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
231*c0909341SAndroid Build Coastguard Worker    bnez           t2,      1b
232*c0909341SAndroid Build Coastguard Worker    b              4f
233*c0909341SAndroid Build Coastguard Worker
234*c0909341SAndroid Build Coastguard Worker2:  // &8
235*c0909341SAndroid Build Coastguard Worker    andi           t2,      \width,  8
236*c0909341SAndroid Build Coastguard Worker    beqz           t2,      3f
237*c0909341SAndroid Build Coastguard Worker
238*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
239*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      t1,      0
240*c0909341SAndroid Build Coastguard Worker
241*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
242*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
243*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
244*c0909341SAndroid Build Coastguard Worker
245*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t2,      vr0,     0
246*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t2
247*c0909341SAndroid Build Coastguard Worker
248*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      8
249*c0909341SAndroid Build Coastguard Worker    b              4f
250*c0909341SAndroid Build Coastguard Worker
251*c0909341SAndroid Build Coastguard Worker3:  // &4
252*c0909341SAndroid Build Coastguard Worker    andi           t2,      \width,  4
253*c0909341SAndroid Build Coastguard Worker    beqz           t2,      4f
254*c0909341SAndroid Build Coastguard Worker
255*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
256*c0909341SAndroid Build Coastguard Worker    fld.s          f0,      t1,      0
257*c0909341SAndroid Build Coastguard Worker
258*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
259*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
260*c0909341SAndroid Build Coastguard Worker
261*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t2,      vr0,     0
262*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t2
263*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      4
264*c0909341SAndroid Build Coastguard Worker
265*c0909341SAndroid Build Coastguard Worker4:
266*c0909341SAndroid Build Coastguard Worker    ctz.w          t1,      \width
267*c0909341SAndroid Build Coastguard Worker    sra.w          t0,      t0,      t1
268*c0909341SAndroid Build Coastguard Worker.endm
269*c0909341SAndroid Build Coastguard Worker
270*c0909341SAndroid Build Coastguard Worker.macro ipred_dc_gen_left topleft, height
271*c0909341SAndroid Build Coastguard Worker    srai.d         t0,      \height, 1
272*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      \height, 4     //loop param
273*c0909341SAndroid Build Coastguard Worker    beqz           t2,      8f
274*c0909341SAndroid Build Coastguard Worker
275*c0909341SAndroid Build Coastguard Worker7:  // height/16
276*c0909341SAndroid Build Coastguard Worker    addi.d         \topleft,\topleft,-16
277*c0909341SAndroid Build Coastguard Worker    vld            vr0,     \topleft,0
278*c0909341SAndroid Build Coastguard Worker
279*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
280*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
281*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
282*c0909341SAndroid Build Coastguard Worker    vhaddw.qu.du   vr0,     vr0,     vr0
283*c0909341SAndroid Build Coastguard Worker
284*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
285*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
286*c0909341SAndroid Build Coastguard Worker
287*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
288*c0909341SAndroid Build Coastguard Worker    bnez           t2,      7b
289*c0909341SAndroid Build Coastguard Worker    b              10f
290*c0909341SAndroid Build Coastguard Worker
291*c0909341SAndroid Build Coastguard Worker8:  // &8
292*c0909341SAndroid Build Coastguard Worker    andi           t2,      \height, 8
293*c0909341SAndroid Build Coastguard Worker    beqz           t2,      9f
294*c0909341SAndroid Build Coastguard Worker
295*c0909341SAndroid Build Coastguard Worker    addi.d         \topleft,\topleft,-8
296*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
297*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      \topleft,0
298*c0909341SAndroid Build Coastguard Worker
299*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
300*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
301*c0909341SAndroid Build Coastguard Worker    vhaddw.du.wu   vr0,     vr0,     vr0
302*c0909341SAndroid Build Coastguard Worker
303*c0909341SAndroid Build Coastguard Worker    vpickve2gr.du  t4,      vr0,     0
304*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
305*c0909341SAndroid Build Coastguard Worker    b              10f
306*c0909341SAndroid Build Coastguard Worker
307*c0909341SAndroid Build Coastguard Worker9:  // &4
308*c0909341SAndroid Build Coastguard Worker    andi           t2,      \height, 4
309*c0909341SAndroid Build Coastguard Worker    beqz           t2,      10f
310*c0909341SAndroid Build Coastguard Worker
311*c0909341SAndroid Build Coastguard Worker    addi.d         \topleft,\topleft,-4
312*c0909341SAndroid Build Coastguard Worker    vxor.v         vr0,     vr0,     vr0
313*c0909341SAndroid Build Coastguard Worker    fld.s          f0,      \topleft,0
314*c0909341SAndroid Build Coastguard Worker
315*c0909341SAndroid Build Coastguard Worker    vhaddw.hu.bu   vr0,     vr0,     vr0
316*c0909341SAndroid Build Coastguard Worker    vhaddw.wu.hu   vr0,     vr0,     vr0
317*c0909341SAndroid Build Coastguard Worker
318*c0909341SAndroid Build Coastguard Worker    vpickve2gr.wu  t4,      vr0,     0
319*c0909341SAndroid Build Coastguard Worker    add.d          t0,      t0,      t4
320*c0909341SAndroid Build Coastguard Worker
321*c0909341SAndroid Build Coastguard Worker10:
322*c0909341SAndroid Build Coastguard Worker    ctz.w          t1,      \height
323*c0909341SAndroid Build Coastguard Worker    sra.w          t0,      t0,      t1
324*c0909341SAndroid Build Coastguard Worker
325*c0909341SAndroid Build Coastguard Worker.endm
326*c0909341SAndroid Build Coastguard Worker
327*c0909341SAndroid Build Coastguard Worker// void ipred_dc_lsx(pixel *dst, const ptrdiff_t stride,
328*c0909341SAndroid Build Coastguard Worker//                   const pixel *const topleft,
329*c0909341SAndroid Build Coastguard Worker//                   const int width, const int height, const int a,
330*c0909341SAndroid Build Coastguard Worker//                   const int max_width, const int max_height
331*c0909341SAndroid Build Coastguard Worker//                   HIGHBD_DECL_SUFFIX)
332*c0909341SAndroid Build Coastguard Workerfunction ipred_dc_8bpc_lsx
333*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen   a2, a3, a4
334*c0909341SAndroid Build Coastguard Worker    ipred_splat_dc a0, a1, a3, a4, t0
335*c0909341SAndroid Build Coastguard Worker
336*c0909341SAndroid Build Coastguard Workerendfunc
337*c0909341SAndroid Build Coastguard Worker
338*c0909341SAndroid Build Coastguard Worker// void ipred_dc_128_lsx(pixel *dst, const ptrdiff_t stride,
339*c0909341SAndroid Build Coastguard Worker//                       const pixel *const topleft,
340*c0909341SAndroid Build Coastguard Worker//                       const int width, const int height, const int a,
341*c0909341SAndroid Build Coastguard Worker//                       const int max_width, const int max_height
342*c0909341SAndroid Build Coastguard Worker//                       HIGHBD_DECL_SUFFIX)
343*c0909341SAndroid Build Coastguard Workerfunction ipred_dc_128_8bpc_lsx
344*c0909341SAndroid Build Coastguard Worker    li.w           t0,      128
345*c0909341SAndroid Build Coastguard Worker    ipred_splat_dc a0, a1, a3, a4, t0
346*c0909341SAndroid Build Coastguard Worker
347*c0909341SAndroid Build Coastguard Workerendfunc
348*c0909341SAndroid Build Coastguard Worker
349*c0909341SAndroid Build Coastguard Worker// void ipred_dc_top_c(pixel *dst, const ptrdiff_t stride,
350*c0909341SAndroid Build Coastguard Worker//                     const pixel *const topleft,
351*c0909341SAndroid Build Coastguard Worker//                     const int width, const int height, const int a,
352*c0909341SAndroid Build Coastguard Worker//                     const int max_width, const int max_height
353*c0909341SAndroid Build Coastguard Worker//                     HIGHBD_DECL_SUFFIX)
354*c0909341SAndroid Build Coastguard Workerfunction ipred_dc_top_8bpc_lsx
355*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen_top a2, a3
356*c0909341SAndroid Build Coastguard Worker    ipred_splat_dc   a0, a1, a3, a4, t0
357*c0909341SAndroid Build Coastguard Worker
358*c0909341SAndroid Build Coastguard Workerendfunc
359*c0909341SAndroid Build Coastguard Worker
360*c0909341SAndroid Build Coastguard Worker// void ipred_dc_left_c(pixel *dst, const ptrdiff_t stride,
361*c0909341SAndroid Build Coastguard Worker//                      const pixel *const topleft,
362*c0909341SAndroid Build Coastguard Worker//                      const int width, const int height, const int a,
363*c0909341SAndroid Build Coastguard Worker//                      const int max_width, const int max_height
364*c0909341SAndroid Build Coastguard Worker//                      HIGHBD_DECL_SUFFIX)
365*c0909341SAndroid Build Coastguard Workerfunction ipred_dc_left_8bpc_lsx
366*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen_left a2, a4
367*c0909341SAndroid Build Coastguard Worker    ipred_splat_dc    a0, a1, a3, a4, t0
368*c0909341SAndroid Build Coastguard Worker
369*c0909341SAndroid Build Coastguard Workerendfunc
370*c0909341SAndroid Build Coastguard Worker
371*c0909341SAndroid Build Coastguard Worker.macro pixel_set_8bpc dst_ptr, src_ptr, width
372*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     \src_ptr, 0
373*c0909341SAndroid Build Coastguard Worker1:
374*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   64
375*c0909341SAndroid Build Coastguard Worker    beqz           a5,      2f
376*c0909341SAndroid Build Coastguard Worker
377*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
378*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 16
379*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 32
380*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 48
381*c0909341SAndroid Build Coastguard Worker    b              6f
382*c0909341SAndroid Build Coastguard Worker2:
383*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   32
384*c0909341SAndroid Build Coastguard Worker    beqz           a5,      3f
385*c0909341SAndroid Build Coastguard Worker
386*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
387*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 16
388*c0909341SAndroid Build Coastguard Worker    b              6f
389*c0909341SAndroid Build Coastguard Worker3:
390*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   16
391*c0909341SAndroid Build Coastguard Worker    beqz           a5,      4f
392*c0909341SAndroid Build Coastguard Worker
393*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
394*c0909341SAndroid Build Coastguard Worker    b              6f
395*c0909341SAndroid Build Coastguard Worker4:
396*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   8
397*c0909341SAndroid Build Coastguard Worker    beqz           a5,      5f
398*c0909341SAndroid Build Coastguard Worker
399*c0909341SAndroid Build Coastguard Worker    fst.d          f0,      \dst_ptr, 0
400*c0909341SAndroid Build Coastguard Worker    b              6f
401*c0909341SAndroid Build Coastguard Worker5:
402*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   4
403*c0909341SAndroid Build Coastguard Worker    beqz           a5,      6f
404*c0909341SAndroid Build Coastguard Worker
405*c0909341SAndroid Build Coastguard Worker    fst.s          f0,      \dst_ptr, 0
406*c0909341SAndroid Build Coastguard Worker6:
407*c0909341SAndroid Build Coastguard Worker.endm
408*c0909341SAndroid Build Coastguard Worker
409*c0909341SAndroid Build Coastguard Worker// void ipred_h_c(pixel *dst, const ptrdiff_t stride,
410*c0909341SAndroid Build Coastguard Worker//                const pixel *const topleft,
411*c0909341SAndroid Build Coastguard Worker//                const int width, const int height, const int a,
412*c0909341SAndroid Build Coastguard Worker//                const int max_width, const int max_height
413*c0909341SAndroid Build Coastguard Worker//                HIGHBD_DECL_SUFFIX)
414*c0909341SAndroid Build Coastguard Workerfunction ipred_h_8bpc_lsx
415*c0909341SAndroid Build Coastguard Worker    beqz           a4,      .IPRED_H_END
416*c0909341SAndroid Build Coastguard Worker.IPRED_H_LOOP:
417*c0909341SAndroid Build Coastguard Worker    addi.d         a2,      a2,      -1
418*c0909341SAndroid Build Coastguard Worker
419*c0909341SAndroid Build Coastguard Worker    pixel_set_8bpc a0, a2, a3
420*c0909341SAndroid Build Coastguard Worker
421*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
422*c0909341SAndroid Build Coastguard Worker    addi.d         a4,      a4,      -1
423*c0909341SAndroid Build Coastguard Worker    bnez           a4,      .IPRED_H_LOOP
424*c0909341SAndroid Build Coastguard Worker
425*c0909341SAndroid Build Coastguard Worker.IPRED_H_END:
426*c0909341SAndroid Build Coastguard Workerendfunc
427*c0909341SAndroid Build Coastguard Worker
428*c0909341SAndroid Build Coastguard Worker.macro pixel_copy_8bpc dst_ptr, src_ptr, width
429*c0909341SAndroid Build Coastguard Worker1:
430*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   64
431*c0909341SAndroid Build Coastguard Worker    beqz           a5,      2f
432*c0909341SAndroid Build Coastguard Worker
433*c0909341SAndroid Build Coastguard Worker    vld            vr0,     \src_ptr, 0
434*c0909341SAndroid Build Coastguard Worker    vld            vr1,     \src_ptr, 16
435*c0909341SAndroid Build Coastguard Worker    vld            vr2,     \src_ptr, 32
436*c0909341SAndroid Build Coastguard Worker    vld            vr3,     \src_ptr, 48
437*c0909341SAndroid Build Coastguard Worker
438*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
439*c0909341SAndroid Build Coastguard Worker    vst            vr1,     \dst_ptr, 16
440*c0909341SAndroid Build Coastguard Worker    vst            vr2,     \dst_ptr, 32
441*c0909341SAndroid Build Coastguard Worker    vst            vr3,     \dst_ptr, 48
442*c0909341SAndroid Build Coastguard Worker
443*c0909341SAndroid Build Coastguard Worker    b              6f
444*c0909341SAndroid Build Coastguard Worker2:
445*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   32
446*c0909341SAndroid Build Coastguard Worker    beqz           a5,      3f
447*c0909341SAndroid Build Coastguard Worker
448*c0909341SAndroid Build Coastguard Worker    vld            vr0,     \src_ptr, 0
449*c0909341SAndroid Build Coastguard Worker    vld            vr1,     \src_ptr, 16
450*c0909341SAndroid Build Coastguard Worker
451*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
452*c0909341SAndroid Build Coastguard Worker    vst            vr1,     \dst_ptr, 16
453*c0909341SAndroid Build Coastguard Worker
454*c0909341SAndroid Build Coastguard Worker    b              6f
455*c0909341SAndroid Build Coastguard Worker3:
456*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   16
457*c0909341SAndroid Build Coastguard Worker    beqz           a5,      4f
458*c0909341SAndroid Build Coastguard Worker
459*c0909341SAndroid Build Coastguard Worker    vld            vr0,     \src_ptr, 0
460*c0909341SAndroid Build Coastguard Worker    vst            vr0,     \dst_ptr, 0
461*c0909341SAndroid Build Coastguard Worker
462*c0909341SAndroid Build Coastguard Worker    b              6f
463*c0909341SAndroid Build Coastguard Worker4:
464*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   8
465*c0909341SAndroid Build Coastguard Worker    beqz           a5,      5f
466*c0909341SAndroid Build Coastguard Worker
467*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      \src_ptr, 0
468*c0909341SAndroid Build Coastguard Worker    fst.d          f0,      \dst_ptr, 0
469*c0909341SAndroid Build Coastguard Worker
470*c0909341SAndroid Build Coastguard Worker    b              6f
471*c0909341SAndroid Build Coastguard Worker5:
472*c0909341SAndroid Build Coastguard Worker    andi           a5,      \width,   4
473*c0909341SAndroid Build Coastguard Worker    beqz           a5,      6f
474*c0909341SAndroid Build Coastguard Worker
475*c0909341SAndroid Build Coastguard Worker    fld.s          f0,      \src_ptr, 0
476*c0909341SAndroid Build Coastguard Worker    fst.s          f0,      \dst_ptr, 0
477*c0909341SAndroid Build Coastguard Worker6:
478*c0909341SAndroid Build Coastguard Worker.endm
479*c0909341SAndroid Build Coastguard Worker
480*c0909341SAndroid Build Coastguard Worker// void ipred_v_lsx(pixel *dst, const ptrdiff_t stride,
481*c0909341SAndroid Build Coastguard Worker//                  const pixel *const topleft,
482*c0909341SAndroid Build Coastguard Worker//                  const int width, const int height, const int a,
483*c0909341SAndroid Build Coastguard Worker//                  const int max_width, const int max_height
484*c0909341SAndroid Build Coastguard Worker//                  HIGHBD_DECL_SUFFIX)
485*c0909341SAndroid Build Coastguard Workerfunction ipred_v_8bpc_lsx
486*c0909341SAndroid Build Coastguard Worker    beqz           a4,      .IPRED_V_END
487*c0909341SAndroid Build Coastguard Worker    addi.d         a2,      a2,      1
488*c0909341SAndroid Build Coastguard Worker.IPRED_V_LOOP:
489*c0909341SAndroid Build Coastguard Worker    pixel_copy_8bpc  a0, a2, a3
490*c0909341SAndroid Build Coastguard Worker
491*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
492*c0909341SAndroid Build Coastguard Worker    addi.d         a4,      a4,      -1
493*c0909341SAndroid Build Coastguard Worker    bnez           a4,      .IPRED_V_LOOP
494*c0909341SAndroid Build Coastguard Worker
495*c0909341SAndroid Build Coastguard Worker.IPRED_V_END:
496*c0909341SAndroid Build Coastguard Workerendfunc
497*c0909341SAndroid Build Coastguard Worker
498*c0909341SAndroid Build Coastguard Worker// void ipred_paeth_lsx(pixel *dst, const ptrdiff_t stride,
499*c0909341SAndroid Build Coastguard Worker//                      const pixel *const tl_ptr,
500*c0909341SAndroid Build Coastguard Worker//                      const int width, const int height, const int a,
501*c0909341SAndroid Build Coastguard Worker//                      const int max_width, const int max_height
502*c0909341SAndroid Build Coastguard Worker//                      HIGHBD_DECL_SUFFIX)
503*c0909341SAndroid Build Coastguard Workerfunction ipred_paeth_8bpc_lsx
504*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     a2,      0    //topleft
505*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
506*c0909341SAndroid Build Coastguard Worker    or             a6,      a2,      a2
507*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a2,      1
508*c0909341SAndroid Build Coastguard Worker
509*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_H_LOOP:
510*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      -1
511*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr1,     a6,      0   //left
512*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr1,     vr1,     0
513*c0909341SAndroid Build Coastguard Worker
514*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOP64:
515*c0909341SAndroid Build Coastguard Worker    andi           a5,      a3,      64
516*c0909341SAndroid Build Coastguard Worker    beqz           a5,      .IPRED_PAETH_W_LOOP32
517*c0909341SAndroid Build Coastguard Worker
518*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      0   //top
519*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
520*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
521*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
522*c0909341SAndroid Build Coastguard Worker
523*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
524*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
525*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
526*c0909341SAndroid Build Coastguard Worker
527*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
528*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
529*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
530*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
531*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
532*c0909341SAndroid Build Coastguard Worker
533*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
534*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
535*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
536*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
537*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
538*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
539*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
540*c0909341SAndroid Build Coastguard Worker
541*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
542*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
543*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
544*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
545*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
546*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
547*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
548*c0909341SAndroid Build Coastguard Worker
549*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
550*c0909341SAndroid Build Coastguard Worker
551*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      0
552*c0909341SAndroid Build Coastguard Worker
553*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      16   //top
554*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
555*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
556*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
557*c0909341SAndroid Build Coastguard Worker
558*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
559*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
560*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
561*c0909341SAndroid Build Coastguard Worker
562*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
563*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
564*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
565*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
566*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
567*c0909341SAndroid Build Coastguard Worker
568*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
569*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
570*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
571*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
572*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
573*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
574*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
575*c0909341SAndroid Build Coastguard Worker
576*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
577*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
578*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
579*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
580*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
581*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
582*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
583*c0909341SAndroid Build Coastguard Worker
584*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
585*c0909341SAndroid Build Coastguard Worker
586*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      16
587*c0909341SAndroid Build Coastguard Worker
588*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      32   //top
589*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
590*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
591*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
592*c0909341SAndroid Build Coastguard Worker
593*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
594*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
595*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
596*c0909341SAndroid Build Coastguard Worker
597*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
598*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
599*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
600*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
601*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
602*c0909341SAndroid Build Coastguard Worker
603*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
604*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
605*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
606*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
607*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
608*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
609*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
610*c0909341SAndroid Build Coastguard Worker
611*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
612*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
613*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
614*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
615*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
616*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
617*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
618*c0909341SAndroid Build Coastguard Worker
619*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
620*c0909341SAndroid Build Coastguard Worker
621*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      32
622*c0909341SAndroid Build Coastguard Worker
623*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      48   //top
624*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
625*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
626*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
627*c0909341SAndroid Build Coastguard Worker
628*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
629*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
630*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
631*c0909341SAndroid Build Coastguard Worker
632*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
633*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
634*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
635*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
636*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
637*c0909341SAndroid Build Coastguard Worker
638*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
639*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
640*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
641*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
642*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
643*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
644*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
645*c0909341SAndroid Build Coastguard Worker
646*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
647*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
648*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
649*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
650*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
651*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
652*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
653*c0909341SAndroid Build Coastguard Worker
654*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
655*c0909341SAndroid Build Coastguard Worker
656*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      48
657*c0909341SAndroid Build Coastguard Worker
658*c0909341SAndroid Build Coastguard Worker    b              .IPRED_PAETH_W_LOOPEND
659*c0909341SAndroid Build Coastguard Worker
660*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOP32:
661*c0909341SAndroid Build Coastguard Worker    andi           a5,      a3,      32
662*c0909341SAndroid Build Coastguard Worker    beqz           a5,      .IPRED_PAETH_W_LOOP16
663*c0909341SAndroid Build Coastguard Worker
664*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      0   //top
665*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
666*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
667*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
668*c0909341SAndroid Build Coastguard Worker
669*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
670*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
671*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
672*c0909341SAndroid Build Coastguard Worker
673*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
674*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
675*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
676*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
677*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
678*c0909341SAndroid Build Coastguard Worker
679*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
680*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
681*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
682*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
683*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
684*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
685*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
686*c0909341SAndroid Build Coastguard Worker
687*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
688*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
689*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
690*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
691*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
692*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
693*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
694*c0909341SAndroid Build Coastguard Worker
695*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
696*c0909341SAndroid Build Coastguard Worker
697*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      0
698*c0909341SAndroid Build Coastguard Worker
699*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      16   //top
700*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
701*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
702*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
703*c0909341SAndroid Build Coastguard Worker
704*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
705*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
706*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
707*c0909341SAndroid Build Coastguard Worker
708*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
709*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
710*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
711*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
712*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
713*c0909341SAndroid Build Coastguard Worker
714*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
715*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
716*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
717*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
718*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
719*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
720*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
721*c0909341SAndroid Build Coastguard Worker
722*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
723*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
724*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
725*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
726*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
727*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
728*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
729*c0909341SAndroid Build Coastguard Worker
730*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
731*c0909341SAndroid Build Coastguard Worker
732*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      16
733*c0909341SAndroid Build Coastguard Worker
734*c0909341SAndroid Build Coastguard Worker    b              .IPRED_PAETH_W_LOOPEND
735*c0909341SAndroid Build Coastguard Worker
736*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOP16:
737*c0909341SAndroid Build Coastguard Worker    andi           a5,      a3,      16
738*c0909341SAndroid Build Coastguard Worker    beqz           a5,      .IPRED_PAETH_W_LOOP8
739*c0909341SAndroid Build Coastguard Worker
740*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a7,      0   //top
741*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr9,     vr2,     0x0e
742*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
743*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr9,     vr9,     0
744*c0909341SAndroid Build Coastguard Worker
745*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
746*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
747*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr10,    vr0,     vr9
748*c0909341SAndroid Build Coastguard Worker
749*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
750*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
751*c0909341SAndroid Build Coastguard Worker    vadd.h         vr11,    vr1,     vr9
752*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6  //tldiff
753*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr11,    vr3,     vr11 //tldiff
754*c0909341SAndroid Build Coastguard Worker
755*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
756*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
757*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
758*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
759*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
760*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
761*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
762*c0909341SAndroid Build Coastguard Worker
763*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr5,     vr11
764*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr9,    vr12
765*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr12,    vr10,    vr5
766*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr10,    vr11
767*c0909341SAndroid Build Coastguard Worker    vand.v         vr12,    vr12,    vr8
768*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr12,    vr7,     vr1,    vr12
769*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
770*c0909341SAndroid Build Coastguard Worker
771*c0909341SAndroid Build Coastguard Worker    vpermi.w       vr12,    vr3,     0x44
772*c0909341SAndroid Build Coastguard Worker
773*c0909341SAndroid Build Coastguard Worker    vst            vr12,    a0,      0
774*c0909341SAndroid Build Coastguard Worker
775*c0909341SAndroid Build Coastguard Worker    b              .IPRED_PAETH_W_LOOPEND
776*c0909341SAndroid Build Coastguard Worker
777*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOP8:
778*c0909341SAndroid Build Coastguard Worker    andi           a5,      a3,      8
779*c0909341SAndroid Build Coastguard Worker    beqz           a5,      .IPRED_PAETH_W_LOOP4
780*c0909341SAndroid Build Coastguard Worker
781*c0909341SAndroid Build Coastguard Worker    fld.d          f2,      a7,      0   //top
782*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
783*c0909341SAndroid Build Coastguard Worker
784*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
785*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
786*c0909341SAndroid Build Coastguard Worker
787*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
788*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
789*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6 //tldiff
790*c0909341SAndroid Build Coastguard Worker
791*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
792*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
793*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
794*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
795*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
796*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
797*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
798*c0909341SAndroid Build Coastguard Worker    fst.d          f3,      a0,      0
799*c0909341SAndroid Build Coastguard Worker
800*c0909341SAndroid Build Coastguard Worker    b              .IPRED_PAETH_W_LOOPEND
801*c0909341SAndroid Build Coastguard Worker
802*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOP4:
803*c0909341SAndroid Build Coastguard Worker    andi           a5,      a3,      4
804*c0909341SAndroid Build Coastguard Worker    beqz           a5,      .IPRED_PAETH_W_LOOPEND
805*c0909341SAndroid Build Coastguard Worker
806*c0909341SAndroid Build Coastguard Worker    fld.s          f2,      a7,      0   //top
807*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
808*c0909341SAndroid Build Coastguard Worker
809*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr5,     vr0,     vr1  //tdiff
810*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr4,     vr0,     vr2  //ldiff
811*c0909341SAndroid Build Coastguard Worker
812*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr0,     vr0
813*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr1,     vr2
814*c0909341SAndroid Build Coastguard Worker    vabsd.hu       vr6,     vr3,     vr6 //tldiff
815*c0909341SAndroid Build Coastguard Worker
816*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr5,     vr6
817*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr7,     vr0,     vr2,    vr3
818*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr3,     vr4,     vr5
819*c0909341SAndroid Build Coastguard Worker    vsle.hu        vr8,     vr4,     vr6
820*c0909341SAndroid Build Coastguard Worker    vand.v         vr3,     vr3,     vr8
821*c0909341SAndroid Build Coastguard Worker    vbitsel.v      vr3,     vr7,     vr1,    vr3
822*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
823*c0909341SAndroid Build Coastguard Worker    fst.s          f3,      a0,      0
824*c0909341SAndroid Build Coastguard Worker
825*c0909341SAndroid Build Coastguard Worker    b              .IPRED_PAETH_W_LOOPEND
826*c0909341SAndroid Build Coastguard Worker
827*c0909341SAndroid Build Coastguard Worker.IPRED_PAETH_W_LOOPEND:
828*c0909341SAndroid Build Coastguard Worker    add.d         a0,       a0,      a1
829*c0909341SAndroid Build Coastguard Worker    addi.d        a4,       a4,      -1
830*c0909341SAndroid Build Coastguard Worker    bnez          a4,       .IPRED_PAETH_H_LOOP
831*c0909341SAndroid Build Coastguard Workerendfunc
832*c0909341SAndroid Build Coastguard Worker
833*c0909341SAndroid Build Coastguard Workerconst dav1d_sm_weights
834*c0909341SAndroid Build Coastguard Worker    .byte  0,   0
835*c0909341SAndroid Build Coastguard Worker    // bs = 2
836*c0909341SAndroid Build Coastguard Worker    .byte  255, 128
837*c0909341SAndroid Build Coastguard Worker    // bs = 4
838*c0909341SAndroid Build Coastguard Worker    .byte  255, 149,  85,  64
839*c0909341SAndroid Build Coastguard Worker    // bs = 8
840*c0909341SAndroid Build Coastguard Worker    .byte  255, 197, 146, 105,  73,  50,  37,  32
841*c0909341SAndroid Build Coastguard Worker    // bs = 16
842*c0909341SAndroid Build Coastguard Worker    .byte  255, 225, 196, 170, 145, 123, 102,  84
843*c0909341SAndroid Build Coastguard Worker    .byte  68,  54,  43,  33,  26,  20,  17,  16
844*c0909341SAndroid Build Coastguard Worker    // bs = 32
845*c0909341SAndroid Build Coastguard Worker    .byte  255, 240, 225, 210, 196, 182, 169, 157
846*c0909341SAndroid Build Coastguard Worker    .byte  145, 133, 122, 111, 101,  92,  83,  74
847*c0909341SAndroid Build Coastguard Worker    .byte  66,  59,  52,  45,  39,  34,  29,  25
848*c0909341SAndroid Build Coastguard Worker    .byte  21,  17,  14,  12,  10,   9,   8,   8
849*c0909341SAndroid Build Coastguard Worker    // bs = 64
850*c0909341SAndroid Build Coastguard Worker    .byte  255, 248, 240, 233, 225, 218, 210, 203
851*c0909341SAndroid Build Coastguard Worker    .byte  196, 189, 182, 176, 169, 163, 156, 150
852*c0909341SAndroid Build Coastguard Worker    .byte  144, 138, 133, 127, 121, 116, 111, 106
853*c0909341SAndroid Build Coastguard Worker    .byte  101,  96,  91,  86,  82,  77,  73,  69
854*c0909341SAndroid Build Coastguard Worker    .byte  65,  61,  57,  54,  50,  47,  44,  41
855*c0909341SAndroid Build Coastguard Worker    .byte  38,  35,  32,  29,  27,  25,  22,  20
856*c0909341SAndroid Build Coastguard Worker    .byte  18,  16,  15,  13,  12,  10,   9,   8
857*c0909341SAndroid Build Coastguard Worker    .byte  7,   6,   6,   5,   5,   4,   4,   4
858*c0909341SAndroid Build Coastguard Workerendconst
859*c0909341SAndroid Build Coastguard Worker
860*c0909341SAndroid Build Coastguard Worker// void ipred_smooth_lsx(pixel *dst, const ptrdiff_t stride,
861*c0909341SAndroid Build Coastguard Worker//                       const pixel *const topleft,
862*c0909341SAndroid Build Coastguard Worker//                       const int width, const int height, const int a,
863*c0909341SAndroid Build Coastguard Worker//                       const int max_width, const int max_height
864*c0909341SAndroid Build Coastguard Worker//                       HIGHBD_DECL_SUFFIX)
865*c0909341SAndroid Build Coastguard Workerfunction ipred_smooth_8bpc_lsx
866*c0909341SAndroid Build Coastguard Worker    la.local       a5,      dav1d_sm_weights
867*c0909341SAndroid Build Coastguard Worker    add.d          a6,      a5,      a3  //hor
868*c0909341SAndroid Build Coastguard Worker    add.d          a5,      a5,      a4  //ver
869*c0909341SAndroid Build Coastguard Worker
870*c0909341SAndroid Build Coastguard Worker    add.d          a7,      a2,      a3
871*c0909341SAndroid Build Coastguard Worker    sub.d          t0,      a2,      a4
872*c0909341SAndroid Build Coastguard Worker
873*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     a7,      0  //right
874*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr1,     t0,      0  //bottom
875*c0909341SAndroid Build Coastguard Worker
876*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
877*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr0,     vr0,     0
878*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr1,     vr1,     0
879*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr1,     vr1,     0
880*c0909341SAndroid Build Coastguard Worker
881*c0909341SAndroid Build Coastguard Worker    li.w           t0,      256
882*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.w   vr6,     t0
883*c0909341SAndroid Build Coastguard Worker
884*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a2,      1   //ptr topleft[x]
885*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a2,      -1  //ptr topleft[y]
886*c0909341SAndroid Build Coastguard Worker
887*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_H_LOOP:
888*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr2,     a5,      0  //ver[y]
889*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr3,     t3,      0  //topleft[y]
890*c0909341SAndroid Build Coastguard Worker
891*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
892*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr2,     vr2,     0
893*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
894*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr3,     vr3,     0
895*c0909341SAndroid Build Coastguard Worker
896*c0909341SAndroid Build Coastguard Worker    vsub.w         vr7,     vr6,     vr2  //256-ver[y]
897*c0909341SAndroid Build Coastguard Worker
898*c0909341SAndroid Build Coastguard Worker    or             t1,      zero,    zero  //xx
899*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      a3,      2     //loop max
900*c0909341SAndroid Build Coastguard Worker
901*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_W_LOOP:
902*c0909341SAndroid Build Coastguard Worker    fldx.s         f4,      t0,      t1   //topleft[x]
903*c0909341SAndroid Build Coastguard Worker    fldx.s         f5,      a6,      t1   //hor[x]
904*c0909341SAndroid Build Coastguard Worker
905*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr4,     vr4,     0
906*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr4,     vr4,     0
907*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
908*c0909341SAndroid Build Coastguard Worker    vsllwil.wu.hu  vr5,     vr5,     0
909*c0909341SAndroid Build Coastguard Worker
910*c0909341SAndroid Build Coastguard Worker    vsub.w         vr8,     vr6,     vr5  //256-hor[x]
911*c0909341SAndroid Build Coastguard Worker
912*c0909341SAndroid Build Coastguard Worker    vmul.w         vr9,     vr8,     vr0
913*c0909341SAndroid Build Coastguard Worker    vmadd.w        vr9,     vr5,     vr3
914*c0909341SAndroid Build Coastguard Worker    vmadd.w        vr9,     vr7,     vr1
915*c0909341SAndroid Build Coastguard Worker    vmadd.w        vr9,     vr2,     vr4  //pred
916*c0909341SAndroid Build Coastguard Worker
917*c0909341SAndroid Build Coastguard Worker    vadd.w         vr9,     vr9,     vr6
918*c0909341SAndroid Build Coastguard Worker    vsrlni.h.w     vr9,     vr9,     9
919*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr9,     vr9,     0
920*c0909341SAndroid Build Coastguard Worker
921*c0909341SAndroid Build Coastguard Worker    fstx.s         f9,      a0,      t1
922*c0909341SAndroid Build Coastguard Worker
923*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      4
924*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
925*c0909341SAndroid Build Coastguard Worker    bnez           t2,      .IPRED_SMOOTH_W_LOOP
926*c0909341SAndroid Build Coastguard Worker
927*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_W_LOOP_END:
928*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -1
929*c0909341SAndroid Build Coastguard Worker    addi.d         a5,      a5,      1
930*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
931*c0909341SAndroid Build Coastguard Worker    addi.d         a4,      a4,      -1
932*c0909341SAndroid Build Coastguard Worker    bnez           a4,      .IPRED_SMOOTH_H_LOOP
933*c0909341SAndroid Build Coastguard Worker
934*c0909341SAndroid Build Coastguard Workerendfunc
935*c0909341SAndroid Build Coastguard Worker
936*c0909341SAndroid Build Coastguard Worker// void ipred_smooth_v_lsx(pixel *dst, const ptrdiff_t stride,
937*c0909341SAndroid Build Coastguard Worker//                         const pixel *const topleft,
938*c0909341SAndroid Build Coastguard Worker//                         const int width, const int height, const int a,
939*c0909341SAndroid Build Coastguard Worker//                         const int max_width, const int max_height
940*c0909341SAndroid Build Coastguard Worker//                         HIGHBD_DECL_SUFFIX)
941*c0909341SAndroid Build Coastguard Workerfunction ipred_smooth_v_8bpc_lsx
942*c0909341SAndroid Build Coastguard Worker    la.local       a5,      dav1d_sm_weights
943*c0909341SAndroid Build Coastguard Worker    add.d          a5,      a5,      a4  //ver
944*c0909341SAndroid Build Coastguard Worker
945*c0909341SAndroid Build Coastguard Worker    sub.d          t0,      a2,      a4
946*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     t0,      0  //bottom
947*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
948*c0909341SAndroid Build Coastguard Worker
949*c0909341SAndroid Build Coastguard Worker    li.w           t0,      256
950*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr2,     t0
951*c0909341SAndroid Build Coastguard Worker    li.w           t0,      128
952*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr3,     t0
953*c0909341SAndroid Build Coastguard Worker
954*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a2,      1   //ptr topleft[x]
955*c0909341SAndroid Build Coastguard Worker
956*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_V_H_LOOP:
957*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr1,     a5,      0  //ver[y]
958*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr1,     vr1,     0
959*c0909341SAndroid Build Coastguard Worker    vsub.h         vr5,     vr2,     vr1  //256-ver[y]
960*c0909341SAndroid Build Coastguard Worker
961*c0909341SAndroid Build Coastguard Worker    or             t1,      zero,    zero  //xx
962*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      a3,      3     //loop max
963*c0909341SAndroid Build Coastguard Worker    beqz           t2,      .IPRED_SMOOTH_V_W_LOOP4
964*c0909341SAndroid Build Coastguard Worker
965*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_V_W_LOOP8:
966*c0909341SAndroid Build Coastguard Worker    fldx.d         f4,      t0,      t1   //topleft[x]
967*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr4,     vr4,     0
968*c0909341SAndroid Build Coastguard Worker
969*c0909341SAndroid Build Coastguard Worker    vmul.h         vr6,     vr5,     vr0
970*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr6,     vr1,     vr4  //pred
971*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr6,     vr3
972*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr6,     vr6,     8
973*c0909341SAndroid Build Coastguard Worker
974*c0909341SAndroid Build Coastguard Worker    fstx.d         f6,      a0,      t1
975*c0909341SAndroid Build Coastguard Worker
976*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      8
977*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
978*c0909341SAndroid Build Coastguard Worker    bnez           t2,      .IPRED_SMOOTH_V_W_LOOP8
979*c0909341SAndroid Build Coastguard Worker    b              .IPRED_SMOOTH_V_W_LOOP_END
980*c0909341SAndroid Build Coastguard Worker
981*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_V_W_LOOP4:
982*c0909341SAndroid Build Coastguard Worker    fldx.s         f4,      t0,      t1   //topleft[x]
983*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr4,     vr4,     0
984*c0909341SAndroid Build Coastguard Worker
985*c0909341SAndroid Build Coastguard Worker    vmul.h         vr6,     vr5,     vr0
986*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr6,     vr1,     vr4  //pred
987*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr6,     vr3
988*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr6,     vr6,     8
989*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr6,     vr6,     0
990*c0909341SAndroid Build Coastguard Worker
991*c0909341SAndroid Build Coastguard Worker    fstx.s         f6,      a0,      t1
992*c0909341SAndroid Build Coastguard Worker
993*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      4
994*c0909341SAndroid Build Coastguard Worker
995*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_V_W_LOOP_END:
996*c0909341SAndroid Build Coastguard Worker    addi.d         a5,      a5,      1
997*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
998*c0909341SAndroid Build Coastguard Worker    addi.d         a4,      a4,      -1
999*c0909341SAndroid Build Coastguard Worker    bnez           a4,      .IPRED_SMOOTH_V_H_LOOP
1000*c0909341SAndroid Build Coastguard Worker
1001*c0909341SAndroid Build Coastguard Workerendfunc
1002*c0909341SAndroid Build Coastguard Worker
1003*c0909341SAndroid Build Coastguard Worker// void ipred_smooth_h_lsx(pixel *dst, const ptrdiff_t stride,
1004*c0909341SAndroid Build Coastguard Worker//                         const pixel *const topleft,
1005*c0909341SAndroid Build Coastguard Worker//                         const int width, const int height, const int a,
1006*c0909341SAndroid Build Coastguard Worker//                         const int max_width, const int max_height
1007*c0909341SAndroid Build Coastguard Worker//                         HIGHBD_DECL_SUFFIX)
1008*c0909341SAndroid Build Coastguard Workerfunction ipred_smooth_h_8bpc_lsx
1009*c0909341SAndroid Build Coastguard Worker    la.local       a5,      dav1d_sm_weights
1010*c0909341SAndroid Build Coastguard Worker    add.d          a6,      a5,      a3  //hor
1011*c0909341SAndroid Build Coastguard Worker
1012*c0909341SAndroid Build Coastguard Worker    add.d          a7,      a2,      a3
1013*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     a7,      0  //right
1014*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
1015*c0909341SAndroid Build Coastguard Worker
1016*c0909341SAndroid Build Coastguard Worker    li.w           t0,      256
1017*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr1,     t0
1018*c0909341SAndroid Build Coastguard Worker    li.w           t0,      128
1019*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr2,     t0
1020*c0909341SAndroid Build Coastguard Worker
1021*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a2,      -1  //ptr topleft[y]
1022*c0909341SAndroid Build Coastguard Worker
1023*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_H_H_LOOP:
1024*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr3,     t3,      0  //topleft[y]
1025*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
1026*c0909341SAndroid Build Coastguard Worker
1027*c0909341SAndroid Build Coastguard Worker    or             t1,      zero,    zero  //xx
1028*c0909341SAndroid Build Coastguard Worker    srai.d         t2,      a3,      3     //loop max
1029*c0909341SAndroid Build Coastguard Worker    beqz           t2,      .IPRED_SMOOTH_H_W_LOOP4
1030*c0909341SAndroid Build Coastguard Worker
1031*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_H_W_LOOP8:
1032*c0909341SAndroid Build Coastguard Worker    fldx.d         f5,      a6,      t1   //hor[x]
1033*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
1034*c0909341SAndroid Build Coastguard Worker    vsub.h         vr4,     vr1,     vr5  //256-hor[x]
1035*c0909341SAndroid Build Coastguard Worker
1036*c0909341SAndroid Build Coastguard Worker    vmul.h         vr6,     vr4,     vr0
1037*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr6,     vr5,     vr3  //pred
1038*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr6,     vr2
1039*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr6,     vr6,     8
1040*c0909341SAndroid Build Coastguard Worker
1041*c0909341SAndroid Build Coastguard Worker    fstx.d         f6,      a0,      t1
1042*c0909341SAndroid Build Coastguard Worker
1043*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      8
1044*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      -1
1045*c0909341SAndroid Build Coastguard Worker    bnez           t2,      .IPRED_SMOOTH_H_W_LOOP8
1046*c0909341SAndroid Build Coastguard Worker    b              .IPRED_SMOOTH_W_H_LOOP_END
1047*c0909341SAndroid Build Coastguard Worker
1048*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_H_W_LOOP4:
1049*c0909341SAndroid Build Coastguard Worker    fldx.s         f5,      a6,      t1   //hor[x]
1050*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
1051*c0909341SAndroid Build Coastguard Worker    vsub.h         vr4,     vr1,     vr5  //256-hor[x]
1052*c0909341SAndroid Build Coastguard Worker
1053*c0909341SAndroid Build Coastguard Worker    vmul.h         vr6,     vr4,     vr0
1054*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr6,     vr5,     vr3  //pred
1055*c0909341SAndroid Build Coastguard Worker    vadd.h         vr6,     vr6,     vr2
1056*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr6,     vr6,     8
1057*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr6,     vr6,     0
1058*c0909341SAndroid Build Coastguard Worker
1059*c0909341SAndroid Build Coastguard Worker    fstx.s         f6,      a0,      t1
1060*c0909341SAndroid Build Coastguard Worker
1061*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      4
1062*c0909341SAndroid Build Coastguard Worker
1063*c0909341SAndroid Build Coastguard Worker.IPRED_SMOOTH_W_H_LOOP_END:
1064*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -1
1065*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1066*c0909341SAndroid Build Coastguard Worker    addi.d         a4,      a4,      -1
1067*c0909341SAndroid Build Coastguard Worker    bnez           a4,      .IPRED_SMOOTH_H_H_LOOP
1068*c0909341SAndroid Build Coastguard Worker
1069*c0909341SAndroid Build Coastguard Workerendfunc
1070*c0909341SAndroid Build Coastguard Worker
1071*c0909341SAndroid Build Coastguard Worker// void pal_pred_lsx(pixel *dst, const ptrdiff_t stride,
1072*c0909341SAndroid Build Coastguard Worker//                   const pixel *const pal, const uint8_t *idx,
1073*c0909341SAndroid Build Coastguard Worker//                   const int w, const int h)
1074*c0909341SAndroid Build Coastguard Workerfunction pal_pred_8bpc_lsx
1075*c0909341SAndroid Build Coastguard Worker    srai.d         a7,      a5,      2
1076*c0909341SAndroid Build Coastguard Worker
1077*c0909341SAndroid Build Coastguard Worker.PAL_PRED_WLOOP4:
1078*c0909341SAndroid Build Coastguard Worker    andi           a6,      a4,      4
1079*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .PAL_PRED_WLOOP8
1080*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      a3,      0
1081*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr1,     vr0,     4
1082*c0909341SAndroid Build Coastguard Worker    vandi.b        vr2,     vr0,     7
1083*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr0,     vr1,     vr2
1084*c0909341SAndroid Build Coastguard Worker    fld.d          f1,      a2,      0
1085*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr2,     vr1,     vr1,    vr0
1086*c0909341SAndroid Build Coastguard Worker
1087*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr2,     a0,      0,      0
1088*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1089*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr2,     a0,      0,      1
1090*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1091*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr2,     a0,      0,      2
1092*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1093*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr2,     a0,      0,      3
1094*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1095*c0909341SAndroid Build Coastguard Worker
1096*c0909341SAndroid Build Coastguard Worker    addi.d         a3,      a3,      8
1097*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      -1
1098*c0909341SAndroid Build Coastguard Worker    bnez           a7,      .PAL_PRED_WLOOP4
1099*c0909341SAndroid Build Coastguard Worker    b              .PAL_PRED_END
1100*c0909341SAndroid Build Coastguard Worker
1101*c0909341SAndroid Build Coastguard Worker.PAL_PRED_WLOOP8:
1102*c0909341SAndroid Build Coastguard Worker    andi           a6,      a4,      8
1103*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .PAL_PRED_WLOOP16
1104*c0909341SAndroid Build Coastguard Worker
1105*c0909341SAndroid Build Coastguard Worker    vld            vr0,     a3,      0
1106*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr1,     vr0,     4
1107*c0909341SAndroid Build Coastguard Worker    vandi.b        vr2,     vr0,     7
1108*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr0,     vr1,     vr2
1109*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr3,     vr1,     vr2
1110*c0909341SAndroid Build Coastguard Worker    fld.d          f1,      a2,      0
1111*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr0,     vr1,     vr1,    vr0
1112*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr3,     vr1,     vr1,    vr3
1113*c0909341SAndroid Build Coastguard Worker
1114*c0909341SAndroid Build Coastguard Worker    vstelm.d       vr0,     a0,      0,      0
1115*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1116*c0909341SAndroid Build Coastguard Worker    vstelm.d       vr0,     a0,      0,      1
1117*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1118*c0909341SAndroid Build Coastguard Worker
1119*c0909341SAndroid Build Coastguard Worker    vstelm.d       vr3,     a0,      0,      0
1120*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1121*c0909341SAndroid Build Coastguard Worker    vstelm.d       vr3,     a0,      0,      1
1122*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1123*c0909341SAndroid Build Coastguard Worker
1124*c0909341SAndroid Build Coastguard Worker    addi.d         a3,      a3,      16
1125*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      -1
1126*c0909341SAndroid Build Coastguard Worker    bnez           a7,      .PAL_PRED_WLOOP8
1127*c0909341SAndroid Build Coastguard Worker    b              .PAL_PRED_END
1128*c0909341SAndroid Build Coastguard Worker
1129*c0909341SAndroid Build Coastguard Worker.PAL_PRED_WLOOP16:
1130*c0909341SAndroid Build Coastguard Worker    andi           a6,      a4,      16
1131*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .PAL_PRED_WLOOP32
1132*c0909341SAndroid Build Coastguard Worker
1133*c0909341SAndroid Build Coastguard Worker    vld            vr0,     a3,      0
1134*c0909341SAndroid Build Coastguard Worker    vld            vr1,     a3,      16
1135*c0909341SAndroid Build Coastguard Worker    fld.d          f6,      a2,      0
1136*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr2,     vr0,     4
1137*c0909341SAndroid Build Coastguard Worker    vandi.b        vr3,     vr0,     7
1138*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr4,     vr1,     4
1139*c0909341SAndroid Build Coastguard Worker    vandi.b        vr5,     vr1,     7
1140*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr0,     vr2,     vr3
1141*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr1,     vr2,     vr3
1142*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr2,     vr4,     vr5
1143*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr3,     vr4,     vr5
1144*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr0,     vr6,     vr6,    vr0
1145*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr1,     vr6,     vr6,    vr1
1146*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr2,     vr6,     vr6,    vr2
1147*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr3,     vr6,     vr6,    vr3
1148*c0909341SAndroid Build Coastguard Worker
1149*c0909341SAndroid Build Coastguard Worker    vst            vr0,     a0,      0
1150*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1151*c0909341SAndroid Build Coastguard Worker    vst            vr1,     a0,      0
1152*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1153*c0909341SAndroid Build Coastguard Worker    vst            vr2,     a0,      0
1154*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1155*c0909341SAndroid Build Coastguard Worker    vst            vr3,     a0,      0
1156*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1157*c0909341SAndroid Build Coastguard Worker
1158*c0909341SAndroid Build Coastguard Worker    addi.d         a3,      a3,      32
1159*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      -1
1160*c0909341SAndroid Build Coastguard Worker    bnez           a7,      .PAL_PRED_WLOOP16
1161*c0909341SAndroid Build Coastguard Worker    b              .PAL_PRED_END
1162*c0909341SAndroid Build Coastguard Worker
1163*c0909341SAndroid Build Coastguard Worker.PAL_PRED_WLOOP32:
1164*c0909341SAndroid Build Coastguard Worker    andi           a6,      a4,      32
1165*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .PAL_PRED_WLOOP64
1166*c0909341SAndroid Build Coastguard Worker
1167*c0909341SAndroid Build Coastguard Worker    vld            vr0,     a3,      0
1168*c0909341SAndroid Build Coastguard Worker    vld            vr1,     a3,      16
1169*c0909341SAndroid Build Coastguard Worker    vld            vr2,     a3,      32
1170*c0909341SAndroid Build Coastguard Worker    vld            vr3,     a3,      48
1171*c0909341SAndroid Build Coastguard Worker    fld.d          f4,      a2,      0
1172*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr5,     vr0,     4
1173*c0909341SAndroid Build Coastguard Worker    vandi.b        vr6,     vr0,     7
1174*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr7,     vr1,     4
1175*c0909341SAndroid Build Coastguard Worker    vandi.b        vr8,     vr1,     7
1176*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr9,     vr2,     4
1177*c0909341SAndroid Build Coastguard Worker    vandi.b        vr10,    vr2,     7
1178*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr11,    vr3,     4
1179*c0909341SAndroid Build Coastguard Worker    vandi.b        vr12,    vr3,     7
1180*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr0,     vr5,     vr6
1181*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr1,     vr5,     vr6
1182*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr2,     vr7,     vr8
1183*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr3,     vr7,     vr8
1184*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr5,     vr9,     vr10
1185*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr6,     vr9,     vr10
1186*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr7,     vr11,    vr12
1187*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr8,     vr11,    vr12
1188*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr0,     vr4,     vr4,    vr0
1189*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr1,     vr4,     vr4,    vr1
1190*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr2,     vr4,     vr4,    vr2
1191*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr3,     vr4,     vr4,    vr3
1192*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr5,     vr4,     vr4,    vr5
1193*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr6,     vr4,     vr4,    vr6
1194*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr7,     vr4,     vr4,    vr7
1195*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr8,     vr4,     vr4,    vr8
1196*c0909341SAndroid Build Coastguard Worker
1197*c0909341SAndroid Build Coastguard Worker    vst            vr0,     a0,      0
1198*c0909341SAndroid Build Coastguard Worker    vst            vr1,     a0,      16
1199*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1200*c0909341SAndroid Build Coastguard Worker    vst            vr2,     a0,      0
1201*c0909341SAndroid Build Coastguard Worker    vst            vr3,     a0,      16
1202*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1203*c0909341SAndroid Build Coastguard Worker    vst            vr5,     a0,      0
1204*c0909341SAndroid Build Coastguard Worker    vst            vr6,     a0,      16
1205*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1206*c0909341SAndroid Build Coastguard Worker    vst            vr7,     a0,      0
1207*c0909341SAndroid Build Coastguard Worker    vst            vr8,     a0,      16
1208*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1209*c0909341SAndroid Build Coastguard Worker
1210*c0909341SAndroid Build Coastguard Worker    addi.d         a3,      a3,      64
1211*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      -1
1212*c0909341SAndroid Build Coastguard Worker    bnez           a7,      .PAL_PRED_WLOOP32
1213*c0909341SAndroid Build Coastguard Worker    b              .PAL_PRED_END
1214*c0909341SAndroid Build Coastguard Worker
1215*c0909341SAndroid Build Coastguard Worker.PAL_PRED_WLOOP64:
1216*c0909341SAndroid Build Coastguard Worker    vld            vr0,     a3,      0
1217*c0909341SAndroid Build Coastguard Worker    vld            vr1,     a3,      16
1218*c0909341SAndroid Build Coastguard Worker    fld.d          f2,      a2,      0
1219*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr3,     vr0,     4
1220*c0909341SAndroid Build Coastguard Worker    vandi.b        vr4,     vr0,     7
1221*c0909341SAndroid Build Coastguard Worker    vsrli.b        vr5,     vr1,     4
1222*c0909341SAndroid Build Coastguard Worker    vandi.b        vr6,     vr1,     7
1223*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr0,     vr3,     vr4
1224*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr1,     vr3,     vr4
1225*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr3,     vr5,     vr6
1226*c0909341SAndroid Build Coastguard Worker    vilvh.b        vr4,     vr5,     vr6
1227*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr0,     vr2,     vr2,    vr0
1228*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr1,     vr2,     vr2,    vr1
1229*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr3,     vr2,     vr2,    vr3
1230*c0909341SAndroid Build Coastguard Worker    vshuf.b        vr4,     vr2,     vr2,    vr4
1231*c0909341SAndroid Build Coastguard Worker
1232*c0909341SAndroid Build Coastguard Worker    vst            vr0,     a0,      0
1233*c0909341SAndroid Build Coastguard Worker    vst            vr1,     a0,      16
1234*c0909341SAndroid Build Coastguard Worker    vst            vr3,     a0,      32
1235*c0909341SAndroid Build Coastguard Worker    vst            vr4,     a0,      48
1236*c0909341SAndroid Build Coastguard Worker
1237*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
1238*c0909341SAndroid Build Coastguard Worker    addi.d         a3,      a3,      32
1239*c0909341SAndroid Build Coastguard Worker    addi.d         a5,      a5,      -1
1240*c0909341SAndroid Build Coastguard Worker    bnez           a5,      .PAL_PRED_WLOOP64
1241*c0909341SAndroid Build Coastguard Worker
1242*c0909341SAndroid Build Coastguard Worker.PAL_PRED_END:
1243*c0909341SAndroid Build Coastguard Workerendfunc
1244*c0909341SAndroid Build Coastguard Worker
1245*c0909341SAndroid Build Coastguard Worker.macro apply_sign_vrh v, s, vrzero, vrt0 ,out
1246*c0909341SAndroid Build Coastguard Worker    vslt.h         \vrt0,   \s,      \vrzero
1247*c0909341SAndroid Build Coastguard Worker    vandn.v        \s,      \vrt0,   \v
1248*c0909341SAndroid Build Coastguard Worker    vsigncov.h     \v,      \vrt0,   \v
1249*c0909341SAndroid Build Coastguard Worker    vor.v          \out,    \s,      \v
1250*c0909341SAndroid Build Coastguard Worker.endm
1251*c0909341SAndroid Build Coastguard Worker
1252*c0909341SAndroid Build Coastguard Worker.macro iclip_pixel_vrh in0, in1, in2, tmp0, tmp1, out
1253*c0909341SAndroid Build Coastguard Worker    vmin.h         \tmp0,   \in2,    \in0
1254*c0909341SAndroid Build Coastguard Worker    vslt.h         \in0,    \in0,    \in1
1255*c0909341SAndroid Build Coastguard Worker    vand.v         \tmp1,   \in0,    \in1
1256*c0909341SAndroid Build Coastguard Worker    vandn.v        \tmp0,   \in0,    \tmp0
1257*c0909341SAndroid Build Coastguard Worker    vor.v          \out,    \tmp1,   \tmp0
1258*c0909341SAndroid Build Coastguard Worker.endm
1259*c0909341SAndroid Build Coastguard Worker
1260*c0909341SAndroid Build Coastguard Worker.macro ipred_cfl_pred dst, stride, w, h, dc, ac, alpha
1261*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr2,     \alpha
1262*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr7,     \dc
1263*c0909341SAndroid Build Coastguard Worker    li.w           t1,      32
1264*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr3,     t1
1265*c0909341SAndroid Build Coastguard Worker    vxor.v         vr4,     vr4,     vr4
1266*c0909341SAndroid Build Coastguard Worker    li.w           t1,      255
1267*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr6,     t1
1268*c0909341SAndroid Build Coastguard Worker    add.d          t4,      \w,      \w
1269*c0909341SAndroid Build Coastguard Worker
1270*c0909341SAndroid Build Coastguard Worker1:
1271*c0909341SAndroid Build Coastguard Worker    or             t1,      zero,    zero
1272*c0909341SAndroid Build Coastguard Worker    or             t2,      zero,    zero
1273*c0909341SAndroid Build Coastguard Worker    srai.d         t3,      \w,      3
1274*c0909341SAndroid Build Coastguard Worker    beqz           t3,      3f
1275*c0909341SAndroid Build Coastguard Worker
1276*c0909341SAndroid Build Coastguard Worker2:
1277*c0909341SAndroid Build Coastguard Worker    vldx           vr0,     \ac,     t1
1278*c0909341SAndroid Build Coastguard Worker    vmul.h         vr1,     vr2,     vr0
1279*c0909341SAndroid Build Coastguard Worker    vadda.h        vr0,     vr1,     vr3
1280*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr0,     vr0,     6
1281*c0909341SAndroid Build Coastguard Worker    apply_sign_vrh vr0, vr1, vr4, vr5, vr0
1282*c0909341SAndroid Build Coastguard Worker    vadd.h         vr1,     vr0,     vr7
1283*c0909341SAndroid Build Coastguard Worker    iclip_pixel_vrh vr1, vr4, vr6, vr5, vr8, vr0
1284*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr0,     vr0,     0
1285*c0909341SAndroid Build Coastguard Worker    fstx.d         f0,      \dst,    t2
1286*c0909341SAndroid Build Coastguard Worker
1287*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t1,      16
1288*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      8
1289*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t3,      -1
1290*c0909341SAndroid Build Coastguard Worker    bnez           t3,      2b
1291*c0909341SAndroid Build Coastguard Worker    b              4f
1292*c0909341SAndroid Build Coastguard Worker
1293*c0909341SAndroid Build Coastguard Worker3:
1294*c0909341SAndroid Build Coastguard Worker    fld.d          f0,      \ac,     0
1295*c0909341SAndroid Build Coastguard Worker    vmul.h         vr1,     vr2,     vr0
1296*c0909341SAndroid Build Coastguard Worker    vadda.h        vr0,     vr1,     vr3
1297*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr0,     vr0,     6
1298*c0909341SAndroid Build Coastguard Worker    apply_sign_vrh vr0, vr1, vr4, vr5, vr0
1299*c0909341SAndroid Build Coastguard Worker    vadd.h         vr1,     vr0,     vr7
1300*c0909341SAndroid Build Coastguard Worker    iclip_pixel_vrh vr1, vr4, vr6, vr5, vr8, vr0
1301*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr0,     vr0,     0
1302*c0909341SAndroid Build Coastguard Worker    fst.s          f0,      \dst,    0
1303*c0909341SAndroid Build Coastguard Worker
1304*c0909341SAndroid Build Coastguard Worker4:
1305*c0909341SAndroid Build Coastguard Worker    add.d          \ac,     \ac,     t4
1306*c0909341SAndroid Build Coastguard Worker    add.d          \dst,    \dst,    \stride
1307*c0909341SAndroid Build Coastguard Worker    addi.d         \h,      \h,      -1
1308*c0909341SAndroid Build Coastguard Worker    bnez           \h,      1b
1309*c0909341SAndroid Build Coastguard Worker.endm
1310*c0909341SAndroid Build Coastguard Worker
1311*c0909341SAndroid Build Coastguard Workerfunction ipred_cfl_8bpc_lsx
1312*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen   a2, a3, a4
1313*c0909341SAndroid Build Coastguard Worker    ipred_cfl_pred a0, a1, a3, a4, t0, a5, a6
1314*c0909341SAndroid Build Coastguard Workerendfunc
1315*c0909341SAndroid Build Coastguard Worker
1316*c0909341SAndroid Build Coastguard Workerfunction ipred_cfl_top_8bpc_lsx
1317*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen_top   a2, a3
1318*c0909341SAndroid Build Coastguard Worker    ipred_cfl_pred a0, a1, a3, a4, t0, a5, a6
1319*c0909341SAndroid Build Coastguard Workerendfunc
1320*c0909341SAndroid Build Coastguard Worker
1321*c0909341SAndroid Build Coastguard Workerfunction ipred_cfl_left_8bpc_lsx
1322*c0909341SAndroid Build Coastguard Worker    ipred_dc_gen_left   a2, a4
1323*c0909341SAndroid Build Coastguard Worker    ipred_cfl_pred a0, a1, a3, a4, t0, a5, a6
1324*c0909341SAndroid Build Coastguard Workerendfunc
1325*c0909341SAndroid Build Coastguard Worker
1326*c0909341SAndroid Build Coastguard Workerfunction ipred_cfl_128_8bpc_lsx
1327*c0909341SAndroid Build Coastguard Worker    li.w           t0,      128
1328*c0909341SAndroid Build Coastguard Worker    ipred_cfl_pred a0, a1, a3, a4, t0, a5, a6
1329*c0909341SAndroid Build Coastguard Workerendfunc
1330*c0909341SAndroid Build Coastguard Worker
1331*c0909341SAndroid Build Coastguard Workerconst dav1d_filter_intra_taps_lsx
1332*c0909341SAndroid Build Coastguard Worker    //arr0  8*7
1333*c0909341SAndroid Build Coastguard Worker.byte    -6, -5, -3, -3, -4, -3, -3, -3
1334*c0909341SAndroid Build Coastguard Worker.byte    10,  2,  1,  1,  6,  2,  2,  1
1335*c0909341SAndroid Build Coastguard Worker.byte    0, 10,  1,  1,  0,  6,  2,  2
1336*c0909341SAndroid Build Coastguard Worker.byte    0,  0, 10,  2,  0,  0,  6,  2
1337*c0909341SAndroid Build Coastguard Worker.byte    0,  0,  0, 10,  0,  0,  0,  6
1338*c0909341SAndroid Build Coastguard Worker.byte    12,  9,  7,  5,  2,  2,  2,  3
1339*c0909341SAndroid Build Coastguard Worker.byte    0,  0,  0,  0, 12,  9,  7,  5
1340*c0909341SAndroid Build Coastguard Worker    //arr1
1341*c0909341SAndroid Build Coastguard Worker.byte    -10,  -6,  -4,  -2, -10,  -6,  -4,  -2
1342*c0909341SAndroid Build Coastguard Worker.byte    16,   0,   0,   0,  16,   0,   0,   0
1343*c0909341SAndroid Build Coastguard Worker.byte    0,  16,   0,   0,   0,  16,   0,   0
1344*c0909341SAndroid Build Coastguard Worker.byte    0,   0,  16,   0,   0,   0,  16,   0
1345*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,  16,   0,   0,   0,  16
1346*c0909341SAndroid Build Coastguard Worker.byte    10,   6,   4,   2,   0,   0,   0,   0
1347*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   0,  10,   6,   4,   2
1348*c0909341SAndroid Build Coastguard Worker    //arr2
1349*c0909341SAndroid Build Coastguard Worker.byte    -8,  -8,  -8,  -8,  -4,  -4,  -4,  -4
1350*c0909341SAndroid Build Coastguard Worker.byte    8,   0,   0,   0,   4,   0,   0,   0
1351*c0909341SAndroid Build Coastguard Worker.byte    0,   8,   0,   0,   0,   4,   0,   0
1352*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   8,   0,   0,   0,   4,   0
1353*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   8,   0,   0,   0,   4
1354*c0909341SAndroid Build Coastguard Worker.byte    16,  16,  16,  16,   0,   0,   0,   0
1355*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   0,  16,  16,  16,  16
1356*c0909341SAndroid Build Coastguard Worker    //arr3
1357*c0909341SAndroid Build Coastguard Worker.byte    -2,  -1,  -1,   0,  -1,  -1,  -1,  -1
1358*c0909341SAndroid Build Coastguard Worker.byte    8,   3,   2,   1,   4,   3,   2,   2
1359*c0909341SAndroid Build Coastguard Worker.byte    0,   8,   3,   2,   0,   4,   3,   2
1360*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   8,   3,   0,   0,   4,   3
1361*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   8,   0,   0,   0,   4
1362*c0909341SAndroid Build Coastguard Worker.byte    10,   6,   4,   2,   3,   4,   4,   3
1363*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   0,  10,   6,   4,   3
1364*c0909341SAndroid Build Coastguard Worker    //arr4
1365*c0909341SAndroid Build Coastguard Worker.byte    -12, -10,  -9,  -8, -10,  -9,  -8,  -7
1366*c0909341SAndroid Build Coastguard Worker.byte    14,   0,   0,   0,  12,   1,   0,   0
1367*c0909341SAndroid Build Coastguard Worker.byte    0,  14,   0,   0,   0,  12,   0,   0
1368*c0909341SAndroid Build Coastguard Worker.byte    0,   0,  14,   0,   0,   0,  12,   1
1369*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,  14,   0,   0,   0,  12
1370*c0909341SAndroid Build Coastguard Worker.byte    14,  12,  11,  10,   0,   0,   1,   1
1371*c0909341SAndroid Build Coastguard Worker.byte    0,   0,   0,   0,  14,  12,  11,   9
1372*c0909341SAndroid Build Coastguard Workerendconst
1373*c0909341SAndroid Build Coastguard Worker
1374*c0909341SAndroid Build Coastguard Worker.macro ipred_filter_load_p
1375*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     t0,      0
1376*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr1,     a7,      0
1377*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr2,     a7,      1
1378*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr3,     a7,      2
1379*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr4,     a7,      3
1380*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr5,     t1,      0
1381*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr6,     t1,      -1
1382*c0909341SAndroid Build Coastguard Worker
1383*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
1384*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr1,     vr1,     0
1385*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
1386*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
1387*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr4,     vr4,     0
1388*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
1389*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
1390*c0909341SAndroid Build Coastguard Worker.endm
1391*c0909341SAndroid Build Coastguard Worker
1392*c0909341SAndroid Build Coastguard Worker.macro ipred_filter_loadx_p
1393*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr0,     t0,      0
1394*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr1,     a7,      0
1395*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr2,     a7,      1
1396*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr3,     a7,      2
1397*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr4,     a7,      3
1398*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr5,     t1,      0
1399*c0909341SAndroid Build Coastguard Worker    ldx.bu         t3,      t1,      a1
1400*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.b   vr6,     t3
1401*c0909341SAndroid Build Coastguard Worker
1402*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr0,     vr0,     0
1403*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr1,     vr1,     0
1404*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr2,     vr2,     0
1405*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
1406*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr4,     vr4,     0
1407*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
1408*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
1409*c0909341SAndroid Build Coastguard Worker.endm
1410*c0909341SAndroid Build Coastguard Worker
1411*c0909341SAndroid Build Coastguard Worker.macro ipred_filter_load_fltptr
1412*c0909341SAndroid Build Coastguard Worker    fld.d          f7,      a6,      0
1413*c0909341SAndroid Build Coastguard Worker    fld.d          f8,      a6,      8
1414*c0909341SAndroid Build Coastguard Worker    fld.d          f9,      a6,      16
1415*c0909341SAndroid Build Coastguard Worker    fld.d          f10,     a6,      24
1416*c0909341SAndroid Build Coastguard Worker    fld.d          f11,     a6,      32
1417*c0909341SAndroid Build Coastguard Worker    fld.d          f12,     a6,      40
1418*c0909341SAndroid Build Coastguard Worker    fld.d          f13,     a6,      48
1419*c0909341SAndroid Build Coastguard Worker
1420*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr7,     vr7,     0
1421*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr8,     vr8,     0
1422*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr9,     vr9,     0
1423*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr10,    vr10,    0
1424*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr11,    vr11,    0
1425*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr12,    vr12,    0
1426*c0909341SAndroid Build Coastguard Worker    vsllwil.h.b    vr13,    vr13,    0
1427*c0909341SAndroid Build Coastguard Worker.endm
1428*c0909341SAndroid Build Coastguard Worker
1429*c0909341SAndroid Build Coastguard Worker.macro ipred_filter_calc_acc
1430*c0909341SAndroid Build Coastguard Worker    vmul.h         vr7,     vr7,     vr0
1431*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr8,     vr1
1432*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr9,     vr2
1433*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr10,    vr3
1434*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr11,    vr4
1435*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr12,    vr5
1436*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr7,     vr13,    vr6
1437*c0909341SAndroid Build Coastguard Worker    vaddi.hu       vr7,     vr7,     8
1438*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr7,     vr7,     4
1439*c0909341SAndroid Build Coastguard Worker    iclip_pixel_vrh vr7, vr14, vr15, vr9, vr10, vr8
1440*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr8,     vr8,     0
1441*c0909341SAndroid Build Coastguard Worker.endm
1442*c0909341SAndroid Build Coastguard Worker
1443*c0909341SAndroid Build Coastguard Worker// void ipred_filter_lsx(pixel *dst, const ptrdiff_t stride,
1444*c0909341SAndroid Build Coastguard Worker//                       const pixel *const topleft_in,
1445*c0909341SAndroid Build Coastguard Worker//                       const int width, const int height, int filt_idx,
1446*c0909341SAndroid Build Coastguard Worker//                       const int max_width, const int max_height
1447*c0909341SAndroid Build Coastguard Worker//                       HIGHBD_DECL_SUFFIX)
1448*c0909341SAndroid Build Coastguard Workerfunction ipred_filter_8bpc_lsx
1449*c0909341SAndroid Build Coastguard Worker    andi           a5,      a5,      511
1450*c0909341SAndroid Build Coastguard Worker    la.local       a6,      dav1d_filter_intra_taps_lsx
1451*c0909341SAndroid Build Coastguard Worker    li.w           a7,      56
1452*c0909341SAndroid Build Coastguard Worker    mul.w          a7,      a7,      a5
1453*c0909341SAndroid Build Coastguard Worker    add.d          a6,      a6,      a7   //*filter
1454*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a2,      1    //*top
1455*c0909341SAndroid Build Coastguard Worker    or             a5,      zero,    zero //y
1456*c0909341SAndroid Build Coastguard Worker    vxor.v         vr14,    vr14,    vr14
1457*c0909341SAndroid Build Coastguard Worker    li.w           t0,      255
1458*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr15,    t0
1459*c0909341SAndroid Build Coastguard Worker
1460*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_H:
1461*c0909341SAndroid Build Coastguard Worker    sub.d          t0,      a2,      a5   //*topleft
1462*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      t0,      -1   //left
1463*c0909341SAndroid Build Coastguard Worker
1464*c0909341SAndroid Build Coastguard Worker    ctz.w          t2,      a3
1465*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t2,      -2
1466*c0909341SAndroid Build Coastguard Worker    beqz           t3,      .FILTER_LOOP_W4
1467*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t2,      -3
1468*c0909341SAndroid Build Coastguard Worker    beqz           t3,      .FILTER_LOOP_W8
1469*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t2,      -4
1470*c0909341SAndroid Build Coastguard Worker    beqz           t3,      .FILTER_LOOP_W16
1471*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      t2,      -5
1472*c0909341SAndroid Build Coastguard Worker    beqz           t3,      .FILTER_LOOP_W32
1473*c0909341SAndroid Build Coastguard Worker
1474*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_W4:
1475*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_p
1476*c0909341SAndroid Build Coastguard Worker
1477*c0909341SAndroid Build Coastguard Worker    or             t3,      a0,      a0  //*ptr
1478*c0909341SAndroid Build Coastguard Worker
1479*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1480*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1481*c0909341SAndroid Build Coastguard Worker
1482*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1483*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1484*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1485*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1486*c0909341SAndroid Build Coastguard Worker
1487*c0909341SAndroid Build Coastguard Worker    b              .FILTER_LOOP_W_END
1488*c0909341SAndroid Build Coastguard Worker
1489*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_W8:
1490*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_p
1491*c0909341SAndroid Build Coastguard Worker
1492*c0909341SAndroid Build Coastguard Worker    or             t3,      a0,      a0
1493*c0909341SAndroid Build Coastguard Worker
1494*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1495*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1496*c0909341SAndroid Build Coastguard Worker
1497*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1498*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1499*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1500*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1501*c0909341SAndroid Build Coastguard Worker
1502*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      3
1503*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1504*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1505*c0909341SAndroid Build Coastguard Worker
1506*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1507*c0909341SAndroid Build Coastguard Worker
1508*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      4
1509*c0909341SAndroid Build Coastguard Worker
1510*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1511*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1512*c0909341SAndroid Build Coastguard Worker
1513*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1514*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1515*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1516*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1517*c0909341SAndroid Build Coastguard Worker
1518*c0909341SAndroid Build Coastguard Worker    b              .FILTER_LOOP_W_END
1519*c0909341SAndroid Build Coastguard Worker
1520*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_W16:
1521*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_p
1522*c0909341SAndroid Build Coastguard Worker
1523*c0909341SAndroid Build Coastguard Worker    or             t3,      a0,      a0
1524*c0909341SAndroid Build Coastguard Worker
1525*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1526*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1527*c0909341SAndroid Build Coastguard Worker
1528*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1529*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1530*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1531*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1532*c0909341SAndroid Build Coastguard Worker
1533*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      3
1534*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1535*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1536*c0909341SAndroid Build Coastguard Worker
1537*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1538*c0909341SAndroid Build Coastguard Worker
1539*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      4
1540*c0909341SAndroid Build Coastguard Worker
1541*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1542*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1543*c0909341SAndroid Build Coastguard Worker
1544*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1545*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1546*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1547*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1548*c0909341SAndroid Build Coastguard Worker
1549*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      7
1550*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1551*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1552*c0909341SAndroid Build Coastguard Worker
1553*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1554*c0909341SAndroid Build Coastguard Worker
1555*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      8
1556*c0909341SAndroid Build Coastguard Worker
1557*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1558*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1559*c0909341SAndroid Build Coastguard Worker
1560*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1561*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1562*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1563*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1564*c0909341SAndroid Build Coastguard Worker
1565*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      11
1566*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1567*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1568*c0909341SAndroid Build Coastguard Worker
1569*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1570*c0909341SAndroid Build Coastguard Worker
1571*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      12
1572*c0909341SAndroid Build Coastguard Worker
1573*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1574*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1575*c0909341SAndroid Build Coastguard Worker
1576*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1577*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1578*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1579*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1580*c0909341SAndroid Build Coastguard Worker
1581*c0909341SAndroid Build Coastguard Worker    b              .FILTER_LOOP_W_END
1582*c0909341SAndroid Build Coastguard Worker
1583*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_W32:
1584*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_p
1585*c0909341SAndroid Build Coastguard Worker
1586*c0909341SAndroid Build Coastguard Worker    or             t3,      a0,      a0
1587*c0909341SAndroid Build Coastguard Worker
1588*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1589*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1590*c0909341SAndroid Build Coastguard Worker
1591*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1592*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1593*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1594*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1595*c0909341SAndroid Build Coastguard Worker
1596*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      3
1597*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1598*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1599*c0909341SAndroid Build Coastguard Worker
1600*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1601*c0909341SAndroid Build Coastguard Worker
1602*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      4
1603*c0909341SAndroid Build Coastguard Worker
1604*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1605*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1606*c0909341SAndroid Build Coastguard Worker
1607*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1608*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1609*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1610*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1611*c0909341SAndroid Build Coastguard Worker
1612*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      7
1613*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1614*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1615*c0909341SAndroid Build Coastguard Worker
1616*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1617*c0909341SAndroid Build Coastguard Worker
1618*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      8
1619*c0909341SAndroid Build Coastguard Worker
1620*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1621*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1622*c0909341SAndroid Build Coastguard Worker
1623*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1624*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1625*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1626*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1627*c0909341SAndroid Build Coastguard Worker
1628*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      11
1629*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1630*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1631*c0909341SAndroid Build Coastguard Worker
1632*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1633*c0909341SAndroid Build Coastguard Worker
1634*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      12
1635*c0909341SAndroid Build Coastguard Worker
1636*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1637*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1638*c0909341SAndroid Build Coastguard Worker
1639*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1640*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1641*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1642*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1643*c0909341SAndroid Build Coastguard Worker
1644*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      15
1645*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1646*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1647*c0909341SAndroid Build Coastguard Worker
1648*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1649*c0909341SAndroid Build Coastguard Worker
1650*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      16
1651*c0909341SAndroid Build Coastguard Worker
1652*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1653*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1654*c0909341SAndroid Build Coastguard Worker
1655*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1656*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1657*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1658*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1659*c0909341SAndroid Build Coastguard Worker
1660*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      19
1661*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1662*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1663*c0909341SAndroid Build Coastguard Worker
1664*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1665*c0909341SAndroid Build Coastguard Worker
1666*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      20
1667*c0909341SAndroid Build Coastguard Worker
1668*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1669*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1670*c0909341SAndroid Build Coastguard Worker
1671*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1672*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1673*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1674*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1675*c0909341SAndroid Build Coastguard Worker
1676*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      23
1677*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1678*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1679*c0909341SAndroid Build Coastguard Worker
1680*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1681*c0909341SAndroid Build Coastguard Worker
1682*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      24
1683*c0909341SAndroid Build Coastguard Worker
1684*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1685*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1686*c0909341SAndroid Build Coastguard Worker
1687*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1688*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1689*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1690*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1691*c0909341SAndroid Build Coastguard Worker
1692*c0909341SAndroid Build Coastguard Worker    addi.d         t1,      a0,      27
1693*c0909341SAndroid Build Coastguard Worker    addi.d         a7,      a7,      4
1694*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1
1695*c0909341SAndroid Build Coastguard Worker
1696*c0909341SAndroid Build Coastguard Worker    ipred_filter_loadx_p
1697*c0909341SAndroid Build Coastguard Worker
1698*c0909341SAndroid Build Coastguard Worker    addi.d         t3,      a0,      28
1699*c0909341SAndroid Build Coastguard Worker
1700*c0909341SAndroid Build Coastguard Worker    ipred_filter_load_fltptr
1701*c0909341SAndroid Build Coastguard Worker    ipred_filter_calc_acc
1702*c0909341SAndroid Build Coastguard Worker
1703*c0909341SAndroid Build Coastguard Worker    fst.s          f8,      t3,      0
1704*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1705*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr8,     t3,      0,      1
1706*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      a1
1707*c0909341SAndroid Build Coastguard Worker
1708*c0909341SAndroid Build Coastguard Worker.FILTER_LOOP_W_END:
1709*c0909341SAndroid Build Coastguard Worker    add.d          a7,      a0,      a1
1710*c0909341SAndroid Build Coastguard Worker    add.d          t2,      a1,      a1
1711*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      t2
1712*c0909341SAndroid Build Coastguard Worker    addi.d         a5,      a5,      2
1713*c0909341SAndroid Build Coastguard Worker    blt            a5,      a4,      .FILTER_LOOP_H
1714*c0909341SAndroid Build Coastguard Workerendfunc
1715*c0909341SAndroid Build Coastguard Worker
1716*c0909341SAndroid Build Coastguard Workerconst dav1d_dr_intra_derivative
1717*c0909341SAndroid Build Coastguard Worker    // Values that are 0 will never be used
1718*c0909341SAndroid Build Coastguard Worker    .short  0         // Angles:
1719*c0909341SAndroid Build Coastguard Worker    .short  1023, 0   //  3,  93, 183
1720*c0909341SAndroid Build Coastguard Worker    .short  547       //  6,  96, 186
1721*c0909341SAndroid Build Coastguard Worker    .short  372, 0, 0 //  9,  99, 189
1722*c0909341SAndroid Build Coastguard Worker    .short  273       // 14, 104, 194
1723*c0909341SAndroid Build Coastguard Worker    .short  215, 0    // 17, 107, 197
1724*c0909341SAndroid Build Coastguard Worker    .short  178       // 20, 110, 200
1725*c0909341SAndroid Build Coastguard Worker    .short  151, 0    // 23, 113, 203 (113 & 203 are base angles)
1726*c0909341SAndroid Build Coastguard Worker    .short  132       // 26, 116, 206
1727*c0909341SAndroid Build Coastguard Worker    .short  116, 0    // 29, 119, 209
1728*c0909341SAndroid Build Coastguard Worker    .short  102, 0    // 32, 122, 212
1729*c0909341SAndroid Build Coastguard Worker    .short  90        // 36, 126, 216
1730*c0909341SAndroid Build Coastguard Worker    .short  80, 0     // 39, 129, 219
1731*c0909341SAndroid Build Coastguard Worker    .short  71        // 42, 132, 222
1732*c0909341SAndroid Build Coastguard Worker    .short  64, 0     // 45, 135, 225 (45 & 135 are base angles)
1733*c0909341SAndroid Build Coastguard Worker    .short  57        // 48, 138, 228
1734*c0909341SAndroid Build Coastguard Worker    .short  51, 0     // 51, 141, 231
1735*c0909341SAndroid Build Coastguard Worker    .short  45, 0     // 54, 144, 234
1736*c0909341SAndroid Build Coastguard Worker    .short  40        // 58, 148, 238
1737*c0909341SAndroid Build Coastguard Worker    .short  35, 0     // 61, 151, 241
1738*c0909341SAndroid Build Coastguard Worker    .short  31        // 64, 154, 244
1739*c0909341SAndroid Build Coastguard Worker    .short  27, 0     // 67, 157, 247 (67 & 157 are base angles)
1740*c0909341SAndroid Build Coastguard Worker    .short  23        // 70, 160, 250
1741*c0909341SAndroid Build Coastguard Worker    .short  19, 0     // 73, 163, 253
1742*c0909341SAndroid Build Coastguard Worker    .short  15, 0     // 76, 166, 256
1743*c0909341SAndroid Build Coastguard Worker    .short  11, 0     // 81, 171, 261
1744*c0909341SAndroid Build Coastguard Worker    .short  7         // 84, 174, 264
1745*c0909341SAndroid Build Coastguard Worker    .short  3         // 87, 177, 267
1746*c0909341SAndroid Build Coastguard Workerendconst
1747*c0909341SAndroid Build Coastguard Worker
1748*c0909341SAndroid Build Coastguard Workerconst z1_upsample_edge_kernel
1749*c0909341SAndroid Build Coastguard Worker    .short  -1, 9, 9, -1, -1, 9, 9, -1
1750*c0909341SAndroid Build Coastguard Workerendconst
1751*c0909341SAndroid Build Coastguard Worker
1752*c0909341SAndroid Build Coastguard Workerconst ipred_filter_edge_kernel1
1753*c0909341SAndroid Build Coastguard Worker    .short  0, 4, 8, 4, 0, 4, 8, 4
1754*c0909341SAndroid Build Coastguard Worker    .short  0, 5, 6, 5, 0, 5, 6, 5
1755*c0909341SAndroid Build Coastguard Worker    .short  2, 4, 4, 4, 2, 4, 4, 4
1756*c0909341SAndroid Build Coastguard Workerendconst
1757*c0909341SAndroid Build Coastguard Worker
1758*c0909341SAndroid Build Coastguard Workerconst ipred_filter_edge_kernel2
1759*c0909341SAndroid Build Coastguard Worker    .short  0, 0, 0, 0, 0, 0, 0, 0
1760*c0909341SAndroid Build Coastguard Worker    .short  0, 0, 0, 0, 0, 0, 0, 0
1761*c0909341SAndroid Build Coastguard Worker    .short  2, 2, 2, 2, 2, 2, 2, 2
1762*c0909341SAndroid Build Coastguard Workerendconst
1763*c0909341SAndroid Build Coastguard Worker
1764*c0909341SAndroid Build Coastguard Worker.macro z1_upsample_edge_calc_loop
1765*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
1766*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr11,    0
1767*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
1768*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1769*c0909341SAndroid Build Coastguard Worker
1770*c0909341SAndroid Build Coastguard Worker    vmul.h         vr10,    vr10,    vr0
1771*c0909341SAndroid Build Coastguard Worker    vmul.h         vr11,    vr11,    vr0
1772*c0909341SAndroid Build Coastguard Worker    vmul.h         vr12,    vr12,    vr0
1773*c0909341SAndroid Build Coastguard Worker    vmul.h         vr13,    vr13,    vr0
1774*c0909341SAndroid Build Coastguard Worker
1775*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr10,    vr10,    vr10
1776*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr11,    vr11,    vr11
1777*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr12,    vr12,    vr12
1778*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr13,    vr13,    vr13
1779*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr10,    vr10,    vr10
1780*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr11,    vr11,    vr11
1781*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr12,    vr12,    vr12
1782*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr13,    vr13,    vr13
1783*c0909341SAndroid Build Coastguard Worker
1784*c0909341SAndroid Build Coastguard Worker    vpackev.h      vr10,    vr11,    vr10
1785*c0909341SAndroid Build Coastguard Worker    vpackev.h      vr11,    vr13,    vr12
1786*c0909341SAndroid Build Coastguard Worker    vpackev.w      vr12,    vr11,    vr10  //s:01234567
1787*c0909341SAndroid Build Coastguard Worker    vsrari.h       vr12,    vr12,    4
1788*c0909341SAndroid Build Coastguard Worker    iclip_pixel_vrh vr12, vr15, vr16, vr10, vr11, vr12
1789*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0  //out: 13579...
1790*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1  //out:02468...
1791*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr13,    vr12,    vr11
1792*c0909341SAndroid Build Coastguard Worker.endm
1793*c0909341SAndroid Build Coastguard Worker
1794*c0909341SAndroid Build Coastguard Worker.macro z1_upsample_edge_data_init1
1795*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
1796*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
1797*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
1798*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
1799*c0909341SAndroid Build Coastguard Worker.endm
1800*c0909341SAndroid Build Coastguard Worker
1801*c0909341SAndroid Build Coastguard Worker.macro z1_upsample_edge_data_init2
1802*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
1803*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
1804*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
1805*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
1806*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
1807*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
1808*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
1809*c0909341SAndroid Build Coastguard Worker.endm
1810*c0909341SAndroid Build Coastguard Worker
1811*c0909341SAndroid Build Coastguard Worker.macro z1_upsample_edge_calc_other
1812*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
1813*c0909341SAndroid Build Coastguard Worker    vmul.h         vr10,    vr10,    vr0
1814*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr10,    vr10,    vr10
1815*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr10,    vr10,    vr10
1816*c0909341SAndroid Build Coastguard Worker    vreplvei.h     vr12,    vr10,    0   //s0-s7
1817*c0909341SAndroid Build Coastguard Worker    vsrari.h       vr12,    vr12,    4
1818*c0909341SAndroid Build Coastguard Worker
1819*c0909341SAndroid Build Coastguard Worker    iclip_pixel_vrh vr12, vr15, vr16, vr10, vr11, vr12
1820*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0
1821*c0909341SAndroid Build Coastguard Worker    vilvl.b        vr13,    vr12,    vr7
1822*c0909341SAndroid Build Coastguard Worker.endm
1823*c0909341SAndroid Build Coastguard Worker
1824*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_calc_loop1
1825*c0909341SAndroid Build Coastguard Worker    vmul.h         vr10,    vr10,    vr1
1826*c0909341SAndroid Build Coastguard Worker    vmul.h         vr11,    vr11,    vr1
1827*c0909341SAndroid Build Coastguard Worker    vmul.h         vr12,    vr12,    vr1
1828*c0909341SAndroid Build Coastguard Worker    vmul.h         vr13,    vr13,    vr1
1829*c0909341SAndroid Build Coastguard Worker
1830*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr10,    vr10,    vr10
1831*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr11,    vr11,    vr11
1832*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr12,    vr12,    vr12
1833*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr13,    vr13,    vr13
1834*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr10,    vr10,    vr10
1835*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr11,    vr11,    vr11
1836*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr12,    vr12,    vr12
1837*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr13,    vr13,    vr13
1838*c0909341SAndroid Build Coastguard Worker
1839*c0909341SAndroid Build Coastguard Worker    vpackev.h      vr10,    vr11,    vr10
1840*c0909341SAndroid Build Coastguard Worker    vpackev.h      vr11,    vr13,    vr12
1841*c0909341SAndroid Build Coastguard Worker    vpackev.w      vr10,    vr11,    vr10  //s:01234567
1842*c0909341SAndroid Build Coastguard Worker.endm
1843*c0909341SAndroid Build Coastguard Worker
1844*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_calc_loop2
1845*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1846*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr10,    vr13,    vr6
1847*c0909341SAndroid Build Coastguard Worker    vsrari.h       vr12,    vr10,    4
1848*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0  //out: 0-7
1849*c0909341SAndroid Build Coastguard Worker.endm
1850*c0909341SAndroid Build Coastguard Worker
1851*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_calc_other
1852*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr10,    0
1853*c0909341SAndroid Build Coastguard Worker    vmul.h         vr11,    vr10,    vr1
1854*c0909341SAndroid Build Coastguard Worker    vhaddw.w.h     vr11,    vr11,    vr11
1855*c0909341SAndroid Build Coastguard Worker    vhaddw.d.w     vr11,    vr11,    vr11
1856*c0909341SAndroid Build Coastguard Worker    vreplvei.h     vr12,    vr11,    4
1857*c0909341SAndroid Build Coastguard Worker    vextrins.h     vr12,    vr11,    0x00
1858*c0909341SAndroid Build Coastguard Worker
1859*c0909341SAndroid Build Coastguard Worker    vreplvei.h     vr13,    vr10,    1
1860*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr12,    vr13,    vr6
1861*c0909341SAndroid Build Coastguard Worker    vsrari.h       vr12,    vr12,    4
1862*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr12,    vr12,    0  //out: 0-7
1863*c0909341SAndroid Build Coastguard Worker.endm
1864*c0909341SAndroid Build Coastguard Worker
1865*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_data_init1
1866*c0909341SAndroid Build Coastguard Worker    vbsll.v        vr10,    vr7,     1
1867*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr10,    0x01
1868*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     1
1869*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     2
1870*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr10,    0
1871*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr7,     0
1872*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
1873*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1874*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
1875*c0909341SAndroid Build Coastguard Worker.endm
1876*c0909341SAndroid Build Coastguard Worker
1877*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_data_init2
1878*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
1879*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
1880*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
1881*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
1882*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr11,    0
1883*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
1884*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1885*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
1886*c0909341SAndroid Build Coastguard Worker.endm
1887*c0909341SAndroid Build Coastguard Worker
1888*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_data_init3
1889*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
1890*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
1891*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
1892*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x76
1893*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
1894*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr11,    0
1895*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
1896*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1897*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
1898*c0909341SAndroid Build Coastguard Worker.endm
1899*c0909341SAndroid Build Coastguard Worker
1900*c0909341SAndroid Build Coastguard Worker.macro z1_filter_edge_data_init4
1901*c0909341SAndroid Build Coastguard Worker    vbsll.v        vr10,    vr7,     1
1902*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr10,    0x01
1903*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     1
1904*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     2
1905*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x76
1906*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr10,    0
1907*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr7,     0
1908*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
1909*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
1910*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
1911*c0909341SAndroid Build Coastguard Worker.endm
1912*c0909341SAndroid Build Coastguard Worker
1913*c0909341SAndroid Build Coastguard Worker.macro pixel_set_8bpc_allw dst_ptr, src_ptr, width, tmp0, tmp1
1914*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr10,    \src_ptr, 0
1915*c0909341SAndroid Build Coastguard Worker    or             \tmp1,   zero,     zero
1916*c0909341SAndroid Build Coastguard Worker    srai.d         \tmp0,   \width,   4
1917*c0909341SAndroid Build Coastguard Worker    beqz           \tmp0,   2f
1918*c0909341SAndroid Build Coastguard Worker1:
1919*c0909341SAndroid Build Coastguard Worker    vstx           vr10,    \dst_ptr, \tmp1
1920*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp1,   \tmp1,    16
1921*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp0,   \tmp0,    -1
1922*c0909341SAndroid Build Coastguard Worker    bnez           \tmp0,   1b
1923*c0909341SAndroid Build Coastguard Worker2:
1924*c0909341SAndroid Build Coastguard Worker    andi           \tmp0,   \width,   8
1925*c0909341SAndroid Build Coastguard Worker    beqz           \tmp0,   3f
1926*c0909341SAndroid Build Coastguard Worker    fstx.d         f10,     \dst_ptr, \tmp1
1927*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp1,   \tmp1,    8
1928*c0909341SAndroid Build Coastguard Worker3:
1929*c0909341SAndroid Build Coastguard Worker    andi           \tmp0,   \width,   4
1930*c0909341SAndroid Build Coastguard Worker    beqz           \tmp0,   4f
1931*c0909341SAndroid Build Coastguard Worker    fstx.s         f10,     \dst_ptr, \tmp1
1932*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp1,   \tmp1,    4
1933*c0909341SAndroid Build Coastguard Worker4:
1934*c0909341SAndroid Build Coastguard Worker    andi           \tmp0,   \width,   2
1935*c0909341SAndroid Build Coastguard Worker    beqz           \tmp0,   5f
1936*c0909341SAndroid Build Coastguard Worker    ldx.bu         \tmp0,   \src_ptr, zero
1937*c0909341SAndroid Build Coastguard Worker    stx.b          \tmp0,   \dst_ptr, \tmp1
1938*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp1,   \tmp1,    1
1939*c0909341SAndroid Build Coastguard Worker    stx.b          \tmp0,   \dst_ptr, \tmp1
1940*c0909341SAndroid Build Coastguard Worker    addi.d         \tmp1,   \tmp1,    1
1941*c0909341SAndroid Build Coastguard Worker5:
1942*c0909341SAndroid Build Coastguard Worker    andi           \tmp0,   \width,   1
1943*c0909341SAndroid Build Coastguard Worker    beqz           \tmp0,   6f
1944*c0909341SAndroid Build Coastguard Worker    ldx.bu         \tmp0,   \src_ptr, zero
1945*c0909341SAndroid Build Coastguard Worker    stx.b          \tmp0,   \dst_ptr, \tmp1
1946*c0909341SAndroid Build Coastguard Worker6:
1947*c0909341SAndroid Build Coastguard Worker.endm
1948*c0909341SAndroid Build Coastguard Worker
1949*c0909341SAndroid Build Coastguard Worker// void ipred_z1_lsx(pixel *dst, const ptrdiff_t stride,
1950*c0909341SAndroid Build Coastguard Worker//                   const pixel *const topleft_in,
1951*c0909341SAndroid Build Coastguard Worker//                   const int width, const int height, int angle,
1952*c0909341SAndroid Build Coastguard Worker//                   const int max_width, const int max_height
1953*c0909341SAndroid Build Coastguard Worker//                   HIGHBD_DECL_SUFFIX)
1954*c0909341SAndroid Build Coastguard Workerfunction ipred_z1_8bpc_lsx
1955*c0909341SAndroid Build Coastguard Worker    addi.d         a2,      a2,      1   //&topleft_in[1]
1956*c0909341SAndroid Build Coastguard Worker    addi.d         sp,      sp,      -128
1957*c0909341SAndroid Build Coastguard Worker    or             t2,      sp,      sp  //top_out
1958*c0909341SAndroid Build Coastguard Worker    srai.d         a6,      a5,      9
1959*c0909341SAndroid Build Coastguard Worker    andi           a6,      a6,      1   //is_sum
1960*c0909341SAndroid Build Coastguard Worker    srai.d         a7,      a5,      10  //enable_intra_edge_filter
1961*c0909341SAndroid Build Coastguard Worker    andi           a5,      a5,      511
1962*c0909341SAndroid Build Coastguard Worker
1963*c0909341SAndroid Build Coastguard Worker    la.local       t0,      dav1d_dr_intra_derivative
1964*c0909341SAndroid Build Coastguard Worker    andi           t1,      a5,      0xFFE
1965*c0909341SAndroid Build Coastguard Worker    ldx.hu         t1,      t0,      t1  //dx
1966*c0909341SAndroid Build Coastguard Worker
1967*c0909341SAndroid Build Coastguard Worker    beqz           a7,      .IPRED_Z1_NOTUA
1968*c0909341SAndroid Build Coastguard Worker    add.d          t3,      a3,      a4
1969*c0909341SAndroid Build Coastguard Worker    li.w           t4,      90
1970*c0909341SAndroid Build Coastguard Worker    sub.w          t4,      t4,      a5
1971*c0909341SAndroid Build Coastguard Worker    // ipred_get_upsample t5:upsample_above
1972*c0909341SAndroid Build Coastguard Worker    li.w           t6,      16
1973*c0909341SAndroid Build Coastguard Worker    sra.d          t6,      t6,      a6
1974*c0909341SAndroid Build Coastguard Worker    bge            t6,      t3,      .Z1_GETUS1
1975*c0909341SAndroid Build Coastguard Worker    addi.d         t5,      zero,    0
1976*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETUS2
1977*c0909341SAndroid Build Coastguard Worker.Z1_GETUS1:
1978*c0909341SAndroid Build Coastguard Worker    addi.d         t5,      zero,    1
1979*c0909341SAndroid Build Coastguard Worker.Z1_GETUS2:
1980*c0909341SAndroid Build Coastguard Worker    li.w           t6,      40
1981*c0909341SAndroid Build Coastguard Worker    blt            t4,      t6,      .Z1_GETUS3
1982*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      zero,    0
1983*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETUS4
1984*c0909341SAndroid Build Coastguard Worker.Z1_GETUS3:
1985*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      zero,    1
1986*c0909341SAndroid Build Coastguard Worker.Z1_GETUS4:
1987*c0909341SAndroid Build Coastguard Worker    and            t5,      t5,      t6
1988*c0909341SAndroid Build Coastguard Worker
1989*c0909341SAndroid Build Coastguard Worker    beqz           t5,      .IPRED_Z1_NOTUA
1990*c0909341SAndroid Build Coastguard Worker
1991*c0909341SAndroid Build Coastguard Worker    la.local       t0,      z1_upsample_edge_kernel
1992*c0909341SAndroid Build Coastguard Worker    vld            vr0,     t0,      0   //kernel
1993*c0909341SAndroid Build Coastguard Worker    vxor.v         vr15,    vr15,    vr15
1994*c0909341SAndroid Build Coastguard Worker    li.w           t0,      255
1995*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr16,    t0
1996*c0909341SAndroid Build Coastguard Worker
1997*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4:
1998*c0909341SAndroid Build Coastguard Worker    andi           t6,      a3,     4
1999*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W8
2000*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4_H4:
2001*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     4
2002*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W4_H8
2003*c0909341SAndroid Build Coastguard Worker
2004*c0909341SAndroid Build Coastguard Worker    //0-6
2005*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2006*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2007*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2008*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2009*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2010*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2011*c0909341SAndroid Build Coastguard Worker
2012*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     0
2013*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     8,    2
2014*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     12,   6
2015*c0909341SAndroid Build Coastguard Worker
2016*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     7
2017*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     14
2018*c0909341SAndroid Build Coastguard Worker
2019*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2020*c0909341SAndroid Build Coastguard Worker
2021*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4_H8:
2022*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     8
2023*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W4_H16
2024*c0909341SAndroid Build Coastguard Worker
2025*c0909341SAndroid Build Coastguard Worker    //0-7
2026*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2027*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2028*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2029*c0909341SAndroid Build Coastguard Worker
2030*c0909341SAndroid Build Coastguard Worker    //8-10
2031*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     7
2032*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2033*c0909341SAndroid Build Coastguard Worker
2034*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     16,   0
2035*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     20,   2
2036*c0909341SAndroid Build Coastguard Worker
2037*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     7
2038*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     22
2039*c0909341SAndroid Build Coastguard Worker
2040*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2041*c0909341SAndroid Build Coastguard Worker
2042*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4_H16:
2043*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     16
2044*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W4_H32
2045*c0909341SAndroid Build Coastguard Worker
2046*c0909341SAndroid Build Coastguard Worker    //0-7
2047*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2048*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2049*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2050*c0909341SAndroid Build Coastguard Worker
2051*c0909341SAndroid Build Coastguard Worker    //8-15
2052*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     7
2053*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2054*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2055*c0909341SAndroid Build Coastguard Worker
2056*c0909341SAndroid Build Coastguard Worker    //16-18
2057*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     32,   0
2058*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     36,   2
2059*c0909341SAndroid Build Coastguard Worker
2060*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     7
2061*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     38
2062*c0909341SAndroid Build Coastguard Worker
2063*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2064*c0909341SAndroid Build Coastguard Worker
2065*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4_H32:
2066*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     32
2067*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W4_H64
2068*c0909341SAndroid Build Coastguard Worker
2069*c0909341SAndroid Build Coastguard Worker    //0-7
2070*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2071*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2072*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2073*c0909341SAndroid Build Coastguard Worker
2074*c0909341SAndroid Build Coastguard Worker    //8-15
2075*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     7
2076*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2077*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2078*c0909341SAndroid Build Coastguard Worker
2079*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     32 //16-23
2080*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     48 //24-31
2081*c0909341SAndroid Build Coastguard Worker
2082*c0909341SAndroid Build Coastguard Worker    //32-34
2083*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     64,   0
2084*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     68,   2
2085*c0909341SAndroid Build Coastguard Worker
2086*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     7
2087*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     70
2088*c0909341SAndroid Build Coastguard Worker
2089*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2090*c0909341SAndroid Build Coastguard Worker
2091*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W4_H64:
2092*c0909341SAndroid Build Coastguard Worker    //0-7
2093*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2094*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2095*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2096*c0909341SAndroid Build Coastguard Worker
2097*c0909341SAndroid Build Coastguard Worker    //8-15
2098*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     7
2099*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2100*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2101*c0909341SAndroid Build Coastguard Worker
2102*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     32 //16-23
2103*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     48 //24-31
2104*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     64 //32-39
2105*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     80 //40-47
2106*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     96 //48-55
2107*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     112 //56-63
2108*c0909341SAndroid Build Coastguard Worker
2109*c0909341SAndroid Build Coastguard Worker    //64-66
2110*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     128,   0
2111*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     132,   2
2112*c0909341SAndroid Build Coastguard Worker
2113*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     7
2114*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     134
2115*c0909341SAndroid Build Coastguard Worker
2116*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2117*c0909341SAndroid Build Coastguard Worker
2118*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8:
2119*c0909341SAndroid Build Coastguard Worker    andi           t6,      a3,     8
2120*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W16
2121*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8_H4:
2122*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     4
2123*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W8_H8
2124*c0909341SAndroid Build Coastguard Worker
2125*c0909341SAndroid Build Coastguard Worker    //0-7
2126*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2127*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2128*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2129*c0909341SAndroid Build Coastguard Worker
2130*c0909341SAndroid Build Coastguard Worker    //8-15
2131*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2132*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2133*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2134*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x32
2135*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2136*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x21
2137*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x31
2138*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2139*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     16,    0
2140*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     20,    2
2141*c0909341SAndroid Build Coastguard Worker
2142*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     11
2143*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     22
2144*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2145*c0909341SAndroid Build Coastguard Worker
2146*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8_H8:
2147*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     8
2148*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W8_H16
2149*c0909341SAndroid Build Coastguard Worker
2150*c0909341SAndroid Build Coastguard Worker    //0-7
2151*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2152*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2153*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2154*c0909341SAndroid Build Coastguard Worker
2155*c0909341SAndroid Build Coastguard Worker    //8-14
2156*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2157*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2158*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2159*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2160*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2161*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2162*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     16
2163*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     24,    2
2164*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     28,    6
2165*c0909341SAndroid Build Coastguard Worker
2166*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     15
2167*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     30
2168*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2169*c0909341SAndroid Build Coastguard Worker
2170*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8_H16:
2171*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     16
2172*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W8_H32
2173*c0909341SAndroid Build Coastguard Worker
2174*c0909341SAndroid Build Coastguard Worker    //0-7
2175*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2176*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2177*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2178*c0909341SAndroid Build Coastguard Worker
2179*c0909341SAndroid Build Coastguard Worker    //8-15
2180*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2181*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2182*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2183*c0909341SAndroid Build Coastguard Worker
2184*c0909341SAndroid Build Coastguard Worker    //16-22
2185*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     15
2186*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2187*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     32
2188*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     40,   2
2189*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     44,   6
2190*c0909341SAndroid Build Coastguard Worker
2191*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     15
2192*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     46
2193*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2194*c0909341SAndroid Build Coastguard Worker
2195*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8_H32:
2196*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     32
2197*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W8_H64
2198*c0909341SAndroid Build Coastguard Worker
2199*c0909341SAndroid Build Coastguard Worker    //0-7
2200*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2201*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2202*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2203*c0909341SAndroid Build Coastguard Worker
2204*c0909341SAndroid Build Coastguard Worker    //8-15
2205*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2206*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2207*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2208*c0909341SAndroid Build Coastguard Worker
2209*c0909341SAndroid Build Coastguard Worker    //16-23
2210*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     15
2211*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2212*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     32
2213*c0909341SAndroid Build Coastguard Worker
2214*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     48 //24-31
2215*c0909341SAndroid Build Coastguard Worker
2216*c0909341SAndroid Build Coastguard Worker    //32-38
2217*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     64
2218*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     72,   2
2219*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     76,   6
2220*c0909341SAndroid Build Coastguard Worker
2221*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     15
2222*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     78
2223*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2224*c0909341SAndroid Build Coastguard Worker
2225*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W8_H64:
2226*c0909341SAndroid Build Coastguard Worker    //0-7
2227*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2228*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2229*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2230*c0909341SAndroid Build Coastguard Worker
2231*c0909341SAndroid Build Coastguard Worker    //8-15
2232*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2233*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2234*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2235*c0909341SAndroid Build Coastguard Worker
2236*c0909341SAndroid Build Coastguard Worker    //16-23
2237*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,     15
2238*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2239*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     32
2240*c0909341SAndroid Build Coastguard Worker
2241*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     48 //24-31
2242*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     64 //32-39
2243*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     80 //40-47
2244*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     96 //48-55
2245*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     112 //56-63
2246*c0909341SAndroid Build Coastguard Worker
2247*c0909341SAndroid Build Coastguard Worker    //64-70
2248*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     128
2249*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     136,   2
2250*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     140,   6
2251*c0909341SAndroid Build Coastguard Worker
2252*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     15
2253*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     142
2254*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2255*c0909341SAndroid Build Coastguard Worker
2256*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16:
2257*c0909341SAndroid Build Coastguard Worker    andi           t6,      a3,     16
2258*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W32
2259*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16_H4:
2260*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     4
2261*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W16_H8
2262*c0909341SAndroid Build Coastguard Worker
2263*c0909341SAndroid Build Coastguard Worker    //0-7
2264*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2265*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2266*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2267*c0909341SAndroid Build Coastguard Worker
2268*c0909341SAndroid Build Coastguard Worker    //8-15
2269*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2270*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2271*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2272*c0909341SAndroid Build Coastguard Worker
2273*c0909341SAndroid Build Coastguard Worker    //16-18
2274*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2275*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2276*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     32,    0
2277*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     36,    2
2278*c0909341SAndroid Build Coastguard Worker
2279*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     19
2280*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     38
2281*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2282*c0909341SAndroid Build Coastguard Worker
2283*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16_H8:
2284*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     8
2285*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W16_H16
2286*c0909341SAndroid Build Coastguard Worker
2287*c0909341SAndroid Build Coastguard Worker    //0-7
2288*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2289*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2290*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2291*c0909341SAndroid Build Coastguard Worker
2292*c0909341SAndroid Build Coastguard Worker    //8-15
2293*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2294*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2295*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2296*c0909341SAndroid Build Coastguard Worker
2297*c0909341SAndroid Build Coastguard Worker    //16-22
2298*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2299*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2300*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2301*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2302*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2303*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2304*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     32
2305*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     40,    2
2306*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     44,    6
2307*c0909341SAndroid Build Coastguard Worker
2308*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     23
2309*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     46
2310*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2311*c0909341SAndroid Build Coastguard Worker
2312*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16_H16:
2313*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     16
2314*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W16_H32
2315*c0909341SAndroid Build Coastguard Worker
2316*c0909341SAndroid Build Coastguard Worker    //0-7
2317*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2318*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2319*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2320*c0909341SAndroid Build Coastguard Worker
2321*c0909341SAndroid Build Coastguard Worker    //8-15
2322*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2323*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2324*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2325*c0909341SAndroid Build Coastguard Worker
2326*c0909341SAndroid Build Coastguard Worker    //16-23
2327*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2328*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2329*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2330*c0909341SAndroid Build Coastguard Worker
2331*c0909341SAndroid Build Coastguard Worker    //24-30
2332*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2333*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2334*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2335*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2336*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2337*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2338*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     48
2339*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     56,    2
2340*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     60,    6
2341*c0909341SAndroid Build Coastguard Worker
2342*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     31
2343*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     62
2344*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2345*c0909341SAndroid Build Coastguard Worker
2346*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16_H32:
2347*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     32
2348*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W16_H64
2349*c0909341SAndroid Build Coastguard Worker
2350*c0909341SAndroid Build Coastguard Worker    //0-7
2351*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2352*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2353*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2354*c0909341SAndroid Build Coastguard Worker
2355*c0909341SAndroid Build Coastguard Worker    //8-15
2356*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2357*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2358*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2359*c0909341SAndroid Build Coastguard Worker
2360*c0909341SAndroid Build Coastguard Worker    //16-23
2361*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2362*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2363*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2364*c0909341SAndroid Build Coastguard Worker
2365*c0909341SAndroid Build Coastguard Worker    //24-31
2366*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2367*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2368*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2369*c0909341SAndroid Build Coastguard Worker
2370*c0909341SAndroid Build Coastguard Worker    //32-39
2371*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,      31
2372*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2373*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2374*c0909341SAndroid Build Coastguard Worker
2375*c0909341SAndroid Build Coastguard Worker    //40-46
2376*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     80
2377*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     88,    2
2378*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     92,    6
2379*c0909341SAndroid Build Coastguard Worker
2380*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     31
2381*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     94
2382*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2383*c0909341SAndroid Build Coastguard Worker
2384*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W16_H64:
2385*c0909341SAndroid Build Coastguard Worker    //0-7
2386*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2387*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2388*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2389*c0909341SAndroid Build Coastguard Worker
2390*c0909341SAndroid Build Coastguard Worker    //8-15
2391*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2392*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2393*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     16
2394*c0909341SAndroid Build Coastguard Worker
2395*c0909341SAndroid Build Coastguard Worker    //16-23
2396*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2397*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2398*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2399*c0909341SAndroid Build Coastguard Worker
2400*c0909341SAndroid Build Coastguard Worker    //24-31
2401*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2402*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2403*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2404*c0909341SAndroid Build Coastguard Worker
2405*c0909341SAndroid Build Coastguard Worker    //32-39
2406*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,      31
2407*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2408*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2409*c0909341SAndroid Build Coastguard Worker
2410*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80  //40-47
2411*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96  //48-55
2412*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      112 //56-63
2413*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      128 //64-71
2414*c0909341SAndroid Build Coastguard Worker
2415*c0909341SAndroid Build Coastguard Worker    //72-78
2416*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     144
2417*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     152,    2
2418*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     156,    6
2419*c0909341SAndroid Build Coastguard Worker
2420*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     31
2421*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     158
2422*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2423*c0909341SAndroid Build Coastguard Worker
2424*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W32:
2425*c0909341SAndroid Build Coastguard Worker    andi           t6,      a3,     32
2426*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W64
2427*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W32_H8:
2428*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     8
2429*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W32_H16
2430*c0909341SAndroid Build Coastguard Worker
2431*c0909341SAndroid Build Coastguard Worker    //0-7
2432*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2433*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2434*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2435*c0909341SAndroid Build Coastguard Worker
2436*c0909341SAndroid Build Coastguard Worker    //8-15
2437*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2438*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2439*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2440*c0909341SAndroid Build Coastguard Worker
2441*c0909341SAndroid Build Coastguard Worker    //16-23
2442*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2443*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2444*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2445*c0909341SAndroid Build Coastguard Worker
2446*c0909341SAndroid Build Coastguard Worker    //24-31
2447*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2448*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2449*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2450*c0909341SAndroid Build Coastguard Worker
2451*c0909341SAndroid Build Coastguard Worker    //32-38
2452*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2453*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2454*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2455*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2456*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2457*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2458*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,      64
2459*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,      72,    2
2460*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,      76,    6
2461*c0909341SAndroid Build Coastguard Worker
2462*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     39
2463*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     78
2464*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2465*c0909341SAndroid Build Coastguard Worker
2466*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W32_H16:
2467*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     16
2468*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W32_H32
2469*c0909341SAndroid Build Coastguard Worker
2470*c0909341SAndroid Build Coastguard Worker    //0-7
2471*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2472*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2473*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2474*c0909341SAndroid Build Coastguard Worker
2475*c0909341SAndroid Build Coastguard Worker    //8-15
2476*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2477*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2478*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2479*c0909341SAndroid Build Coastguard Worker
2480*c0909341SAndroid Build Coastguard Worker    //16-23
2481*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2482*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2483*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2484*c0909341SAndroid Build Coastguard Worker
2485*c0909341SAndroid Build Coastguard Worker    //24-31
2486*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2487*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2488*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2489*c0909341SAndroid Build Coastguard Worker
2490*c0909341SAndroid Build Coastguard Worker    //32-39
2491*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2492*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2493*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2494*c0909341SAndroid Build Coastguard Worker
2495*c0909341SAndroid Build Coastguard Worker    //40-46
2496*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2497*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2498*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2499*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2500*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2501*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2502*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,      80
2503*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,      88,    2
2504*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,      92,    6
2505*c0909341SAndroid Build Coastguard Worker
2506*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     47
2507*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     94
2508*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2509*c0909341SAndroid Build Coastguard Worker
2510*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W32_H32:
2511*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     32
2512*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W32_H64
2513*c0909341SAndroid Build Coastguard Worker
2514*c0909341SAndroid Build Coastguard Worker    //0-7
2515*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2516*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2517*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2518*c0909341SAndroid Build Coastguard Worker
2519*c0909341SAndroid Build Coastguard Worker    //8-15
2520*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2521*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2522*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2523*c0909341SAndroid Build Coastguard Worker
2524*c0909341SAndroid Build Coastguard Worker    //16-23
2525*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2526*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2527*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2528*c0909341SAndroid Build Coastguard Worker
2529*c0909341SAndroid Build Coastguard Worker    //24-31
2530*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2531*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2532*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2533*c0909341SAndroid Build Coastguard Worker
2534*c0909341SAndroid Build Coastguard Worker    //32-39
2535*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2536*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2537*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2538*c0909341SAndroid Build Coastguard Worker
2539*c0909341SAndroid Build Coastguard Worker    //40-47
2540*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2541*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2542*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80
2543*c0909341SAndroid Build Coastguard Worker
2544*c0909341SAndroid Build Coastguard Worker    //48-55
2545*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      47
2546*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2547*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96
2548*c0909341SAndroid Build Coastguard Worker
2549*c0909341SAndroid Build Coastguard Worker    //56-62
2550*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      55
2551*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
2552*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
2553*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr12,    vr12,    0x76
2554*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2555*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_loop
2556*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,      112
2557*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,      120,   2
2558*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,      124,   6
2559*c0909341SAndroid Build Coastguard Worker
2560*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     63
2561*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     126
2562*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2563*c0909341SAndroid Build Coastguard Worker
2564*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W32_H64:
2565*c0909341SAndroid Build Coastguard Worker    //0-7
2566*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2567*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2568*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2569*c0909341SAndroid Build Coastguard Worker
2570*c0909341SAndroid Build Coastguard Worker    //8-15
2571*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2572*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2573*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2574*c0909341SAndroid Build Coastguard Worker
2575*c0909341SAndroid Build Coastguard Worker    //16-23
2576*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2577*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2578*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2579*c0909341SAndroid Build Coastguard Worker
2580*c0909341SAndroid Build Coastguard Worker    //24-31
2581*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2582*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2583*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2584*c0909341SAndroid Build Coastguard Worker
2585*c0909341SAndroid Build Coastguard Worker    //32-39
2586*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2587*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2588*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2589*c0909341SAndroid Build Coastguard Worker
2590*c0909341SAndroid Build Coastguard Worker    //40-47
2591*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2592*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2593*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80
2594*c0909341SAndroid Build Coastguard Worker
2595*c0909341SAndroid Build Coastguard Worker    //48-55
2596*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      47
2597*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2598*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96
2599*c0909341SAndroid Build Coastguard Worker
2600*c0909341SAndroid Build Coastguard Worker    //56-63
2601*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      55
2602*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2603*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      112
2604*c0909341SAndroid Build Coastguard Worker
2605*c0909341SAndroid Build Coastguard Worker    //64-71
2606*c0909341SAndroid Build Coastguard Worker    vldrepl.b      vr7,     a2,      63
2607*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_calc_other
2608*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      128
2609*c0909341SAndroid Build Coastguard Worker
2610*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      144 //72-79
2611*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      160 //80-87
2612*c0909341SAndroid Build Coastguard Worker
2613*c0909341SAndroid Build Coastguard Worker    //88-94
2614*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     176
2615*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     184,    2
2616*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     188,    6
2617*c0909341SAndroid Build Coastguard Worker
2618*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     63
2619*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     190
2620*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2621*c0909341SAndroid Build Coastguard Worker
2622*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W64:
2623*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W64_H16:
2624*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     16
2625*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W64_H32
2626*c0909341SAndroid Build Coastguard Worker
2627*c0909341SAndroid Build Coastguard Worker    //0-7
2628*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2629*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2630*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2631*c0909341SAndroid Build Coastguard Worker
2632*c0909341SAndroid Build Coastguard Worker    //8-15
2633*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2634*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2635*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2636*c0909341SAndroid Build Coastguard Worker
2637*c0909341SAndroid Build Coastguard Worker    //16-23
2638*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2639*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2640*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2641*c0909341SAndroid Build Coastguard Worker
2642*c0909341SAndroid Build Coastguard Worker    //24-31
2643*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2644*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2645*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2646*c0909341SAndroid Build Coastguard Worker
2647*c0909341SAndroid Build Coastguard Worker    //32-39
2648*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2649*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2650*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2651*c0909341SAndroid Build Coastguard Worker
2652*c0909341SAndroid Build Coastguard Worker    //40-47
2653*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2654*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2655*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80
2656*c0909341SAndroid Build Coastguard Worker
2657*c0909341SAndroid Build Coastguard Worker    //48-55
2658*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      47
2659*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2660*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96
2661*c0909341SAndroid Build Coastguard Worker
2662*c0909341SAndroid Build Coastguard Worker    //56-63
2663*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      55
2664*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2665*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      112
2666*c0909341SAndroid Build Coastguard Worker
2667*c0909341SAndroid Build Coastguard Worker    //64-71
2668*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      63
2669*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2670*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      128
2671*c0909341SAndroid Build Coastguard Worker
2672*c0909341SAndroid Build Coastguard Worker    //72-78
2673*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      71
2674*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2675*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     144
2676*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     152,    2
2677*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     156,    6
2678*c0909341SAndroid Build Coastguard Worker
2679*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     79
2680*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     158
2681*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2682*c0909341SAndroid Build Coastguard Worker
2683*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W64_H32:
2684*c0909341SAndroid Build Coastguard Worker    andi           t6,      a4,     32
2685*c0909341SAndroid Build Coastguard Worker    beqz           t6,      .Z1_UEDGE_W64_H64
2686*c0909341SAndroid Build Coastguard Worker
2687*c0909341SAndroid Build Coastguard Worker    //0-7
2688*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2689*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2690*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2691*c0909341SAndroid Build Coastguard Worker
2692*c0909341SAndroid Build Coastguard Worker    //8-15
2693*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2694*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2695*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2696*c0909341SAndroid Build Coastguard Worker
2697*c0909341SAndroid Build Coastguard Worker    //16-23
2698*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2699*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2700*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2701*c0909341SAndroid Build Coastguard Worker
2702*c0909341SAndroid Build Coastguard Worker    //24-31
2703*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2704*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2705*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2706*c0909341SAndroid Build Coastguard Worker
2707*c0909341SAndroid Build Coastguard Worker    //32-39
2708*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2709*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2710*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2711*c0909341SAndroid Build Coastguard Worker
2712*c0909341SAndroid Build Coastguard Worker    //40-47
2713*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2714*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2715*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80
2716*c0909341SAndroid Build Coastguard Worker
2717*c0909341SAndroid Build Coastguard Worker    //48-55
2718*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      47
2719*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2720*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96
2721*c0909341SAndroid Build Coastguard Worker
2722*c0909341SAndroid Build Coastguard Worker    //56-63
2723*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      55
2724*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2725*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      112
2726*c0909341SAndroid Build Coastguard Worker
2727*c0909341SAndroid Build Coastguard Worker    //64-71
2728*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      63
2729*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2730*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      128
2731*c0909341SAndroid Build Coastguard Worker
2732*c0909341SAndroid Build Coastguard Worker    //72-79
2733*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      71
2734*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2735*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      144
2736*c0909341SAndroid Build Coastguard Worker
2737*c0909341SAndroid Build Coastguard Worker    //80-87
2738*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      79
2739*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2740*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      160
2741*c0909341SAndroid Build Coastguard Worker
2742*c0909341SAndroid Build Coastguard Worker    //88-94
2743*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      87
2744*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2745*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,     176
2746*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,     184,    2
2747*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,     188,    6
2748*c0909341SAndroid Build Coastguard Worker
2749*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,     95
2750*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,     190
2751*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2752*c0909341SAndroid Build Coastguard Worker
2753*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_W64_H64:
2754*c0909341SAndroid Build Coastguard Worker    //0-7
2755*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2756*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2757*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,     0
2758*c0909341SAndroid Build Coastguard Worker
2759*c0909341SAndroid Build Coastguard Worker    //8-15
2760*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      7
2761*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2762*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      16
2763*c0909341SAndroid Build Coastguard Worker
2764*c0909341SAndroid Build Coastguard Worker    //16-23
2765*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      15
2766*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2767*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      32
2768*c0909341SAndroid Build Coastguard Worker
2769*c0909341SAndroid Build Coastguard Worker    //24-31
2770*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      23
2771*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2772*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      48
2773*c0909341SAndroid Build Coastguard Worker
2774*c0909341SAndroid Build Coastguard Worker    //32-39
2775*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      31
2776*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2777*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      64
2778*c0909341SAndroid Build Coastguard Worker
2779*c0909341SAndroid Build Coastguard Worker    //40-47
2780*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      39
2781*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2782*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      80
2783*c0909341SAndroid Build Coastguard Worker
2784*c0909341SAndroid Build Coastguard Worker    //48-55
2785*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      47
2786*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2787*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      96
2788*c0909341SAndroid Build Coastguard Worker
2789*c0909341SAndroid Build Coastguard Worker    //56-63
2790*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      55
2791*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2792*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      112
2793*c0909341SAndroid Build Coastguard Worker
2794*c0909341SAndroid Build Coastguard Worker    //64-71
2795*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      63
2796*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2797*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      128
2798*c0909341SAndroid Build Coastguard Worker
2799*c0909341SAndroid Build Coastguard Worker    //72-79
2800*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      71
2801*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2802*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      144
2803*c0909341SAndroid Build Coastguard Worker
2804*c0909341SAndroid Build Coastguard Worker    //80-87
2805*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      79
2806*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2807*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      160
2808*c0909341SAndroid Build Coastguard Worker
2809*c0909341SAndroid Build Coastguard Worker    //88-95
2810*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      87
2811*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2812*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      176
2813*c0909341SAndroid Build Coastguard Worker
2814*c0909341SAndroid Build Coastguard Worker    //96-103
2815*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      95
2816*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2817*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      192
2818*c0909341SAndroid Build Coastguard Worker
2819*c0909341SAndroid Build Coastguard Worker    //104-111
2820*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      103
2821*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2822*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      208
2823*c0909341SAndroid Build Coastguard Worker
2824*c0909341SAndroid Build Coastguard Worker    //112-119
2825*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      111
2826*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init1
2827*c0909341SAndroid Build Coastguard Worker    vst            vr13,    t2,      224
2828*c0909341SAndroid Build Coastguard Worker
2829*c0909341SAndroid Build Coastguard Worker    //120-126
2830*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      119
2831*c0909341SAndroid Build Coastguard Worker    z1_upsample_edge_data_init2
2832*c0909341SAndroid Build Coastguard Worker    fst.d          f13,     t2,      240
2833*c0909341SAndroid Build Coastguard Worker    vstelm.w       vr13,    t2,      248,    2
2834*c0909341SAndroid Build Coastguard Worker    vstelm.h       vr13,    t2,      252,    6
2835*c0909341SAndroid Build Coastguard Worker
2836*c0909341SAndroid Build Coastguard Worker    ld.bu          t7,      a2,      127
2837*c0909341SAndroid Build Coastguard Worker    st.b           t7,      t2,      254
2838*c0909341SAndroid Build Coastguard Worker    b              .Z1_UEDGE_END
2839*c0909341SAndroid Build Coastguard Worker
2840*c0909341SAndroid Build Coastguard Worker.Z1_UEDGE_END:
2841*c0909341SAndroid Build Coastguard Worker    //upsample_edge end
2842*c0909341SAndroid Build Coastguard Worker
2843*c0909341SAndroid Build Coastguard Worker    or             a7,      t2,      t2   //top
2844*c0909341SAndroid Build Coastguard Worker    add.d          t0,      a3,      a4
2845*c0909341SAndroid Build Coastguard Worker    slli.d         t0,      t0,      1
2846*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      t0,      -2   //max_base_x
2847*c0909341SAndroid Build Coastguard Worker    slli.d         t1,      t1,      1
2848*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_UA_END
2849*c0909341SAndroid Build Coastguard Worker
2850*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_NOTUA:
2851*c0909341SAndroid Build Coastguard Worker    or             t5,      zero,    zero  //upsample_above=0
2852*c0909341SAndroid Build Coastguard Worker    beqz           a7,      .IPRED_Z1_NOTFS
2853*c0909341SAndroid Build Coastguard Worker    add.d          a7,      a3,      a4  //w+h
2854*c0909341SAndroid Build Coastguard Worker    li.w           t4,      90
2855*c0909341SAndroid Build Coastguard Worker    sub.d          t4,      t4,      a5
2856*c0909341SAndroid Build Coastguard Worker    // ipred_get_filter_strength a6:filter_strength
2857*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .Z1_GETFS20
2858*c0909341SAndroid Build Coastguard Worker.Z1_GETFS10:  //wh<=8
2859*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -8
2860*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS11
2861*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -64
2862*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS101
2863*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    2
2864*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2865*c0909341SAndroid Build Coastguard Worker.Z1_GETFS101:
2866*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -40
2867*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2868*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2869*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2870*c0909341SAndroid Build Coastguard Worker.Z1_GETFS11:  //wh<=16
2871*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -16
2872*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS12
2873*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -48
2874*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS111
2875*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    2
2876*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2877*c0909341SAndroid Build Coastguard Worker.Z1_GETFS111:
2878*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -20
2879*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2880*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2881*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2882*c0909341SAndroid Build Coastguard Worker.Z1_GETFS12:  //wh<=24
2883*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -24
2884*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS13
2885*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -4
2886*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2887*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    3
2888*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2889*c0909341SAndroid Build Coastguard Worker.Z1_GETFS13:
2890*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    3
2891*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2892*c0909341SAndroid Build Coastguard Worker
2893*c0909341SAndroid Build Coastguard Worker.Z1_GETFS20:  //wh<=8
2894*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -8
2895*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS21
2896*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -56
2897*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2898*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2899*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2900*c0909341SAndroid Build Coastguard Worker.Z1_GETFS21:  //wh<=16
2901*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -16
2902*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS22
2903*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -40
2904*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2905*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2906*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2907*c0909341SAndroid Build Coastguard Worker.Z1_GETFS22:  //wh<=24
2908*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -24
2909*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS23
2910*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -32
2911*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS221
2912*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    3
2913*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2914*c0909341SAndroid Build Coastguard Worker.Z1_GETFS221:
2915*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -16
2916*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS222
2917*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    2
2918*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2919*c0909341SAndroid Build Coastguard Worker.Z1_GETFS222:
2920*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -8
2921*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS30
2922*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2923*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2924*c0909341SAndroid Build Coastguard Worker.Z1_GETFS23:  //wh<=32
2925*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      a7,      -32
2926*c0909341SAndroid Build Coastguard Worker    blt            zero,    t6,      .Z1_GETFS24
2927*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -32
2928*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS231
2929*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    3
2930*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2931*c0909341SAndroid Build Coastguard Worker.Z1_GETFS231:
2932*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t4,      -4
2933*c0909341SAndroid Build Coastguard Worker    blt            t6,      zero,    .Z1_GETFS232
2934*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    2
2935*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2936*c0909341SAndroid Build Coastguard Worker.Z1_GETFS232:
2937*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    1
2938*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2939*c0909341SAndroid Build Coastguard Worker.Z1_GETFS24:
2940*c0909341SAndroid Build Coastguard Worker    ori            a6,      zero,    3
2941*c0909341SAndroid Build Coastguard Worker    b              .Z1_GETFS40
2942*c0909341SAndroid Build Coastguard Worker.Z1_GETFS30:
2943*c0909341SAndroid Build Coastguard Worker   or              a6,      zero,    zero
2944*c0909341SAndroid Build Coastguard Worker.Z1_GETFS40:
2945*c0909341SAndroid Build Coastguard Worker
2946*c0909341SAndroid Build Coastguard Worker    beqz           a6,      .IPRED_Z1_NOTFS
2947*c0909341SAndroid Build Coastguard Worker
2948*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_IFFS:
2949*c0909341SAndroid Build Coastguard Worker    // filter_edge
2950*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      -1
2951*c0909341SAndroid Build Coastguard Worker    slli.d         a6,      a6,      4
2952*c0909341SAndroid Build Coastguard Worker    la.local       t0,      ipred_filter_edge_kernel1
2953*c0909341SAndroid Build Coastguard Worker    vldx           vr1,     t0,      a6    //kernel[0-3]
2954*c0909341SAndroid Build Coastguard Worker
2955*c0909341SAndroid Build Coastguard Worker    la.local       t0,      ipred_filter_edge_kernel2
2956*c0909341SAndroid Build Coastguard Worker    vldx           vr6,     t0,      a6    //kernel[4]
2957*c0909341SAndroid Build Coastguard Worker
2958*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4:
2959*c0909341SAndroid Build Coastguard Worker    andi           t0,      a3,      4
2960*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W8
2961*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4_H4:
2962*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      4
2963*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W4_H8
2964*c0909341SAndroid Build Coastguard Worker
2965*c0909341SAndroid Build Coastguard Worker    //0-7
2966*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2967*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init4
2968*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2969*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
2970*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
2971*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
2972*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
2973*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
2974*c0909341SAndroid Build Coastguard Worker
2975*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4_H8:
2976*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      8
2977*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W4_H16
2978*c0909341SAndroid Build Coastguard Worker
2979*c0909341SAndroid Build Coastguard Worker    //0-7
2980*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
2981*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init4
2982*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
2983*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
2984*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
2985*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
2986*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
2987*c0909341SAndroid Build Coastguard Worker
2988*c0909341SAndroid Build Coastguard Worker    //8-11
2989*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     8
2990*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x07
2991*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
2992*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      8
2993*c0909341SAndroid Build Coastguard Worker
2994*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
2995*c0909341SAndroid Build Coastguard Worker
2996*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4_H16:
2997*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      16
2998*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W4_H32
2999*c0909341SAndroid Build Coastguard Worker
3000*c0909341SAndroid Build Coastguard Worker    //0-7
3001*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3002*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init4
3003*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3004*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3005*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3006*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3007*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3008*c0909341SAndroid Build Coastguard Worker
3009*c0909341SAndroid Build Coastguard Worker    //8-15
3010*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     8
3011*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x07
3012*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3013*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3014*c0909341SAndroid Build Coastguard Worker
3015*c0909341SAndroid Build Coastguard Worker    //16-19
3016*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3017*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      16
3018*c0909341SAndroid Build Coastguard Worker
3019*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3020*c0909341SAndroid Build Coastguard Worker
3021*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4_H32:
3022*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      32
3023*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W4_H64
3024*c0909341SAndroid Build Coastguard Worker
3025*c0909341SAndroid Build Coastguard Worker    //0-7
3026*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3027*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init4
3028*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3029*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3030*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3031*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3032*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3033*c0909341SAndroid Build Coastguard Worker
3034*c0909341SAndroid Build Coastguard Worker    //8-15
3035*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     8
3036*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x07
3037*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3038*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3039*c0909341SAndroid Build Coastguard Worker
3040*c0909341SAndroid Build Coastguard Worker    //16-23
3041*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3042*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3043*c0909341SAndroid Build Coastguard Worker
3044*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24 //24-31
3045*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      32 //32-35
3046*c0909341SAndroid Build Coastguard Worker
3047*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3048*c0909341SAndroid Build Coastguard Worker
3049*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W4_H64:
3050*c0909341SAndroid Build Coastguard Worker    //0-7
3051*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3052*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init4
3053*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3054*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3055*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3056*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3057*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3058*c0909341SAndroid Build Coastguard Worker
3059*c0909341SAndroid Build Coastguard Worker    //8-15
3060*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     8
3061*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x07
3062*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3063*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3064*c0909341SAndroid Build Coastguard Worker
3065*c0909341SAndroid Build Coastguard Worker    //16-23
3066*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3067*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3068*c0909341SAndroid Build Coastguard Worker
3069*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24 //24-31
3070*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32 //32-39
3071*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40 //40-47
3072*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48 //48-55
3073*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56 //56-63
3074*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      64 //64-67
3075*c0909341SAndroid Build Coastguard Worker
3076*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3077*c0909341SAndroid Build Coastguard Worker
3078*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8:
3079*c0909341SAndroid Build Coastguard Worker    andi           t0,      a3,      8
3080*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W16
3081*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8_H4:
3082*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      4
3083*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W8_H8
3084*c0909341SAndroid Build Coastguard Worker
3085*c0909341SAndroid Build Coastguard Worker    //0-7
3086*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3087*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3088*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3089*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3090*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3091*c0909341SAndroid Build Coastguard Worker
3092*c0909341SAndroid Build Coastguard Worker    //8-11
3093*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3094*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
3095*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
3096*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3097*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x32
3098*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
3099*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr11,    0
3100*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
3101*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
3102*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
3103*c0909341SAndroid Build Coastguard Worker
3104*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3105*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x21
3106*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x31
3107*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3108*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      8
3109*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3110*c0909341SAndroid Build Coastguard Worker
3111*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8_H8:
3112*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      8
3113*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W8_H16
3114*c0909341SAndroid Build Coastguard Worker
3115*c0909341SAndroid Build Coastguard Worker    //0-7
3116*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3117*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3118*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3119*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3120*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3121*c0909341SAndroid Build Coastguard Worker
3122*c0909341SAndroid Build Coastguard Worker    //8-15
3123*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3124*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3125*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3126*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3127*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3128*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3129*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3130*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3131*c0909341SAndroid Build Coastguard Worker
3132*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8_H16:
3133*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      16
3134*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W8_H32
3135*c0909341SAndroid Build Coastguard Worker
3136*c0909341SAndroid Build Coastguard Worker    //0-7
3137*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3138*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3139*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3140*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3141*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3142*c0909341SAndroid Build Coastguard Worker
3143*c0909341SAndroid Build Coastguard Worker    //8-15
3144*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3145*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3146*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3147*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3148*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3149*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3150*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3151*c0909341SAndroid Build Coastguard Worker
3152*c0909341SAndroid Build Coastguard Worker    //16-23
3153*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3154*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3155*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3156*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3157*c0909341SAndroid Build Coastguard Worker
3158*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3159*c0909341SAndroid Build Coastguard Worker
3160*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8_H32:
3161*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      32
3162*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W8_H64
3163*c0909341SAndroid Build Coastguard Worker
3164*c0909341SAndroid Build Coastguard Worker    //0-7
3165*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3166*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3167*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3168*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3169*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3170*c0909341SAndroid Build Coastguard Worker
3171*c0909341SAndroid Build Coastguard Worker    //8-15
3172*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3173*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3174*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3175*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3176*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3177*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3178*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3179*c0909341SAndroid Build Coastguard Worker
3180*c0909341SAndroid Build Coastguard Worker    //16-23
3181*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3182*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3183*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3184*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3185*c0909341SAndroid Build Coastguard Worker
3186*c0909341SAndroid Build Coastguard Worker    //24-31
3187*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3188*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3189*c0909341SAndroid Build Coastguard Worker
3190*c0909341SAndroid Build Coastguard Worker    //32-39
3191*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3192*c0909341SAndroid Build Coastguard Worker
3193*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3194*c0909341SAndroid Build Coastguard Worker
3195*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W8_H64:
3196*c0909341SAndroid Build Coastguard Worker    //0-7
3197*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3198*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3199*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3200*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3201*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3202*c0909341SAndroid Build Coastguard Worker
3203*c0909341SAndroid Build Coastguard Worker    //8-15
3204*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3205*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3206*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3207*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3208*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3209*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3210*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3211*c0909341SAndroid Build Coastguard Worker
3212*c0909341SAndroid Build Coastguard Worker    //16-23
3213*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3214*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3215*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3216*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3217*c0909341SAndroid Build Coastguard Worker
3218*c0909341SAndroid Build Coastguard Worker    //24-31
3219*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3220*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3221*c0909341SAndroid Build Coastguard Worker
3222*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32  //32-39
3223*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40  //40-47
3224*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48  //48-55
3225*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56  //56-63
3226*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64  //64-71
3227*c0909341SAndroid Build Coastguard Worker
3228*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3229*c0909341SAndroid Build Coastguard Worker
3230*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16:
3231*c0909341SAndroid Build Coastguard Worker    andi           t0,      a3,      16
3232*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W32
3233*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16_H4:
3234*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      4
3235*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W16_H8
3236*c0909341SAndroid Build Coastguard Worker
3237*c0909341SAndroid Build Coastguard Worker    //0-7
3238*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3239*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3240*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3241*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3242*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3243*c0909341SAndroid Build Coastguard Worker
3244*c0909341SAndroid Build Coastguard Worker    //8-15
3245*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3246*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3247*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3248*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3249*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3250*c0909341SAndroid Build Coastguard Worker
3251*c0909341SAndroid Build Coastguard Worker    //16-19
3252*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3253*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr11,    vr7,     1
3254*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr12,    vr7,     2
3255*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3256*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x32
3257*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr10,    vr7,     0
3258*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr11,    vr11,    0
3259*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr12,    vr12,    0
3260*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr13,    vr13,    0
3261*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop1
3262*c0909341SAndroid Build Coastguard Worker
3263*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3264*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x21
3265*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x31
3266*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3267*c0909341SAndroid Build Coastguard Worker    fst.s          f12,     t2,      16
3268*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3269*c0909341SAndroid Build Coastguard Worker
3270*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16_H8:
3271*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      8
3272*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W16_H16
3273*c0909341SAndroid Build Coastguard Worker
3274*c0909341SAndroid Build Coastguard Worker    //0-7
3275*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3276*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3277*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3278*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3279*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3280*c0909341SAndroid Build Coastguard Worker
3281*c0909341SAndroid Build Coastguard Worker    //8-15
3282*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3283*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3284*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3285*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3286*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3287*c0909341SAndroid Build Coastguard Worker
3288*c0909341SAndroid Build Coastguard Worker    //16-23
3289*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3290*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3291*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3292*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3293*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3294*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3295*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3296*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3297*c0909341SAndroid Build Coastguard Worker
3298*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16_H16:
3299*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      16
3300*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W16_H32
3301*c0909341SAndroid Build Coastguard Worker
3302*c0909341SAndroid Build Coastguard Worker    //0-7
3303*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3304*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3305*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3306*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3307*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3308*c0909341SAndroid Build Coastguard Worker
3309*c0909341SAndroid Build Coastguard Worker    //8-15
3310*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3311*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3312*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3313*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3314*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3315*c0909341SAndroid Build Coastguard Worker
3316*c0909341SAndroid Build Coastguard Worker    //16-23
3317*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3318*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3319*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3320*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3321*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3322*c0909341SAndroid Build Coastguard Worker
3323*c0909341SAndroid Build Coastguard Worker    //24-31
3324*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3325*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3326*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3327*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3328*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3329*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3330*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3331*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3332*c0909341SAndroid Build Coastguard Worker
3333*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16_H32:
3334*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      32
3335*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W16_H64
3336*c0909341SAndroid Build Coastguard Worker
3337*c0909341SAndroid Build Coastguard Worker    //0-7
3338*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3339*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3340*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3341*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3342*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3343*c0909341SAndroid Build Coastguard Worker
3344*c0909341SAndroid Build Coastguard Worker    //8-15
3345*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3346*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3347*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3348*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3349*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3350*c0909341SAndroid Build Coastguard Worker
3351*c0909341SAndroid Build Coastguard Worker    //16-23
3352*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3353*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3354*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3355*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3356*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3357*c0909341SAndroid Build Coastguard Worker
3358*c0909341SAndroid Build Coastguard Worker    //24-31
3359*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3360*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3361*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3362*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3363*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3364*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3365*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3366*c0909341SAndroid Build Coastguard Worker
3367*c0909341SAndroid Build Coastguard Worker    //32-39
3368*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3369*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3370*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3371*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3372*c0909341SAndroid Build Coastguard Worker
3373*c0909341SAndroid Build Coastguard Worker    //40-47
3374*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3375*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3376*c0909341SAndroid Build Coastguard Worker
3377*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3378*c0909341SAndroid Build Coastguard Worker
3379*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W16_H64:
3380*c0909341SAndroid Build Coastguard Worker    //0-7
3381*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3382*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3383*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3384*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3385*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3386*c0909341SAndroid Build Coastguard Worker
3387*c0909341SAndroid Build Coastguard Worker    //8-15
3388*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3389*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3390*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3391*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3392*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3393*c0909341SAndroid Build Coastguard Worker
3394*c0909341SAndroid Build Coastguard Worker    //16-23
3395*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3396*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3397*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3398*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3399*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3400*c0909341SAndroid Build Coastguard Worker
3401*c0909341SAndroid Build Coastguard Worker    //24-31
3402*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3403*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3404*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3405*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3406*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3407*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3408*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3409*c0909341SAndroid Build Coastguard Worker
3410*c0909341SAndroid Build Coastguard Worker    //32-39
3411*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3412*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3413*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3414*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3415*c0909341SAndroid Build Coastguard Worker
3416*c0909341SAndroid Build Coastguard Worker    //40-47
3417*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3418*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3419*c0909341SAndroid Build Coastguard Worker
3420*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48 //48-55
3421*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56 //56-63
3422*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64 //64-71
3423*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      72 //72-81
3424*c0909341SAndroid Build Coastguard Worker
3425*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3426*c0909341SAndroid Build Coastguard Worker
3427*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W32:
3428*c0909341SAndroid Build Coastguard Worker    andi           t0,      a3,      32
3429*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W64
3430*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W32_H8:
3431*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      8
3432*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W32_H16
3433*c0909341SAndroid Build Coastguard Worker
3434*c0909341SAndroid Build Coastguard Worker    //0-7
3435*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3436*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3437*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3438*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3439*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3440*c0909341SAndroid Build Coastguard Worker
3441*c0909341SAndroid Build Coastguard Worker    //8-15
3442*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3443*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3444*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3445*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3446*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3447*c0909341SAndroid Build Coastguard Worker
3448*c0909341SAndroid Build Coastguard Worker    //16-23
3449*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3450*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3451*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3452*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3453*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3454*c0909341SAndroid Build Coastguard Worker
3455*c0909341SAndroid Build Coastguard Worker    //24-31
3456*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3457*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3458*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3459*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3460*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3461*c0909341SAndroid Build Coastguard Worker
3462*c0909341SAndroid Build Coastguard Worker    //32-39
3463*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3464*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3465*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3466*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3467*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3468*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3469*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3470*c0909341SAndroid Build Coastguard Worker
3471*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3472*c0909341SAndroid Build Coastguard Worker
3473*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W32_H16:
3474*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      16
3475*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W32_H32
3476*c0909341SAndroid Build Coastguard Worker
3477*c0909341SAndroid Build Coastguard Worker    //0-7
3478*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3479*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3480*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3481*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3482*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3483*c0909341SAndroid Build Coastguard Worker
3484*c0909341SAndroid Build Coastguard Worker    //8-15
3485*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3486*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3487*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3488*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3489*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3490*c0909341SAndroid Build Coastguard Worker
3491*c0909341SAndroid Build Coastguard Worker    //16-23
3492*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3493*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3494*c0909341SAndroid Build Coastguard Worker
3495*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3496*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3497*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3498*c0909341SAndroid Build Coastguard Worker
3499*c0909341SAndroid Build Coastguard Worker    //24-31
3500*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3501*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3502*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3503*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3504*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3505*c0909341SAndroid Build Coastguard Worker
3506*c0909341SAndroid Build Coastguard Worker    //32-39
3507*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3508*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3509*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3510*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3511*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3512*c0909341SAndroid Build Coastguard Worker
3513*c0909341SAndroid Build Coastguard Worker    //40-47
3514*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3515*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3516*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3517*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3518*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3519*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3520*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3521*c0909341SAndroid Build Coastguard Worker
3522*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3523*c0909341SAndroid Build Coastguard Worker
3524*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W32_H32:
3525*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      32
3526*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W32_H64
3527*c0909341SAndroid Build Coastguard Worker
3528*c0909341SAndroid Build Coastguard Worker    //0-7
3529*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3530*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3531*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3532*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3533*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3534*c0909341SAndroid Build Coastguard Worker
3535*c0909341SAndroid Build Coastguard Worker    //8-15
3536*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3537*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3538*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3539*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3540*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3541*c0909341SAndroid Build Coastguard Worker
3542*c0909341SAndroid Build Coastguard Worker    //16-23
3543*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3544*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3545*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3546*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3547*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3548*c0909341SAndroid Build Coastguard Worker
3549*c0909341SAndroid Build Coastguard Worker    //24-31
3550*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3551*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3552*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3553*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3554*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3555*c0909341SAndroid Build Coastguard Worker
3556*c0909341SAndroid Build Coastguard Worker    //32-39
3557*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3558*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3559*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3560*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3561*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3562*c0909341SAndroid Build Coastguard Worker
3563*c0909341SAndroid Build Coastguard Worker    //40-47
3564*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3565*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3566*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3567*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3568*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3569*c0909341SAndroid Build Coastguard Worker
3570*c0909341SAndroid Build Coastguard Worker    //48-55
3571*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      46
3572*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3573*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3574*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3575*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48
3576*c0909341SAndroid Build Coastguard Worker
3577*c0909341SAndroid Build Coastguard Worker    //56-63
3578*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      54
3579*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3580*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3581*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3582*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3583*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3584*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56
3585*c0909341SAndroid Build Coastguard Worker
3586*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3587*c0909341SAndroid Build Coastguard Worker
3588*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W32_H64:
3589*c0909341SAndroid Build Coastguard Worker    //0-7
3590*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3591*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3592*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3593*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3594*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3595*c0909341SAndroid Build Coastguard Worker
3596*c0909341SAndroid Build Coastguard Worker    //8-15
3597*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3598*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3599*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3600*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3601*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3602*c0909341SAndroid Build Coastguard Worker
3603*c0909341SAndroid Build Coastguard Worker    //16-23
3604*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3605*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3606*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3607*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3608*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3609*c0909341SAndroid Build Coastguard Worker
3610*c0909341SAndroid Build Coastguard Worker    //24-31
3611*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3612*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3613*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3614*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3615*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3616*c0909341SAndroid Build Coastguard Worker
3617*c0909341SAndroid Build Coastguard Worker    //32-39
3618*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3619*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3620*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3621*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3622*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3623*c0909341SAndroid Build Coastguard Worker
3624*c0909341SAndroid Build Coastguard Worker    //40-47
3625*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3626*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3627*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3628*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3629*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3630*c0909341SAndroid Build Coastguard Worker
3631*c0909341SAndroid Build Coastguard Worker    //48-55
3632*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      46
3633*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3634*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3635*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3636*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48
3637*c0909341SAndroid Build Coastguard Worker
3638*c0909341SAndroid Build Coastguard Worker    //56-63
3639*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      54
3640*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3641*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3642*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3643*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3644*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3645*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56
3646*c0909341SAndroid Build Coastguard Worker
3647*c0909341SAndroid Build Coastguard Worker    //64-71
3648*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr10,    vr7,     9
3649*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr10,    vr7,     0x08
3650*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_other
3651*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64
3652*c0909341SAndroid Build Coastguard Worker
3653*c0909341SAndroid Build Coastguard Worker    //72-89
3654*c0909341SAndroid Build Coastguard Worker    vreplvei.b     vr12,    vr12,    1
3655*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      72
3656*c0909341SAndroid Build Coastguard Worker
3657*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      80 //80-87
3658*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      88 //88-95
3659*c0909341SAndroid Build Coastguard Worker
3660*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3661*c0909341SAndroid Build Coastguard Worker
3662*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W64:
3663*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W64_H16:
3664*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      16
3665*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W64_H32
3666*c0909341SAndroid Build Coastguard Worker
3667*c0909341SAndroid Build Coastguard Worker    //0-7
3668*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3669*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3670*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3671*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3672*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3673*c0909341SAndroid Build Coastguard Worker
3674*c0909341SAndroid Build Coastguard Worker    //8-15
3675*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3676*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3677*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3678*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3679*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3680*c0909341SAndroid Build Coastguard Worker
3681*c0909341SAndroid Build Coastguard Worker    //16-23
3682*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3683*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3684*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3685*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3686*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3687*c0909341SAndroid Build Coastguard Worker
3688*c0909341SAndroid Build Coastguard Worker    //24-31
3689*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3690*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3691*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3692*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3693*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3694*c0909341SAndroid Build Coastguard Worker
3695*c0909341SAndroid Build Coastguard Worker    //32-39
3696*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3697*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3698*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3699*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3700*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3701*c0909341SAndroid Build Coastguard Worker
3702*c0909341SAndroid Build Coastguard Worker    //40-47
3703*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3704*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3705*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3706*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3707*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3708*c0909341SAndroid Build Coastguard Worker
3709*c0909341SAndroid Build Coastguard Worker    //48-55
3710*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      46
3711*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3712*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3713*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3714*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48
3715*c0909341SAndroid Build Coastguard Worker
3716*c0909341SAndroid Build Coastguard Worker    //56-63
3717*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      54
3718*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3719*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3720*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3721*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56
3722*c0909341SAndroid Build Coastguard Worker
3723*c0909341SAndroid Build Coastguard Worker    //64-71
3724*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      62
3725*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3726*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3727*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3728*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64
3729*c0909341SAndroid Build Coastguard Worker
3730*c0909341SAndroid Build Coastguard Worker    //72-79
3731*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      70
3732*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3733*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3734*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3735*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3736*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3737*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      72
3738*c0909341SAndroid Build Coastguard Worker
3739*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3740*c0909341SAndroid Build Coastguard Worker
3741*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W64_H32:
3742*c0909341SAndroid Build Coastguard Worker    andi           t0,      a4,      32
3743*c0909341SAndroid Build Coastguard Worker    beqz           t0,      .IPRED_Z1_FS_W64_H64
3744*c0909341SAndroid Build Coastguard Worker
3745*c0909341SAndroid Build Coastguard Worker    //0-7
3746*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3747*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3748*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3749*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3750*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3751*c0909341SAndroid Build Coastguard Worker
3752*c0909341SAndroid Build Coastguard Worker    //8-15
3753*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3754*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3755*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3756*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3757*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3758*c0909341SAndroid Build Coastguard Worker
3759*c0909341SAndroid Build Coastguard Worker    //16-23
3760*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3761*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3762*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3763*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3764*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3765*c0909341SAndroid Build Coastguard Worker
3766*c0909341SAndroid Build Coastguard Worker    //24-31
3767*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3768*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3769*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3770*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3771*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3772*c0909341SAndroid Build Coastguard Worker
3773*c0909341SAndroid Build Coastguard Worker    //32-39
3774*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3775*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3776*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3777*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3778*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3779*c0909341SAndroid Build Coastguard Worker
3780*c0909341SAndroid Build Coastguard Worker    //40-47
3781*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3782*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3783*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3784*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3785*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3786*c0909341SAndroid Build Coastguard Worker
3787*c0909341SAndroid Build Coastguard Worker    //48-55
3788*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      46
3789*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3790*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3791*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3792*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48
3793*c0909341SAndroid Build Coastguard Worker
3794*c0909341SAndroid Build Coastguard Worker    //56-63
3795*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      54
3796*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3797*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3798*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3799*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56
3800*c0909341SAndroid Build Coastguard Worker
3801*c0909341SAndroid Build Coastguard Worker    //64-71
3802*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      62
3803*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3804*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3805*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3806*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64
3807*c0909341SAndroid Build Coastguard Worker
3808*c0909341SAndroid Build Coastguard Worker    //72-79
3809*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      70
3810*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3811*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3812*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3813*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      72
3814*c0909341SAndroid Build Coastguard Worker
3815*c0909341SAndroid Build Coastguard Worker    //80-87
3816*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      78
3817*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3818*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3819*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3820*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      80
3821*c0909341SAndroid Build Coastguard Worker
3822*c0909341SAndroid Build Coastguard Worker    //88-95
3823*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      86
3824*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3825*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3826*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3827*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3828*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3829*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      88
3830*c0909341SAndroid Build Coastguard Worker
3831*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_FS_END
3832*c0909341SAndroid Build Coastguard Worker
3833*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_W64_H64:
3834*c0909341SAndroid Build Coastguard Worker    //0-7
3835*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      -1
3836*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init1
3837*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     3
3838*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3839*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      0
3840*c0909341SAndroid Build Coastguard Worker
3841*c0909341SAndroid Build Coastguard Worker    //8-15
3842*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      6
3843*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3844*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3845*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3846*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      8
3847*c0909341SAndroid Build Coastguard Worker
3848*c0909341SAndroid Build Coastguard Worker    //16-23
3849*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      14
3850*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3851*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3852*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3853*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      16
3854*c0909341SAndroid Build Coastguard Worker
3855*c0909341SAndroid Build Coastguard Worker    //24-31
3856*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      22
3857*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3858*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3859*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3860*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      24
3861*c0909341SAndroid Build Coastguard Worker
3862*c0909341SAndroid Build Coastguard Worker    //32-39
3863*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      30
3864*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3865*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3866*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3867*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      32
3868*c0909341SAndroid Build Coastguard Worker
3869*c0909341SAndroid Build Coastguard Worker    //40-47
3870*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      38
3871*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3872*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3873*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3874*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      40
3875*c0909341SAndroid Build Coastguard Worker
3876*c0909341SAndroid Build Coastguard Worker    //48-55
3877*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      46
3878*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3879*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3880*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3881*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      48
3882*c0909341SAndroid Build Coastguard Worker
3883*c0909341SAndroid Build Coastguard Worker    //56-63
3884*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      54
3885*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3886*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3887*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3888*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      56
3889*c0909341SAndroid Build Coastguard Worker
3890*c0909341SAndroid Build Coastguard Worker    //64-71
3891*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      62
3892*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3893*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3894*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3895*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      64
3896*c0909341SAndroid Build Coastguard Worker
3897*c0909341SAndroid Build Coastguard Worker    //72-79
3898*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      70
3899*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3900*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3901*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3902*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      72
3903*c0909341SAndroid Build Coastguard Worker
3904*c0909341SAndroid Build Coastguard Worker    //80-87
3905*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      78
3906*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3907*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3908*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3909*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      80
3910*c0909341SAndroid Build Coastguard Worker
3911*c0909341SAndroid Build Coastguard Worker    //88-95
3912*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      86
3913*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3914*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3915*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3916*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      88
3917*c0909341SAndroid Build Coastguard Worker
3918*c0909341SAndroid Build Coastguard Worker    //96-103
3919*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      94
3920*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3921*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3922*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3923*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      96
3924*c0909341SAndroid Build Coastguard Worker
3925*c0909341SAndroid Build Coastguard Worker    //104-111
3926*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      102
3927*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3928*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3929*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3930*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      104
3931*c0909341SAndroid Build Coastguard Worker
3932*c0909341SAndroid Build Coastguard Worker    //112-119
3933*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      110
3934*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init2
3935*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3936*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3937*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      112
3938*c0909341SAndroid Build Coastguard Worker
3939*c0909341SAndroid Build Coastguard Worker    //120-127
3940*c0909341SAndroid Build Coastguard Worker    vld            vr7,     a2,      118
3941*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_data_init3
3942*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr13,    vr7,     4
3943*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x65
3944*c0909341SAndroid Build Coastguard Worker    vextrins.b     vr13,    vr13,    0x75
3945*c0909341SAndroid Build Coastguard Worker    z1_filter_edge_calc_loop2
3946*c0909341SAndroid Build Coastguard Worker    fst.d          f12,     t2,      120
3947*c0909341SAndroid Build Coastguard Worker
3948*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_FS_END:
3949*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      a7,      -1   //max_base_x
3950*c0909341SAndroid Build Coastguard Worker    or             a7,      t2,      t2   //top
3951*c0909341SAndroid Build Coastguard Worker    b              .IPRED_Z1_UA_END
3952*c0909341SAndroid Build Coastguard Worker
3953*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_NOTFS:
3954*c0909341SAndroid Build Coastguard Worker    or             a7,      a2,      a2   //top
3955*c0909341SAndroid Build Coastguard Worker    // imin_gr
3956*c0909341SAndroid Build Coastguard Worker    blt            a3,      a4,      .Z1_IMIN1
3957*c0909341SAndroid Build Coastguard Worker    or             t0,      a4,      a4
3958*c0909341SAndroid Build Coastguard Worker    b              .Z1_IMIN2
3959*c0909341SAndroid Build Coastguard Worker.Z1_IMIN1:
3960*c0909341SAndroid Build Coastguard Worker    or             t0,      a3,      a3
3961*c0909341SAndroid Build Coastguard Worker.Z1_IMIN2:
3962*c0909341SAndroid Build Coastguard Worker
3963*c0909341SAndroid Build Coastguard Worker    add.d          t0,      a3,      t0
3964*c0909341SAndroid Build Coastguard Worker    addi.d         t0,      t0,      -1   //max_base_x
3965*c0909341SAndroid Build Coastguard Worker
3966*c0909341SAndroid Build Coastguard Worker.IPRED_Z1_UA_END:
3967*c0909341SAndroid Build Coastguard Worker    //st dst, t1:dx  a2 a6 t6 t7
3968*c0909341SAndroid Build Coastguard Worker    beqz           t5,      .Z1_UA0
3969*c0909341SAndroid Build Coastguard Worker
3970*c0909341SAndroid Build Coastguard Worker    li.w           a5,      64
3971*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr0,     a5
3972*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr7,     vr0,     1
3973*c0909341SAndroid Build Coastguard Worker    or             t2,      zero,    zero  //y
3974*c0909341SAndroid Build Coastguard Worker    or             t3,      t1,      t1    //xpos
3975*c0909341SAndroid Build Coastguard Worker.Z1_LOOPY:
3976*c0909341SAndroid Build Coastguard Worker    andi           t4,      t3,      0x3e  //frac
3977*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr1,     t4
3978*c0909341SAndroid Build Coastguard Worker    vsub.h         vr2,     vr0,     vr1
3979*c0909341SAndroid Build Coastguard Worker    or             a6,      zero,    zero  //x
3980*c0909341SAndroid Build Coastguard Worker    or             a2,      zero,    zero  //base_num
3981*c0909341SAndroid Build Coastguard Worker    srai.d         t6,      t3,      6     //base
3982*c0909341SAndroid Build Coastguard Worker
3983*c0909341SAndroid Build Coastguard Worker    or             t7,      t6,      t6
3984*c0909341SAndroid Build Coastguard Worker    bge            t7,      t0,      .Z1_LOOPX
3985*c0909341SAndroid Build Coastguard Worker.Z1_BASENUM:
3986*c0909341SAndroid Build Coastguard Worker    addi.d         a2,      a2,      1
3987*c0909341SAndroid Build Coastguard Worker    addi.d         t7,      t7,      2
3988*c0909341SAndroid Build Coastguard Worker    blt            t7,      t0,      .Z1_BASENUM
3989*c0909341SAndroid Build Coastguard Worker
3990*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX:
3991*c0909341SAndroid Build Coastguard Worker    blt            a2,      a3,      .Z1_LOOPX_BASEMAX
3992*c0909341SAndroid Build Coastguard Worker
3993*c0909341SAndroid Build Coastguard Worker    srai.d         t8,      a3,      3  //loop param
3994*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_LOOPX_W4
3995*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_W8:
3996*c0909341SAndroid Build Coastguard Worker    add.d          t5,      a7,      t6
3997*c0909341SAndroid Build Coastguard Worker    vld            vr3,     t5,      0
3998*c0909341SAndroid Build Coastguard Worker    vpickev.b      vr5,     vr3,     vr3  //0 2 4 6...
3999*c0909341SAndroid Build Coastguard Worker    vpickod.b      vr6,     vr3,     vr3  //1 3 5 7...
4000*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4001*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
4002*c0909341SAndroid Build Coastguard Worker
4003*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4004*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4005*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4006*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4007*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4008*c0909341SAndroid Build Coastguard Worker    fstx.d         f3,      a0,      a6
4009*c0909341SAndroid Build Coastguard Worker
4010*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      8
4011*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      16
4012*c0909341SAndroid Build Coastguard Worker    addi.d         t8,      t8,      -1
4013*c0909341SAndroid Build Coastguard Worker    bnez           t8,      .Z1_LOOPX_W8
4014*c0909341SAndroid Build Coastguard Worker    b              .Z1_LOOPY_END
4015*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_W4:
4016*c0909341SAndroid Build Coastguard Worker    vldx           vr3,     a7,      t6
4017*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
4018*c0909341SAndroid Build Coastguard Worker    vpickev.h      vr5,     vr3,     vr3  //0 2 4 6...
4019*c0909341SAndroid Build Coastguard Worker    vpickod.h      vr6,     vr3,     vr3  //1 3 5 7...
4020*c0909341SAndroid Build Coastguard Worker
4021*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4022*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4023*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4024*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4025*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4026*c0909341SAndroid Build Coastguard Worker    fstx.s         f3,      a0,      a6
4027*c0909341SAndroid Build Coastguard Worker    b              .Z1_LOOPY_END
4028*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX:
4029*c0909341SAndroid Build Coastguard Worker    srai.d         t8,      a2,      3  //loop param
4030*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_LOOPX_BASEMAX4
4031*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX8:
4032*c0909341SAndroid Build Coastguard Worker    add.d          t5,      a7,      t6
4033*c0909341SAndroid Build Coastguard Worker    vld            vr3,     t5,      0
4034*c0909341SAndroid Build Coastguard Worker    vpickev.b      vr5,     vr3,     vr3  //0 2 4 6...
4035*c0909341SAndroid Build Coastguard Worker    vpickod.b      vr6,     vr3,     vr3  //1 3 5 7...
4036*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4037*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
4038*c0909341SAndroid Build Coastguard Worker
4039*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4040*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4041*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4042*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4043*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4044*c0909341SAndroid Build Coastguard Worker    fstx.d         f3,      a0,      a6
4045*c0909341SAndroid Build Coastguard Worker
4046*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      8
4047*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      16
4048*c0909341SAndroid Build Coastguard Worker    addi.d         t8,      t8,      -1
4049*c0909341SAndroid Build Coastguard Worker    bnez           t8,      .Z1_LOOPX_BASEMAX8
4050*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX4:
4051*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,      4
4052*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_LOOPX_BASEMAX2
4053*c0909341SAndroid Build Coastguard Worker
4054*c0909341SAndroid Build Coastguard Worker    vldx           vr3,     a7,      t6
4055*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
4056*c0909341SAndroid Build Coastguard Worker    vpickev.h      vr5,     vr3,     vr3  //0 2 4 6...
4057*c0909341SAndroid Build Coastguard Worker    vpickod.h      vr6,     vr3,     vr3  //1 3 5 7...
4058*c0909341SAndroid Build Coastguard Worker
4059*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4060*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4061*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4062*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4063*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4064*c0909341SAndroid Build Coastguard Worker    fstx.s         f3,      a0,      a6
4065*c0909341SAndroid Build Coastguard Worker
4066*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      4
4067*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      8
4068*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX2:
4069*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,     2
4070*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_LOOPX_BASEMAX1
4071*c0909341SAndroid Build Coastguard Worker
4072*c0909341SAndroid Build Coastguard Worker    vldx           vr3,     a7,      t6
4073*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr3,     vr3,     0
4074*c0909341SAndroid Build Coastguard Worker    vpickev.h      vr5,     vr3,     vr3  //0 2 4 6...
4075*c0909341SAndroid Build Coastguard Worker    vpickod.h      vr6,     vr3,     vr3  //1 3 5 7...
4076*c0909341SAndroid Build Coastguard Worker
4077*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4078*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4079*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4080*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4081*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4082*c0909341SAndroid Build Coastguard Worker    vpickve2gr.bu  t7,      vr3,     0
4083*c0909341SAndroid Build Coastguard Worker    vpickve2gr.bu  t8,      vr3,     1
4084*c0909341SAndroid Build Coastguard Worker    stx.b          t7,      a0,      a6
4085*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4086*c0909341SAndroid Build Coastguard Worker    stx.b          t8,      a0,      a6
4087*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4088*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      4
4089*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX1:
4090*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,     1
4091*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_LOOPX_BASEMAX_MSET
4092*c0909341SAndroid Build Coastguard Worker
4093*c0909341SAndroid Build Coastguard Worker    add.d          a2,      a7,      t6
4094*c0909341SAndroid Build Coastguard Worker    sub.d          t7,      a5,      t4
4095*c0909341SAndroid Build Coastguard Worker    ld.bu          t8,      a2,      0
4096*c0909341SAndroid Build Coastguard Worker    mul.w          t7,      t7,      t8
4097*c0909341SAndroid Build Coastguard Worker    ld.bu          t8,      a2,      1
4098*c0909341SAndroid Build Coastguard Worker    mul.w          t8,      t8,      t4
4099*c0909341SAndroid Build Coastguard Worker    add.d          t7,      t7,      t8
4100*c0909341SAndroid Build Coastguard Worker    addi.d         t7,      t7,      32
4101*c0909341SAndroid Build Coastguard Worker    srai.d         t7,      t7,      6
4102*c0909341SAndroid Build Coastguard Worker    stx.b          t7,      a0,      a6
4103*c0909341SAndroid Build Coastguard Worker
4104*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4105*c0909341SAndroid Build Coastguard Worker.Z1_LOOPX_BASEMAX_MSET:  //memset
4106*c0909341SAndroid Build Coastguard Worker    add.d          t6,      a0,      a6  //dst
4107*c0909341SAndroid Build Coastguard Worker    add.d          t7,      a7,      t0  //src
4108*c0909341SAndroid Build Coastguard Worker    sub.d          a2,      a3,      a6  //size
4109*c0909341SAndroid Build Coastguard Worker    pixel_set_8bpc_allw t6, t7, a2, t8, t4
4110*c0909341SAndroid Build Coastguard Worker.Z1_LOOPY_END:
4111*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      1
4112*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
4113*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      t1
4114*c0909341SAndroid Build Coastguard Worker    blt            t2,      a4,      .Z1_LOOPY
4115*c0909341SAndroid Build Coastguard Worker    b              .Z1_END
4116*c0909341SAndroid Build Coastguard Worker
4117*c0909341SAndroid Build Coastguard Worker.Z1_UA0:
4118*c0909341SAndroid Build Coastguard Worker    li.w           a5,      64
4119*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr0,     a5
4120*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr7,     vr0,     1
4121*c0909341SAndroid Build Coastguard Worker    or             t2,      zero,    zero  //y
4122*c0909341SAndroid Build Coastguard Worker    or             t3,      t1,      t1    //xpos
4123*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPY:
4124*c0909341SAndroid Build Coastguard Worker    andi           t4,      t3,      0x3e  //frac
4125*c0909341SAndroid Build Coastguard Worker    vreplgr2vr.h   vr1,     t4
4126*c0909341SAndroid Build Coastguard Worker    vsub.h         vr2,     vr0,     vr1
4127*c0909341SAndroid Build Coastguard Worker    or             a6,      zero,    zero  //x
4128*c0909341SAndroid Build Coastguard Worker    srai.d         t6,      t3,      6     //base
4129*c0909341SAndroid Build Coastguard Worker
4130*c0909341SAndroid Build Coastguard Worker    sub.d          a2,      t0,      t6     //a2:base_num
4131*c0909341SAndroid Build Coastguard Worker    blt            a2,      zero,    .Z1_UA0_BASENUM
4132*c0909341SAndroid Build Coastguard Worker    b              .Z1_UA0_LOOPX
4133*c0909341SAndroid Build Coastguard Worker.Z1_UA0_BASENUM:
4134*c0909341SAndroid Build Coastguard Worker    or             a2,      zero,    zero
4135*c0909341SAndroid Build Coastguard Worker
4136*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX:
4137*c0909341SAndroid Build Coastguard Worker    blt            a2,      a3,      .Z1_UA0_LOOPX_BASEMAX
4138*c0909341SAndroid Build Coastguard Worker
4139*c0909341SAndroid Build Coastguard Worker    srai.d         t8,      a3,      3  //loop param
4140*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_UA0_LOOPX_W4
4141*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_W8:
4142*c0909341SAndroid Build Coastguard Worker    add.d          t5,      a7,      t6
4143*c0909341SAndroid Build Coastguard Worker    vld            vr5,     t5,      0
4144*c0909341SAndroid Build Coastguard Worker    vld            vr6,     t5,      1
4145*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4146*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
4147*c0909341SAndroid Build Coastguard Worker
4148*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4149*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4150*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4151*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4152*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4153*c0909341SAndroid Build Coastguard Worker    fstx.d         f3,      a0,      a6
4154*c0909341SAndroid Build Coastguard Worker
4155*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      8
4156*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      8
4157*c0909341SAndroid Build Coastguard Worker    addi.d         t8,      t8,      -1
4158*c0909341SAndroid Build Coastguard Worker    bnez           t8,      .Z1_UA0_LOOPX_W8
4159*c0909341SAndroid Build Coastguard Worker    b              .Z1_UA0_LOOPY_END
4160*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_W4:
4161*c0909341SAndroid Build Coastguard Worker    vldx           vr5,     a7,      t6
4162*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4163*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr6,     vr5,     2
4164*c0909341SAndroid Build Coastguard Worker
4165*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4166*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4167*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4168*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4169*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4170*c0909341SAndroid Build Coastguard Worker    fstx.s         f3,      a0,      a6
4171*c0909341SAndroid Build Coastguard Worker    b              .Z1_UA0_LOOPY_END
4172*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX:
4173*c0909341SAndroid Build Coastguard Worker    srai.d         t8,      a2,      3  //loop param
4174*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_UA0_LOOPX_BASEMAX4
4175*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX8:
4176*c0909341SAndroid Build Coastguard Worker    add.d          t5,      a7,      t6
4177*c0909341SAndroid Build Coastguard Worker    vld            vr5,     t5,      0
4178*c0909341SAndroid Build Coastguard Worker    vld            vr6,     t5,      1
4179*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4180*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr6,     vr6,     0
4181*c0909341SAndroid Build Coastguard Worker
4182*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4183*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4184*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4185*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4186*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4187*c0909341SAndroid Build Coastguard Worker    fstx.d         f3,      a0,      a6
4188*c0909341SAndroid Build Coastguard Worker
4189*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      8
4190*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      8
4191*c0909341SAndroid Build Coastguard Worker    addi.d         t8,      t8,      -1
4192*c0909341SAndroid Build Coastguard Worker    bnez           t8,      .Z1_UA0_LOOPX_BASEMAX8
4193*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX4:
4194*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,      4
4195*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_UA0_LOOPX_BASEMAX2
4196*c0909341SAndroid Build Coastguard Worker
4197*c0909341SAndroid Build Coastguard Worker    vldx           vr5,     a7,      t6
4198*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4199*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr6,     vr5,     2
4200*c0909341SAndroid Build Coastguard Worker
4201*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4202*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4203*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4204*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4205*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4206*c0909341SAndroid Build Coastguard Worker    fstx.s         f3,      a0,      a6
4207*c0909341SAndroid Build Coastguard Worker
4208*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      4
4209*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      4
4210*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX2:
4211*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,     2
4212*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_UA0_LOOPX_BASEMAX1
4213*c0909341SAndroid Build Coastguard Worker
4214*c0909341SAndroid Build Coastguard Worker    vldx           vr5,     a7,      t6
4215*c0909341SAndroid Build Coastguard Worker    vsllwil.hu.bu  vr5,     vr5,     0
4216*c0909341SAndroid Build Coastguard Worker    vbsrl.v        vr6,     vr5,     2
4217*c0909341SAndroid Build Coastguard Worker
4218*c0909341SAndroid Build Coastguard Worker    vmul.h         vr3,     vr5,     vr2
4219*c0909341SAndroid Build Coastguard Worker    vmadd.h        vr3,     vr6,     vr1
4220*c0909341SAndroid Build Coastguard Worker    vadd.h         vr3,     vr3,     vr7
4221*c0909341SAndroid Build Coastguard Worker    vsrai.h        vr3,     vr3,     6
4222*c0909341SAndroid Build Coastguard Worker    vsrlni.b.h     vr3,     vr3,     0
4223*c0909341SAndroid Build Coastguard Worker    vpickve2gr.bu  t7,      vr3,     0
4224*c0909341SAndroid Build Coastguard Worker    vpickve2gr.bu  t8,      vr3,     1
4225*c0909341SAndroid Build Coastguard Worker    stx.b          t7,      a0,      a6
4226*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4227*c0909341SAndroid Build Coastguard Worker    stx.b          t8,      a0,      a6
4228*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4229*c0909341SAndroid Build Coastguard Worker    addi.d         t6,      t6,      2
4230*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX1:
4231*c0909341SAndroid Build Coastguard Worker    andi           t8,      a2,     1
4232*c0909341SAndroid Build Coastguard Worker    beqz           t8,      .Z1_UA0_LOOPX_BASEMAX_MSET
4233*c0909341SAndroid Build Coastguard Worker
4234*c0909341SAndroid Build Coastguard Worker    add.d          a2,      a7,      t6
4235*c0909341SAndroid Build Coastguard Worker    sub.d          t7,      a5,      t4
4236*c0909341SAndroid Build Coastguard Worker    ld.bu          t8,      a2,      0
4237*c0909341SAndroid Build Coastguard Worker    mul.w          t7,      t7,      t8
4238*c0909341SAndroid Build Coastguard Worker    ld.bu          t8,      a2,      1
4239*c0909341SAndroid Build Coastguard Worker    mul.w          t8,      t8,      t4
4240*c0909341SAndroid Build Coastguard Worker    add.d          t7,      t7,      t8
4241*c0909341SAndroid Build Coastguard Worker    addi.d         t7,      t7,      32
4242*c0909341SAndroid Build Coastguard Worker    srai.d         t7,      t7,      6
4243*c0909341SAndroid Build Coastguard Worker    stx.b          t7,      a0,      a6
4244*c0909341SAndroid Build Coastguard Worker
4245*c0909341SAndroid Build Coastguard Worker    addi.d         a6,      a6,      1
4246*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPX_BASEMAX_MSET:  //memset
4247*c0909341SAndroid Build Coastguard Worker    add.d          t6,      a0,      a6  //dst
4248*c0909341SAndroid Build Coastguard Worker    add.d          t7,      a7,      t0  //src
4249*c0909341SAndroid Build Coastguard Worker    sub.d          a2,      a3,      a6  //size
4250*c0909341SAndroid Build Coastguard Worker    pixel_set_8bpc_allw t6, t7, a2, t8, t4
4251*c0909341SAndroid Build Coastguard Worker.Z1_UA0_LOOPY_END:
4252*c0909341SAndroid Build Coastguard Worker    addi.d         t2,      t2,      1
4253*c0909341SAndroid Build Coastguard Worker    add.d          a0,      a0,      a1
4254*c0909341SAndroid Build Coastguard Worker    add.d          t3,      t3,      t1
4255*c0909341SAndroid Build Coastguard Worker    blt            t2,      a4,      .Z1_UA0_LOOPY
4256*c0909341SAndroid Build Coastguard Worker
4257*c0909341SAndroid Build Coastguard Worker.Z1_END:
4258*c0909341SAndroid Build Coastguard Worker    addi.d         sp,      sp,      128
4259*c0909341SAndroid Build Coastguard Workerendfunc
4260*c0909341SAndroid Build Coastguard Worker
4261