1*c0909341SAndroid Build Coastguard Worker/* 2*c0909341SAndroid Build Coastguard Worker * Copyright © 2023, VideoLAN and dav1d authors 3*c0909341SAndroid Build Coastguard Worker * Copyright © 2023, 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/* 31*c0909341SAndroid Build Coastguard Workerstatic void warp_affine_8x8_c(pixel *dst, const ptrdiff_t dst_stride, 32*c0909341SAndroid Build Coastguard Worker const pixel *src, const ptrdiff_t src_stride, 33*c0909341SAndroid Build Coastguard Worker const int16_t *const abcd, int mx, int my 34*c0909341SAndroid Build Coastguard Worker HIGHBD_DECL_SUFFIX) 35*c0909341SAndroid Build Coastguard Worker*/ 36*c0909341SAndroid Build Coastguard Worker.macro vld_filter_row dst, src, inc 37*c0909341SAndroid Build Coastguard Worker addi.w t3, \src, 512 38*c0909341SAndroid Build Coastguard Worker srai.w t3, t3, 10 39*c0909341SAndroid Build Coastguard Worker add.w \src, \src, \inc 40*c0909341SAndroid Build Coastguard Worker addi.w t3, t3, 64 41*c0909341SAndroid Build Coastguard Worker slli.w t3, t3, 3 42*c0909341SAndroid Build Coastguard Worker fldx.d \dst, t4, t3 43*c0909341SAndroid Build Coastguard Worker.endm 44*c0909341SAndroid Build Coastguard Worker 45*c0909341SAndroid Build Coastguard Worker.macro warp_filter_horz_lsx 46*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, 0 47*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 0 48*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 49*c0909341SAndroid Build Coastguard Worker 50*c0909341SAndroid Build Coastguard Worker vld_filter_row f0, t5, t0 51*c0909341SAndroid Build Coastguard Worker vld_filter_row f1, t5, t0 52*c0909341SAndroid Build Coastguard Worker vld_filter_row f2, t5, t0 53*c0909341SAndroid Build Coastguard Worker vld_filter_row f3, t5, t0 54*c0909341SAndroid Build Coastguard Worker vld_filter_row f4, t5, t0 55*c0909341SAndroid Build Coastguard Worker vld_filter_row f5, t5, t0 56*c0909341SAndroid Build Coastguard Worker vld_filter_row f6, t5, t0 57*c0909341SAndroid Build Coastguard Worker vld_filter_row f7, t5, t0 58*c0909341SAndroid Build Coastguard Worker 59*c0909341SAndroid Build Coastguard Worker vxor.v vr10, vr10, vr20 60*c0909341SAndroid Build Coastguard Worker 61*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr10, 1 62*c0909341SAndroid Build Coastguard Worker vbsrl.v vr9, vr10, 2 63*c0909341SAndroid Build Coastguard Worker vilvl.d vr8, vr8, vr10 64*c0909341SAndroid Build Coastguard Worker vilvl.d vr0, vr1, vr0 65*c0909341SAndroid Build Coastguard Worker vmulwev.h.b vr11, vr8, vr0 66*c0909341SAndroid Build Coastguard Worker vmulwod.h.b vr12, vr8, vr0 67*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr10, 3 68*c0909341SAndroid Build Coastguard Worker vbsrl.v vr19, vr10, 4 69*c0909341SAndroid Build Coastguard Worker vilvl.d vr8, vr8, vr9 70*c0909341SAndroid Build Coastguard Worker vilvl.d vr2, vr3, vr2 71*c0909341SAndroid Build Coastguard Worker vmulwev.h.b vr13, vr8, vr2 72*c0909341SAndroid Build Coastguard Worker vmulwod.h.b vr14, vr8, vr2 73*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr10, 5 74*c0909341SAndroid Build Coastguard Worker vbsrl.v vr9, vr10, 6 75*c0909341SAndroid Build Coastguard Worker vilvl.d vr8, vr8, vr19 76*c0909341SAndroid Build Coastguard Worker vilvl.d vr4, vr5, vr4 77*c0909341SAndroid Build Coastguard Worker vmulwev.h.b vr15, vr8, vr4 78*c0909341SAndroid Build Coastguard Worker vmulwod.h.b vr16, vr8, vr4 79*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr10, 7 80*c0909341SAndroid Build Coastguard Worker vilvl.d vr8, vr8, vr9 81*c0909341SAndroid Build Coastguard Worker vilvl.d vr6, vr7, vr6 82*c0909341SAndroid Build Coastguard Worker vmulwev.h.b vr17, vr8, vr6 83*c0909341SAndroid Build Coastguard Worker vmulwod.h.b vr18, vr8, vr6 84*c0909341SAndroid Build Coastguard Worker 85*c0909341SAndroid Build Coastguard Worker vadd.h vr11, vr11, vr12 86*c0909341SAndroid Build Coastguard Worker vadd.h vr13, vr13, vr14 87*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr16 88*c0909341SAndroid Build Coastguard Worker vadd.h vr17, vr17, vr18 89*c0909341SAndroid Build Coastguard Worker vpickev.h vr12, vr13, vr11 90*c0909341SAndroid Build Coastguard Worker vpickod.h vr14, vr13, vr11 91*c0909341SAndroid Build Coastguard Worker vpickev.h vr16, vr17, vr15 92*c0909341SAndroid Build Coastguard Worker vpickod.h vr18, vr17, vr15 93*c0909341SAndroid Build Coastguard Worker vadd.h vr11, vr12, vr14 94*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr16, vr18 95*c0909341SAndroid Build Coastguard Worker vpickev.h vr12, vr15, vr11 96*c0909341SAndroid Build Coastguard Worker vpickod.h vr14, vr15, vr11 97*c0909341SAndroid Build Coastguard Worker vadd.h vr11, vr12, vr14 98*c0909341SAndroid Build Coastguard Worker 99*c0909341SAndroid Build Coastguard Worker add.d a5, a5, t1 100*c0909341SAndroid Build Coastguard Worker.endm 101*c0909341SAndroid Build Coastguard Worker 102*c0909341SAndroid Build Coastguard Worker.macro transpose_8x8b_extend_lsx in0, in1, in2, in3, in4, in5, in6, in7 103*c0909341SAndroid Build Coastguard Worker vilvl.b \in0, \in1, \in0 104*c0909341SAndroid Build Coastguard Worker vilvl.b \in2, \in3, \in2 105*c0909341SAndroid Build Coastguard Worker vilvl.b \in4, \in5, \in4 106*c0909341SAndroid Build Coastguard Worker vilvl.b \in6, \in7, \in6 107*c0909341SAndroid Build Coastguard Worker 108*c0909341SAndroid Build Coastguard Worker vpackev.h \in1, \in2, \in0 109*c0909341SAndroid Build Coastguard Worker vpackod.h \in3, \in2, \in0 110*c0909341SAndroid Build Coastguard Worker vpackev.h \in5, \in6, \in4 111*c0909341SAndroid Build Coastguard Worker vpackod.h \in7, \in6, \in4 112*c0909341SAndroid Build Coastguard Worker 113*c0909341SAndroid Build Coastguard Worker vpackev.w \in0, \in5, \in1 114*c0909341SAndroid Build Coastguard Worker vpackod.w \in2, \in5, \in1 115*c0909341SAndroid Build Coastguard Worker vpackev.w \in1, \in7, \in3 116*c0909341SAndroid Build Coastguard Worker vpackod.w \in3, \in7, \in3 117*c0909341SAndroid Build Coastguard Worker 118*c0909341SAndroid Build Coastguard Worker vexth.h.b \in4, \in0 119*c0909341SAndroid Build Coastguard Worker vsllwil.h.b \in0, \in0, 0 120*c0909341SAndroid Build Coastguard Worker vexth.h.b \in5, \in1 121*c0909341SAndroid Build Coastguard Worker vsllwil.h.b \in1, \in1, 0 122*c0909341SAndroid Build Coastguard Worker vexth.h.b \in6, \in2 123*c0909341SAndroid Build Coastguard Worker vsllwil.h.b \in2, \in2, 0 124*c0909341SAndroid Build Coastguard Worker vexth.h.b \in7, \in3 125*c0909341SAndroid Build Coastguard Worker vsllwil.h.b \in3, \in3, 0 126*c0909341SAndroid Build Coastguard Worker.endm 127*c0909341SAndroid Build Coastguard Worker 128*c0909341SAndroid Build Coastguard Worker.macro warp t, shift 129*c0909341SAndroid Build Coastguard Workerfunction warp_affine_8x8\t\()_8bpc_lsx 130*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -64 131*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 132*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 133*c0909341SAndroid Build Coastguard Worker fst.d f26, sp, 16 134*c0909341SAndroid Build Coastguard Worker fst.d f27, sp, 24 135*c0909341SAndroid Build Coastguard Worker fst.d f28, sp, 32 136*c0909341SAndroid Build Coastguard Worker fst.d f29, sp, 40 137*c0909341SAndroid Build Coastguard Worker fst.d f30, sp, 48 138*c0909341SAndroid Build Coastguard Worker fst.d f31, sp, 56 139*c0909341SAndroid Build Coastguard Worker 140*c0909341SAndroid Build Coastguard Worker ld.h t0, a4, 0 141*c0909341SAndroid Build Coastguard Worker ld.h t1, a4, 2 142*c0909341SAndroid Build Coastguard Worker ld.h t2, a4, 4 143*c0909341SAndroid Build Coastguard Worker ld.h a4, a4, 6 144*c0909341SAndroid Build Coastguard Worker 145*c0909341SAndroid Build Coastguard Worker li.d t7, 8 146*c0909341SAndroid Build Coastguard Worker alsl.w t3, a3, a3, 1 147*c0909341SAndroid Build Coastguard Worker sub.d a2, a2, t3 148*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -3 149*c0909341SAndroid Build Coastguard Worker la.local t4, dav1d_mc_warp_filter 150*c0909341SAndroid Build Coastguard Worker 151*c0909341SAndroid Build Coastguard Worker.ifnb \t 152*c0909341SAndroid Build Coastguard Worker slli.d a1, a1, 1 153*c0909341SAndroid Build Coastguard Worker.endif 154*c0909341SAndroid Build Coastguard Worker 155*c0909341SAndroid Build Coastguard Worker li.w t3, 128 156*c0909341SAndroid Build Coastguard Worker vreplgr2vr.b vr20, t3 157*c0909341SAndroid Build Coastguard Worker.ifb \t 158*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr21, t3 159*c0909341SAndroid Build Coastguard Worker.else 160*c0909341SAndroid Build Coastguard Worker li.w t3, 2048 161*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr21, t3 162*c0909341SAndroid Build Coastguard Worker.endif 163*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 164*c0909341SAndroid Build Coastguard Worker vsrari.h vr24, vr11, 3 165*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 166*c0909341SAndroid Build Coastguard Worker vsrari.h vr25, vr11, 3 167*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 168*c0909341SAndroid Build Coastguard Worker vsrari.h vr26, vr11, 3 169*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 170*c0909341SAndroid Build Coastguard Worker vsrari.h vr27, vr11, 3 171*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 172*c0909341SAndroid Build Coastguard Worker vsrari.h vr28, vr11, 3 173*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 174*c0909341SAndroid Build Coastguard Worker vsrari.h vr29, vr11, 3 175*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 176*c0909341SAndroid Build Coastguard Worker vsrari.h vr30, vr11, 3 177*c0909341SAndroid Build Coastguard Worker 178*c0909341SAndroid Build Coastguard Worker1: 179*c0909341SAndroid Build Coastguard Worker addi.d t6, a6, 0 180*c0909341SAndroid Build Coastguard Worker warp_filter_horz_lsx 181*c0909341SAndroid Build Coastguard Worker vsrari.h vr31, vr11, 3 182*c0909341SAndroid Build Coastguard Worker 183*c0909341SAndroid Build Coastguard Worker vld_filter_row f0, t6, t2 184*c0909341SAndroid Build Coastguard Worker vld_filter_row f1, t6, t2 185*c0909341SAndroid Build Coastguard Worker vld_filter_row f2, t6, t2 186*c0909341SAndroid Build Coastguard Worker vld_filter_row f3, t6, t2 187*c0909341SAndroid Build Coastguard Worker vld_filter_row f4, t6, t2 188*c0909341SAndroid Build Coastguard Worker vld_filter_row f5, t6, t2 189*c0909341SAndroid Build Coastguard Worker vld_filter_row f6, t6, t2 190*c0909341SAndroid Build Coastguard Worker vld_filter_row f7, t6, t2 191*c0909341SAndroid Build Coastguard Worker 192*c0909341SAndroid Build Coastguard Worker transpose_8x8b_extend_lsx vr0, vr1, vr2, vr3, vr4, vr5, vr6, vr7 193*c0909341SAndroid Build Coastguard Worker 194*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr24, vr0 195*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr17, vr24, vr0 196*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr25, vr1 197*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr25, vr1 198*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr26, vr2 199*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr26, vr2 200*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr27, vr3 201*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr27, vr3 202*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr28, vr4 203*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr28, vr4 204*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr29, vr5 205*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr29, vr5 206*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr30, vr6 207*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr30, vr6 208*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr16, vr31, vr7 209*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr31, vr7 210*c0909341SAndroid Build Coastguard Worker 211*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr16, vr16, \shift 212*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr17, vr17, \shift 213*c0909341SAndroid Build Coastguard Worker vilvl.h vr16, vr17, vr16 214*c0909341SAndroid Build Coastguard Worker vadd.h vr16, vr16, vr21 215*c0909341SAndroid Build Coastguard Worker 216*c0909341SAndroid Build Coastguard Worker vor.v vr24, vr25, vr25 217*c0909341SAndroid Build Coastguard Worker vor.v vr25, vr26, vr26 218*c0909341SAndroid Build Coastguard Worker vor.v vr26, vr27, vr27 219*c0909341SAndroid Build Coastguard Worker vor.v vr27, vr28, vr28 220*c0909341SAndroid Build Coastguard Worker vor.v vr28, vr29, vr29 221*c0909341SAndroid Build Coastguard Worker vor.v vr29, vr30, vr30 222*c0909341SAndroid Build Coastguard Worker vor.v vr30, vr31, vr31 223*c0909341SAndroid Build Coastguard Worker 224*c0909341SAndroid Build Coastguard Worker.ifb \t 225*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr16, vr16, 0 226*c0909341SAndroid Build Coastguard Worker.endif 227*c0909341SAndroid Build Coastguard Worker 228*c0909341SAndroid Build Coastguard Worker addi.d t7, t7, -1 229*c0909341SAndroid Build Coastguard Worker.ifnb \t 230*c0909341SAndroid Build Coastguard Worker vst vr16, a0, 0 231*c0909341SAndroid Build Coastguard Worker.else 232*c0909341SAndroid Build Coastguard Worker vstelm.d vr16, a0, 0, 0 233*c0909341SAndroid Build Coastguard Worker.endif 234*c0909341SAndroid Build Coastguard Worker add.d a0, a1, a0 235*c0909341SAndroid Build Coastguard Worker 236*c0909341SAndroid Build Coastguard Worker add.d a6, a6, a4 237*c0909341SAndroid Build Coastguard Worker blt zero, t7, 1b 238*c0909341SAndroid Build Coastguard Worker 239*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 240*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 241*c0909341SAndroid Build Coastguard Worker fld.d f26, sp, 16 242*c0909341SAndroid Build Coastguard Worker fld.d f27, sp, 24 243*c0909341SAndroid Build Coastguard Worker fld.d f28, sp, 32 244*c0909341SAndroid Build Coastguard Worker fld.d f29, sp, 40 245*c0909341SAndroid Build Coastguard Worker fld.d f30, sp, 48 246*c0909341SAndroid Build Coastguard Worker fld.d f31, sp, 56 247*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 64 248*c0909341SAndroid Build Coastguard Workerendfunc 249*c0909341SAndroid Build Coastguard Worker.endm 250*c0909341SAndroid Build Coastguard Worker 251*c0909341SAndroid Build Coastguard Workerwarp , 11 252*c0909341SAndroid Build Coastguard Workerwarp t, 7 253*c0909341SAndroid Build Coastguard Worker 254*c0909341SAndroid Build Coastguard Worker.macro FILTER_WARP_RND_P_LASX in0, in1, in2, out0, out1, out2, out3 255*c0909341SAndroid Build Coastguard Worker xvshuf.b xr2, \in0, \in0, \in2 256*c0909341SAndroid Build Coastguard Worker 257*c0909341SAndroid Build Coastguard Worker addi.w t4, \in1, 512 258*c0909341SAndroid Build Coastguard Worker srai.w t4, t4, 10 259*c0909341SAndroid Build Coastguard Worker addi.w t4, t4, 64 260*c0909341SAndroid Build Coastguard Worker slli.w t4, t4, 3 261*c0909341SAndroid Build Coastguard Worker vldx vr3, t5, t4 262*c0909341SAndroid Build Coastguard Worker add.w t3, t3, t0 // tmx += abcd[0] 263*c0909341SAndroid Build Coastguard Worker 264*c0909341SAndroid Build Coastguard Worker addi.w t4, t3, 512 265*c0909341SAndroid Build Coastguard Worker srai.w t4, t4, 10 266*c0909341SAndroid Build Coastguard Worker addi.w t4, t4, 64 267*c0909341SAndroid Build Coastguard Worker slli.w t4, t4, 3 268*c0909341SAndroid Build Coastguard Worker vldx vr4, t5, t4 269*c0909341SAndroid Build Coastguard Worker add.w t3, t3, t0 // tmx += abcd[0] 270*c0909341SAndroid Build Coastguard Worker 271*c0909341SAndroid Build Coastguard Worker addi.w t4, t3, 512 272*c0909341SAndroid Build Coastguard Worker srai.w t4, t4, 10 273*c0909341SAndroid Build Coastguard Worker addi.w t4, t4, 64 274*c0909341SAndroid Build Coastguard Worker slli.w t4, t4, 3 275*c0909341SAndroid Build Coastguard Worker vldx vr5, t5, t4 276*c0909341SAndroid Build Coastguard Worker add.w t3, t3, t0 // tmx += abcd[0] 277*c0909341SAndroid Build Coastguard Worker 278*c0909341SAndroid Build Coastguard Worker addi.w t4, t3, 512 279*c0909341SAndroid Build Coastguard Worker srai.w t4, t4, 10 280*c0909341SAndroid Build Coastguard Worker addi.w t4, t4, 64 281*c0909341SAndroid Build Coastguard Worker slli.w t4, t4, 3 282*c0909341SAndroid Build Coastguard Worker vldx vr6, t5, t4 283*c0909341SAndroid Build Coastguard Worker add.w t3, t3, t0 // tmx += abcd[0] 284*c0909341SAndroid Build Coastguard Worker 285*c0909341SAndroid Build Coastguard Worker xvinsve0.d xr3, xr5, 1 286*c0909341SAndroid Build Coastguard Worker xvinsve0.d xr3, xr4, 2 287*c0909341SAndroid Build Coastguard Worker xvinsve0.d xr3, xr6, 3 288*c0909341SAndroid Build Coastguard Worker 289*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr4, xr2, xr3 290*c0909341SAndroid Build Coastguard Worker xvmulwod.h.bu.b xr5, xr2, xr3 291*c0909341SAndroid Build Coastguard Worker xvilvl.d xr2, xr5, xr4 292*c0909341SAndroid Build Coastguard Worker xvilvh.d xr3, xr5, xr4 293*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr2, xr2, xr2 294*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr3, xr3, xr3 295*c0909341SAndroid Build Coastguard Worker xvhaddw.d.w xr2, xr2, xr2 296*c0909341SAndroid Build Coastguard Worker xvhaddw.d.w xr3, xr3, xr3 297*c0909341SAndroid Build Coastguard Worker xvhaddw.q.d xr2, xr2, xr2 298*c0909341SAndroid Build Coastguard Worker xvhaddw.q.d xr3, xr3, xr3 299*c0909341SAndroid Build Coastguard Worker 300*c0909341SAndroid Build Coastguard Worker xvextrins.w \out0, xr2, \out1 301*c0909341SAndroid Build Coastguard Worker xvextrins.w \out2, xr3, \out3 302*c0909341SAndroid Build Coastguard Worker.endm 303*c0909341SAndroid Build Coastguard Worker 304*c0909341SAndroid Build Coastguard Worker.macro FILTER_WARP_CLIP_LASX in0, in1, in2, out0, out1 305*c0909341SAndroid Build Coastguard Worker add.w \in0, \in0, \in1 306*c0909341SAndroid Build Coastguard Worker addi.w t6, \in0, 512 307*c0909341SAndroid Build Coastguard Worker srai.w t6, t6, 10 308*c0909341SAndroid Build Coastguard Worker addi.w t6, t6, 64 309*c0909341SAndroid Build Coastguard Worker slli.w t6, t6, 3 310*c0909341SAndroid Build Coastguard Worker fldx.d f1, t5, t6 311*c0909341SAndroid Build Coastguard Worker 312*c0909341SAndroid Build Coastguard Worker add.w t2, t2, t7 313*c0909341SAndroid Build Coastguard Worker addi.w t6, t2, 512 314*c0909341SAndroid Build Coastguard Worker srai.w t6, t6, 10 315*c0909341SAndroid Build Coastguard Worker addi.w t6, t6, 64 316*c0909341SAndroid Build Coastguard Worker slli.w t6, t6, 3 317*c0909341SAndroid Build Coastguard Worker fldx.d f2, t5, t6 318*c0909341SAndroid Build Coastguard Worker 319*c0909341SAndroid Build Coastguard Worker vilvl.d vr0, vr2, vr1 320*c0909341SAndroid Build Coastguard Worker vext2xv.h.b xr0, xr0 321*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr3, \in2, xr0 322*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr3, \in2, xr0 323*c0909341SAndroid Build Coastguard Worker xvhaddw.d.w xr3, xr3, xr3 324*c0909341SAndroid Build Coastguard Worker xvhaddw.q.d xr3, xr3, xr3 325*c0909341SAndroid Build Coastguard Worker xvextrins.w \out0, xr3, \out1 326*c0909341SAndroid Build Coastguard Worker.endm 327*c0909341SAndroid Build Coastguard Worker 328*c0909341SAndroid Build Coastguard Workerconst shuf0 329*c0909341SAndroid Build Coastguard Worker.byte 0, 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 8, 9 330*c0909341SAndroid Build Coastguard Worker.byte 1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 9, 10 331*c0909341SAndroid Build Coastguard Workerendconst 332*c0909341SAndroid Build Coastguard Worker 333*c0909341SAndroid Build Coastguard Workerconst warp_sh 334*c0909341SAndroid Build Coastguard Worker.rept 2 335*c0909341SAndroid Build Coastguard Worker.byte 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 336*c0909341SAndroid Build Coastguard Worker.endr 337*c0909341SAndroid Build Coastguard Worker.rept 2 338*c0909341SAndroid Build Coastguard Worker.byte 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 339*c0909341SAndroid Build Coastguard Worker.endr 340*c0909341SAndroid Build Coastguard Workerendconst 341*c0909341SAndroid Build Coastguard Worker 342*c0909341SAndroid Build Coastguard Worker.macro warp_lasx t, shift 343*c0909341SAndroid Build Coastguard Workerfunction warp_affine_8x8\t\()_8bpc_lasx 344*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 345*c0909341SAndroid Build Coastguard Worker ld.h t0, a4, 0 // abcd[0] 346*c0909341SAndroid Build Coastguard Worker ld.h t1, a4, 2 // abcd[1] 347*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 348*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 349*c0909341SAndroid Build Coastguard Worker 350*c0909341SAndroid Build Coastguard Worker alsl.w t2, a3, a3, 1 351*c0909341SAndroid Build Coastguard Worker addi.w t3, a5, 0 352*c0909341SAndroid Build Coastguard Worker la.local t4, warp_sh 353*c0909341SAndroid Build Coastguard Worker la.local t5, dav1d_mc_warp_filter 354*c0909341SAndroid Build Coastguard Worker sub.d a2, a2, t2 355*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -3 356*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 357*c0909341SAndroid Build Coastguard Worker xvld xr24, t4, 0 358*c0909341SAndroid Build Coastguard Worker xvld xr25, t4, 32 359*c0909341SAndroid Build Coastguard Worker la.local t2, shuf0 360*c0909341SAndroid Build Coastguard Worker xvld xr1, t2, 0 361*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 362*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr9, xr1, 4 363*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x00, xr8, 0x00 364*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x00, xr11, 0x00 365*c0909341SAndroid Build Coastguard Worker 366*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 367*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 368*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 369*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 370*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 371*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x10, xr8, 0x10 372*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x10, xr11, 0x10 373*c0909341SAndroid Build Coastguard Worker 374*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 375*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 376*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 377*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 378*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 379*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x20, xr8, 0x20 380*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x20, xr11, 0x20 381*c0909341SAndroid Build Coastguard Worker 382*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 383*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 384*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 385*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 386*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 387*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x30, xr8, 0x30 388*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x30, xr11, 0x30 389*c0909341SAndroid Build Coastguard Worker 390*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 391*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 392*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 393*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 394*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 395*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr12, 0x00, xr13, 0x00 396*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr14, 0x00, xr15, 0x00 397*c0909341SAndroid Build Coastguard Worker 398*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 399*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 400*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 401*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 402*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 403*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr12, 0x10, xr13, 0x10 404*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr14, 0x10, xr15, 0x10 405*c0909341SAndroid Build Coastguard Worker 406*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 407*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 408*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 409*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 410*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 411*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr12, 0x20, xr13, 0x20 412*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr14, 0x20, xr15, 0x20 413*c0909341SAndroid Build Coastguard Worker 414*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 415*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 416*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 417*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 418*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 419*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr12, 0x30, xr13, 0x30 420*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr14, 0x30, xr15, 0x30 421*c0909341SAndroid Build Coastguard Worker 422*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr12, xr7, 3 423*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr13, xr8, 3 424*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr14, xr10, 3 425*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr15, xr11, 3 426*c0909341SAndroid Build Coastguard Worker 427*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 428*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 429*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 430*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 431*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 432*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x00, xr8, 0x00 433*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x00, xr11, 0x00 434*c0909341SAndroid Build Coastguard Worker 435*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 436*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 437*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 438*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 439*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 440*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x10, xr8, 0x10 441*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x10, xr11, 0x10 442*c0909341SAndroid Build Coastguard Worker 443*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 444*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 445*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 446*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 447*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 448*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x20, xr8, 0x20 449*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x20, xr11, 0x20 450*c0909341SAndroid Build Coastguard Worker 451*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 452*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 453*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 454*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 455*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 456*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr7, 0x30, xr8, 0x30 457*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr10, 0x30, xr11, 0x30 458*c0909341SAndroid Build Coastguard Worker 459*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 460*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 461*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 462*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 463*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 464*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr16, 0x00, xr17, 0x00 465*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr18, 0x00, xr19, 0x00 466*c0909341SAndroid Build Coastguard Worker 467*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 468*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 469*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 470*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 471*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 472*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr16, 0x10, xr17, 0x10 473*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr18, 0x10, xr19, 0x10 474*c0909341SAndroid Build Coastguard Worker 475*c0909341SAndroid Build Coastguard Worker add.w a5, a5, t1 476*c0909341SAndroid Build Coastguard Worker or t3, a5, a5 477*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 478*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 479*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr0, 0x00 480*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, a5, xr1, xr16, 0x20, xr17, 0x20 481*c0909341SAndroid Build Coastguard Worker FILTER_WARP_RND_P_LASX xr0, t3, xr9, xr18, 0x20, xr19, 0x20 482*c0909341SAndroid Build Coastguard Worker 483*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr16, xr7, 3 484*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr17, xr8, 3 485*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr18, xr10, 3 486*c0909341SAndroid Build Coastguard Worker xvsrarni.h.w xr19, xr11, 3 487*c0909341SAndroid Build Coastguard Worker 488*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 // my 489*c0909341SAndroid Build Coastguard Worker ld.h t7, a4, 4 // abcd[2] 490*c0909341SAndroid Build Coastguard Worker ld.h t8, a4, 6 // abcd[3] 491*c0909341SAndroid Build Coastguard Worker 492*c0909341SAndroid Build Coastguard Worker.ifnb \t 493*c0909341SAndroid Build Coastguard Worker slli.d a1, a1, 1 494*c0909341SAndroid Build Coastguard Worker.endif 495*c0909341SAndroid Build Coastguard Worker 496*c0909341SAndroid Build Coastguard Worker // y = 0 497*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr20, 0x00 498*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr20, 0x10 499*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr20, 0x20 500*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr20, 0x30 501*c0909341SAndroid Build Coastguard Worker 502*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 503*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 504*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 505*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 506*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 507*c0909341SAndroid Build Coastguard Worker 508*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 509*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 510*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr21, 0x00 511*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr21, 0x10 512*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr21, 0x20 513*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr21, 0x30 514*c0909341SAndroid Build Coastguard Worker 515*c0909341SAndroid Build Coastguard Worker.ifnb \t 516*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr21, xr20, \shift 517*c0909341SAndroid Build Coastguard Worker xvpermi.q xr22, xr21, 0x01 518*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr22, vr21 519*c0909341SAndroid Build Coastguard Worker vilvh.h vr21, vr22, vr21 520*c0909341SAndroid Build Coastguard Worker vst vr23, a0, 0 521*c0909341SAndroid Build Coastguard Worker vstx vr21, a0, a1 522*c0909341SAndroid Build Coastguard Worker.else 523*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr21, xr20, \shift 524*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr22, xr21, 0 525*c0909341SAndroid Build Coastguard Worker xvpermi.q xr23, xr22, 0x01 526*c0909341SAndroid Build Coastguard Worker vilvl.b vr21, vr23, vr22 527*c0909341SAndroid Build Coastguard Worker fst.d f21, a0, 0 528*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 529*c0909341SAndroid Build Coastguard Worker vstelm.d vr21, a0, 0, 1 530*c0909341SAndroid Build Coastguard Worker.endif 531*c0909341SAndroid Build Coastguard Worker 532*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr25, xr25, 2 533*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 534*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 535*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 536*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 537*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 538*c0909341SAndroid Build Coastguard Worker 539*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 540*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 541*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr20, 0x00 542*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr20, 0x10 543*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr20, 0x20 544*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr20, 0x30 545*c0909341SAndroid Build Coastguard Worker 546*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr25, xr25, 2 547*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 548*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 549*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 550*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 551*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 552*c0909341SAndroid Build Coastguard Worker 553*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 554*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 555*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr21, 0x00 556*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr21, 0x10 557*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr21, 0x20 558*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr21, 0x30 559*c0909341SAndroid Build Coastguard Worker 560*c0909341SAndroid Build Coastguard Worker.ifnb \t 561*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr21, xr20, \shift 562*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 563*c0909341SAndroid Build Coastguard Worker xvpermi.q xr22, xr21, 0x01 564*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr22, vr21 565*c0909341SAndroid Build Coastguard Worker vilvh.h vr21, vr22, vr21 566*c0909341SAndroid Build Coastguard Worker vst vr23, a0, 0 567*c0909341SAndroid Build Coastguard Worker vstx vr21, a0, a1 568*c0909341SAndroid Build Coastguard Worker.else 569*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr21, xr20, 11 570*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr22, xr21, 0 571*c0909341SAndroid Build Coastguard Worker xvpermi.q xr23, xr22, 0x01 572*c0909341SAndroid Build Coastguard Worker vilvl.b vr21, vr23, vr22 573*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 574*c0909341SAndroid Build Coastguard Worker fst.d f21, a0, 0 575*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 576*c0909341SAndroid Build Coastguard Worker vstelm.d vr21, a0, 0, 1 577*c0909341SAndroid Build Coastguard Worker.endif 578*c0909341SAndroid Build Coastguard Worker 579*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr25, xr25, 2 580*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 581*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 582*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 583*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 584*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 585*c0909341SAndroid Build Coastguard Worker 586*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 587*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 588*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr20, 0x00 589*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr20, 0x10 590*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr20, 0x20 591*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr20, 0x30 592*c0909341SAndroid Build Coastguard Worker 593*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr25, xr25, 2 594*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 595*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 596*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 597*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 598*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 599*c0909341SAndroid Build Coastguard Worker 600*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 601*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 602*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr21, 0x00 603*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr21, 0x10 604*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr21, 0x20 605*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr21, 0x30 606*c0909341SAndroid Build Coastguard Worker 607*c0909341SAndroid Build Coastguard Worker.ifnb \t 608*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr21, xr20, \shift 609*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 610*c0909341SAndroid Build Coastguard Worker xvpermi.q xr22, xr21, 0x01 611*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr22, vr21 612*c0909341SAndroid Build Coastguard Worker vilvh.h vr21, vr22, vr21 613*c0909341SAndroid Build Coastguard Worker vst vr23, a0, 0 614*c0909341SAndroid Build Coastguard Worker vstx vr21, a0, a1 615*c0909341SAndroid Build Coastguard Worker.else 616*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr21, xr20, 11 617*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr22, xr21, 0 618*c0909341SAndroid Build Coastguard Worker xvpermi.q xr23, xr22, 0x01 619*c0909341SAndroid Build Coastguard Worker vilvl.b vr21, vr23, vr22 620*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 621*c0909341SAndroid Build Coastguard Worker fst.d f21, a0, 0 622*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 623*c0909341SAndroid Build Coastguard Worker vstelm.d vr21, a0, 0, 1 624*c0909341SAndroid Build Coastguard Worker.endif 625*c0909341SAndroid Build Coastguard Worker 626*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr25, xr25, 2 627*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 628*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 629*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 630*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 631*c0909341SAndroid Build Coastguard Worker xvextrins.h xr24, xr25, 0x70 632*c0909341SAndroid Build Coastguard Worker 633*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 634*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 635*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr20, 0x00 636*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr20, 0x10 637*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr20, 0x20 638*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr20, 0x30 639*c0909341SAndroid Build Coastguard Worker 640*c0909341SAndroid Build Coastguard Worker xvshuf.b xr12, xr16, xr12, xr24 641*c0909341SAndroid Build Coastguard Worker xvshuf.b xr13, xr17, xr13, xr24 642*c0909341SAndroid Build Coastguard Worker xvshuf.b xr14, xr18, xr14, xr24 643*c0909341SAndroid Build Coastguard Worker xvshuf.b xr15, xr19, xr15, xr24 644*c0909341SAndroid Build Coastguard Worker 645*c0909341SAndroid Build Coastguard Worker add.w a6, a6, t8 646*c0909341SAndroid Build Coastguard Worker addi.w t2, a6, 0 647*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, zero, xr12, xr21, 0x00 648*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr13, xr21, 0x10 649*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr14, xr21, 0x20 650*c0909341SAndroid Build Coastguard Worker FILTER_WARP_CLIP_LASX t2, t7, xr15, xr21, 0x30 651*c0909341SAndroid Build Coastguard Worker 652*c0909341SAndroid Build Coastguard Worker.ifnb \t 653*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr21, xr20, \shift 654*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 655*c0909341SAndroid Build Coastguard Worker xvpermi.q xr22, xr21, 0x01 656*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr22, vr21 657*c0909341SAndroid Build Coastguard Worker vilvh.h vr21, vr22, vr21 658*c0909341SAndroid Build Coastguard Worker vst vr23, a0, 0 659*c0909341SAndroid Build Coastguard Worker vstx vr21, a0, a1 660*c0909341SAndroid Build Coastguard Worker.else 661*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr21, xr20, 11 662*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr22, xr21, 0 663*c0909341SAndroid Build Coastguard Worker xvpermi.q xr23, xr22, 0x01 664*c0909341SAndroid Build Coastguard Worker vilvl.b vr21, vr23, vr22 665*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 666*c0909341SAndroid Build Coastguard Worker fst.d f21, a0, 0 667*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 668*c0909341SAndroid Build Coastguard Worker vstelm.d vr21, a0, 0, 1 669*c0909341SAndroid Build Coastguard Worker.endif 670*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 671*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 672*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 673*c0909341SAndroid Build Coastguard Workerendfunc 674*c0909341SAndroid Build Coastguard Worker.endm 675*c0909341SAndroid Build Coastguard Worker 676*c0909341SAndroid Build Coastguard Workerwarp_lasx , 11 677*c0909341SAndroid Build Coastguard Workerwarp_lasx t, 7 678*c0909341SAndroid Build Coastguard Worker 679*c0909341SAndroid Build Coastguard Worker/* 680*c0909341SAndroid Build Coastguard Workerstatic void w_avg_c(pixel *dst, const ptrdiff_t dst_stride, 681*c0909341SAndroid Build Coastguard Worker const int16_t *tmp1, const int16_t *tmp2, 682*c0909341SAndroid Build Coastguard Worker const int w, int h, 683*c0909341SAndroid Build Coastguard Worker const int weight HIGHBD_DECL_SUFFIX) 684*c0909341SAndroid Build Coastguard Worker*/ 685*c0909341SAndroid Build Coastguard Worker 686*c0909341SAndroid Build Coastguard Worker#define bpc8_sh 5 // sh = intermediate_bits + 1 687*c0909341SAndroid Build Coastguard Worker#define bpcw8_sh 8 // sh = intermediate_bits + 4 688*c0909341SAndroid Build Coastguard Worker 689*c0909341SAndroid Build Coastguard Worker#define bpc_sh bpc8_sh 690*c0909341SAndroid Build Coastguard Worker#define bpcw_sh bpcw8_sh 691*c0909341SAndroid Build Coastguard Worker 692*c0909341SAndroid Build Coastguard Workerfunction avg_8bpc_lsx 693*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 694*c0909341SAndroid Build Coastguard Worker 695*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 696*c0909341SAndroid Build Coastguard Worker li.w t1, 24 697*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 698*c0909341SAndroid Build Coastguard Worker la.local t1, .AVG_LSX_JRTABLE 699*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 700*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 // The jump addresses are relative to AVG_LSX_JRTABLE 701*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 // Get absolute address 702*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 703*c0909341SAndroid Build Coastguard Worker 704*c0909341SAndroid Build Coastguard Worker .align 3 705*c0909341SAndroid Build Coastguard Worker.AVG_LSX_JRTABLE: 706*c0909341SAndroid Build Coastguard Worker .hword .AVG_W128_LSX - .AVG_LSX_JRTABLE 707*c0909341SAndroid Build Coastguard Worker .hword .AVG_W64_LSX - .AVG_LSX_JRTABLE 708*c0909341SAndroid Build Coastguard Worker .hword .AVG_W32_LSX - .AVG_LSX_JRTABLE 709*c0909341SAndroid Build Coastguard Worker .hword .AVG_W16_LSX - .AVG_LSX_JRTABLE 710*c0909341SAndroid Build Coastguard Worker .hword .AVG_W8_LSX - .AVG_LSX_JRTABLE 711*c0909341SAndroid Build Coastguard Worker .hword .AVG_W4_LSX - .AVG_LSX_JRTABLE 712*c0909341SAndroid Build Coastguard Worker 713*c0909341SAndroid Build Coastguard Worker.AVG_W4_LSX: 714*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 715*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 716*c0909341SAndroid Build Coastguard Worker vadd.h vr2, vr0, vr1 717*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr3, vr2, bpc_sh 718*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 0 719*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 720*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 1 721*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 722*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 723*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 724*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 725*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W4_LSX 726*c0909341SAndroid Build Coastguard Worker b .AVG_END_LSX 727*c0909341SAndroid Build Coastguard Worker 728*c0909341SAndroid Build Coastguard Worker.AVG_W8_LSX: 729*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 730*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 731*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 732*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 733*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr0, vr1 734*c0909341SAndroid Build Coastguard Worker vadd.h vr5, vr2, vr3 735*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, bpc_sh 736*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 737*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 738*c0909341SAndroid Build Coastguard Worker vstelm.d vr5, a0, 0, 0 739*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 740*c0909341SAndroid Build Coastguard Worker vstelm.d vr5, a0, 0, 1 741*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 742*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 743*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W8_LSX 744*c0909341SAndroid Build Coastguard Worker b .AVG_END_LSX 745*c0909341SAndroid Build Coastguard Worker 746*c0909341SAndroid Build Coastguard Worker.AVG_W16_LSX: 747*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 748*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 749*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 750*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 751*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr0, vr1 752*c0909341SAndroid Build Coastguard Worker vadd.h vr5, vr2, vr3 753*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, bpc_sh 754*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 755*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 756*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 757*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 758*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 759*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W16_LSX 760*c0909341SAndroid Build Coastguard Worker b .AVG_END_LSX 761*c0909341SAndroid Build Coastguard Worker 762*c0909341SAndroid Build Coastguard Worker.AVG_W32_LSX: 763*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 764*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 765*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 32 766*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 48 767*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 768*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 769*c0909341SAndroid Build Coastguard Worker vld vr5, a3, 32 770*c0909341SAndroid Build Coastguard Worker vld vr7, a3, 48 771*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 772*c0909341SAndroid Build Coastguard Worker vadd.h vr2, vr2, vr3 773*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr4, vr5 774*c0909341SAndroid Build Coastguard Worker vadd.h vr6, vr6, vr7 775*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr2, vr0, bpc_sh 776*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr6, vr4, bpc_sh 777*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 778*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 779*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 780*c0909341SAndroid Build Coastguard Worker vst vr6, a0, 16 781*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 782*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 783*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W32_LSX 784*c0909341SAndroid Build Coastguard Worker b .AVG_END_LSX 785*c0909341SAndroid Build Coastguard Worker 786*c0909341SAndroid Build Coastguard Worker.AVG_W64_LSX: 787*c0909341SAndroid Build Coastguard Worker.rept 4 788*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 789*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 790*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 791*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 792*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 793*c0909341SAndroid Build Coastguard Worker vadd.h vr2, vr2, vr3 794*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr2, vr0, bpc_sh 795*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 796*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 797*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 798*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 799*c0909341SAndroid Build Coastguard Worker.endr 800*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 801*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 802*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 803*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W64_LSX 804*c0909341SAndroid Build Coastguard Worker b .AVG_END_LSX 805*c0909341SAndroid Build Coastguard Worker 806*c0909341SAndroid Build Coastguard Worker.AVG_W128_LSX: 807*c0909341SAndroid Build Coastguard Worker.rept 8 808*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 809*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 810*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 811*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 812*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 813*c0909341SAndroid Build Coastguard Worker vadd.h vr2, vr2, vr3 814*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr2, vr0, bpc_sh 815*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 816*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 817*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 818*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 819*c0909341SAndroid Build Coastguard Worker.endr 820*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 821*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 822*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 823*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W128_LSX 824*c0909341SAndroid Build Coastguard Worker.AVG_END_LSX: 825*c0909341SAndroid Build Coastguard Workerendfunc 826*c0909341SAndroid Build Coastguard Worker 827*c0909341SAndroid Build Coastguard Workerfunction avg_8bpc_lasx 828*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 829*c0909341SAndroid Build Coastguard Worker li.w t1, 24 830*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 831*c0909341SAndroid Build Coastguard Worker la.local t1, .AVG_LASX_JRTABLE 832*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 833*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 834*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 835*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 836*c0909341SAndroid Build Coastguard Worker 837*c0909341SAndroid Build Coastguard Worker .align 3 838*c0909341SAndroid Build Coastguard Worker.AVG_LASX_JRTABLE: 839*c0909341SAndroid Build Coastguard Worker .hword .AVG_W128_LASX - .AVG_LASX_JRTABLE 840*c0909341SAndroid Build Coastguard Worker .hword .AVG_W64_LASX - .AVG_LASX_JRTABLE 841*c0909341SAndroid Build Coastguard Worker .hword .AVG_W32_LASX - .AVG_LASX_JRTABLE 842*c0909341SAndroid Build Coastguard Worker .hword .AVG_W16_LASX - .AVG_LASX_JRTABLE 843*c0909341SAndroid Build Coastguard Worker .hword .AVG_W8_LASX - .AVG_LASX_JRTABLE 844*c0909341SAndroid Build Coastguard Worker .hword .AVG_W4_LASX - .AVG_LASX_JRTABLE 845*c0909341SAndroid Build Coastguard Worker 846*c0909341SAndroid Build Coastguard Worker.AVG_W4_LASX: 847*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 848*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 849*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 850*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr0, bpc_sh 851*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 0 852*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 853*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 1 854*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 855*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 856*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 857*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 858*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W4_LASX 859*c0909341SAndroid Build Coastguard Worker b .AVG_END_LASX 860*c0909341SAndroid Build Coastguard Worker.AVG_W8_LASX: 861*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 862*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 863*c0909341SAndroid Build Coastguard Worker xvadd.h xr2, xr0, xr1 864*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr1, xr2, bpc_sh 865*c0909341SAndroid Build Coastguard Worker xvstelm.d xr1, a0, 0, 0 866*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 867*c0909341SAndroid Build Coastguard Worker xvstelm.d xr1, a0, 0, 2 868*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 869*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 870*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 871*c0909341SAndroid Build Coastguard Worker add.d a0, a1, a0 872*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W8_LASX 873*c0909341SAndroid Build Coastguard Worker b .AVG_END_LASX 874*c0909341SAndroid Build Coastguard Worker.AVG_W16_LASX: 875*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 876*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 877*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 878*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 879*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr0, xr1 880*c0909341SAndroid Build Coastguard Worker xvadd.h xr5, xr2, xr3 881*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr5, xr4, bpc_sh 882*c0909341SAndroid Build Coastguard Worker xvpermi.d xr2, xr5, 0xd8 883*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr5, 0x8d 884*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 885*c0909341SAndroid Build Coastguard Worker vstx vr3, a0, a1 886*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 887*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 888*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 889*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 890*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W16_LASX 891*c0909341SAndroid Build Coastguard Worker b .AVG_END_LASX 892*c0909341SAndroid Build Coastguard Worker.AVG_W32_LASX: 893*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 894*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 895*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 896*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 897*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr0, xr1 898*c0909341SAndroid Build Coastguard Worker xvadd.h xr5, xr2, xr3 899*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr5, xr4, bpc_sh 900*c0909341SAndroid Build Coastguard Worker xvpermi.d xr6, xr5, 0xd8 901*c0909341SAndroid Build Coastguard Worker xvst xr6, a0, 0 902*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 903*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 904*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 905*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 906*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W32_LASX 907*c0909341SAndroid Build Coastguard Worker b .AVG_END_LASX 908*c0909341SAndroid Build Coastguard Worker.AVG_W64_LASX: 909*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 910*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 911*c0909341SAndroid Build Coastguard Worker xvld xr4, a2, 64 912*c0909341SAndroid Build Coastguard Worker xvld xr6, a2, 96 913*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 914*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 915*c0909341SAndroid Build Coastguard Worker xvld xr5, a3, 64 916*c0909341SAndroid Build Coastguard Worker xvld xr7, a3, 96 917*c0909341SAndroid Build Coastguard Worker xvadd.h xr0, xr0, xr1 918*c0909341SAndroid Build Coastguard Worker xvadd.h xr2, xr2, xr3 919*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr4, xr5 920*c0909341SAndroid Build Coastguard Worker xvadd.h xr6, xr6, xr7 921*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr2, xr0, bpc_sh 922*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr6, xr4, bpc_sh 923*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr2, 0xd8 924*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr6, 0xd8 925*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 0 926*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 32 927*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 928*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 128 929*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 128 930*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 931*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W64_LASX 932*c0909341SAndroid Build Coastguard Worker b .AVG_END_LASX 933*c0909341SAndroid Build Coastguard Worker.AVG_W128_LASX: 934*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 935*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 936*c0909341SAndroid Build Coastguard Worker xvld xr4, a2, 64 937*c0909341SAndroid Build Coastguard Worker xvld xr6, a2, 96 938*c0909341SAndroid Build Coastguard Worker xvld xr8, a2, 128 939*c0909341SAndroid Build Coastguard Worker xvld xr10, a2, 160 940*c0909341SAndroid Build Coastguard Worker xvld xr12, a2, 192 941*c0909341SAndroid Build Coastguard Worker xvld xr14, a2, 224 942*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 943*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 944*c0909341SAndroid Build Coastguard Worker xvld xr5, a3, 64 945*c0909341SAndroid Build Coastguard Worker xvld xr7, a3, 96 946*c0909341SAndroid Build Coastguard Worker xvld xr9, a3, 128 947*c0909341SAndroid Build Coastguard Worker xvld xr11, a3, 160 948*c0909341SAndroid Build Coastguard Worker xvld xr13, a3, 192 949*c0909341SAndroid Build Coastguard Worker xvld xr15, a3, 224 950*c0909341SAndroid Build Coastguard Worker xvadd.h xr0, xr0, xr1 951*c0909341SAndroid Build Coastguard Worker xvadd.h xr2, xr2, xr3 952*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr4, xr5 953*c0909341SAndroid Build Coastguard Worker xvadd.h xr6, xr6, xr7 954*c0909341SAndroid Build Coastguard Worker xvadd.h xr8, xr8, xr9 955*c0909341SAndroid Build Coastguard Worker xvadd.h xr10, xr10, xr11 956*c0909341SAndroid Build Coastguard Worker xvadd.h xr12, xr12, xr13 957*c0909341SAndroid Build Coastguard Worker xvadd.h xr14, xr14, xr15 958*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr2, xr0, bpc_sh 959*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr6, xr4, bpc_sh 960*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr10, xr8, bpc_sh 961*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr14, xr12, bpc_sh 962*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr2, 0xd8 963*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr6, 0xd8 964*c0909341SAndroid Build Coastguard Worker xvpermi.d xr5, xr10, 0xd8 965*c0909341SAndroid Build Coastguard Worker xvpermi.d xr7, xr14, 0xd8 966*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 0 967*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 32 968*c0909341SAndroid Build Coastguard Worker xvst xr5, a0, 64 969*c0909341SAndroid Build Coastguard Worker xvst xr7, a0, 96 970*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 971*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 256 972*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 256 973*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 974*c0909341SAndroid Build Coastguard Worker blt zero, a5, .AVG_W128_LASX 975*c0909341SAndroid Build Coastguard Worker.AVG_END_LASX: 976*c0909341SAndroid Build Coastguard Workerendfunc 977*c0909341SAndroid Build Coastguard Worker 978*c0909341SAndroid Build Coastguard Workerfunction w_avg_8bpc_lsx 979*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 980*c0909341SAndroid Build Coastguard Worker li.w t2, 16 981*c0909341SAndroid Build Coastguard Worker sub.w t2, t2, a6 // 16 - weight 982*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr21, a6 983*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr22, t2 984*c0909341SAndroid Build Coastguard Worker 985*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 986*c0909341SAndroid Build Coastguard Worker li.w t1, 24 987*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 988*c0909341SAndroid Build Coastguard Worker la.local t1, .W_AVG_LSX_JRTABLE 989*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 990*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 991*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 992*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 993*c0909341SAndroid Build Coastguard Worker 994*c0909341SAndroid Build Coastguard Worker .align 3 995*c0909341SAndroid Build Coastguard Worker.W_AVG_LSX_JRTABLE: 996*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W128_LSX - .W_AVG_LSX_JRTABLE 997*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W64_LSX - .W_AVG_LSX_JRTABLE 998*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W32_LSX - .W_AVG_LSX_JRTABLE 999*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W16_LSX - .W_AVG_LSX_JRTABLE 1000*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W8_LSX - .W_AVG_LSX_JRTABLE 1001*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W4_LSX - .W_AVG_LSX_JRTABLE 1002*c0909341SAndroid Build Coastguard Worker 1003*c0909341SAndroid Build Coastguard Worker.W_AVG_W4_LSX: 1004*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1005*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1006*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr2, vr0, vr21 1007*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr3, vr0, vr21 1008*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr2, vr1, vr22 1009*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr3, vr1, vr22 1010*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr3, vr2, bpcw_sh 1011*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr1, vr3, 0 1012*c0909341SAndroid Build Coastguard Worker vpickod.w vr4, vr2, vr1 1013*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr4, vr1 1014*c0909341SAndroid Build Coastguard Worker fst.s f0, a0, 0 1015*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1016*c0909341SAndroid Build Coastguard Worker vstelm.w vr0, a0, 0, 1 1017*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1018*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 1019*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 1020*c0909341SAndroid Build Coastguard Worker add.d a0, a1, a0 1021*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W4_LSX 1022*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1023*c0909341SAndroid Build Coastguard Worker.W_AVG_W8_LSX: 1024*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1025*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1026*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr2, vr0, vr21 1027*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr3, vr0, vr21 1028*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr2, vr1, vr22 1029*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr3, vr1, vr22 1030*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr3, vr2, bpcw_sh 1031*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr1, vr3, 0 1032*c0909341SAndroid Build Coastguard Worker vpickod.w vr4, vr2, vr1 1033*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr4, vr1 1034*c0909341SAndroid Build Coastguard Worker fst.d f0, a0, 0 1035*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1036*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 1037*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 1038*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1039*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W8_LSX 1040*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1041*c0909341SAndroid Build Coastguard Worker.W_AVG_W16_LSX: 1042*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1043*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 1044*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1045*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1046*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr21 1047*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr21 1048*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr6, vr2, vr21 1049*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr7, vr2, vr21 1050*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr22 1051*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr22 1052*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr6, vr3, vr22 1053*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr7, vr3, vr22 1054*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr6, vr4, bpcw_sh 1055*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr7, vr5, bpcw_sh 1056*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr7, vr6, 0 1057*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr8, vr7, 0x4E 1058*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr8, vr7 1059*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1060*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1061*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1062*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1063*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1064*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W16_LSX 1065*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1066*c0909341SAndroid Build Coastguard Worker.W_AVG_W32_LSX: 1067*c0909341SAndroid Build Coastguard Worker.rept 2 1068*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1069*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 1070*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1071*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1072*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr21 1073*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr21 1074*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr6, vr2, vr21 1075*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr7, vr2, vr21 1076*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr22 1077*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr22 1078*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr6, vr3, vr22 1079*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr7, vr3, vr22 1080*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr6, vr4, bpcw_sh 1081*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr7, vr5, bpcw_sh 1082*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr7, vr6, 0 1083*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr8, vr7, 0x4E 1084*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr8, vr7 1085*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1086*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1087*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1088*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1089*c0909341SAndroid Build Coastguard Worker.endr 1090*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1091*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1092*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1093*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W32_LSX 1094*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1095*c0909341SAndroid Build Coastguard Worker 1096*c0909341SAndroid Build Coastguard Worker.W_AVG_W64_LSX: 1097*c0909341SAndroid Build Coastguard Worker.rept 4 1098*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1099*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 1100*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1101*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1102*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr21 1103*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr21 1104*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr6, vr2, vr21 1105*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr7, vr2, vr21 1106*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr22 1107*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr22 1108*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr6, vr3, vr22 1109*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr7, vr3, vr22 1110*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr6, vr4, bpcw_sh 1111*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr7, vr5, bpcw_sh 1112*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr7, vr6, 0 1113*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr8, vr7, 0x4E 1114*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr8, vr7 1115*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1116*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1117*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1118*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1119*c0909341SAndroid Build Coastguard Worker.endr 1120*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1121*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1122*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1123*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W64_LSX 1124*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1125*c0909341SAndroid Build Coastguard Worker 1126*c0909341SAndroid Build Coastguard Worker.W_AVG_W128_LSX: 1127*c0909341SAndroid Build Coastguard Worker.rept 8 1128*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1129*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 16 1130*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1131*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1132*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr21 1133*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr21 1134*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr6, vr2, vr21 1135*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr7, vr2, vr21 1136*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr22 1137*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr22 1138*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr6, vr3, vr22 1139*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr7, vr3, vr22 1140*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr6, vr4, bpcw_sh 1141*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr7, vr5, bpcw_sh 1142*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr7, vr6, 0 1143*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr8, vr7, 0x4E 1144*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr8, vr7 1145*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1146*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1147*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1148*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1149*c0909341SAndroid Build Coastguard Worker.endr 1150*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1151*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1152*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1153*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W128_LSX 1154*c0909341SAndroid Build Coastguard Worker.W_AVG_END_LSX: 1155*c0909341SAndroid Build Coastguard Workerendfunc 1156*c0909341SAndroid Build Coastguard Worker 1157*c0909341SAndroid Build Coastguard Workerfunction w_avg_8bpc_lasx 1158*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 1159*c0909341SAndroid Build Coastguard Worker li.w t2, 16 1160*c0909341SAndroid Build Coastguard Worker sub.w t2, t2, a6 // 16 - weight 1161*c0909341SAndroid Build Coastguard Worker xvreplgr2vr.h xr21, a6 1162*c0909341SAndroid Build Coastguard Worker xvreplgr2vr.h xr22, t2 1163*c0909341SAndroid Build Coastguard Worker 1164*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 1165*c0909341SAndroid Build Coastguard Worker li.w t1, 24 1166*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 1167*c0909341SAndroid Build Coastguard Worker la.local t1, .W_AVG_LASX_JRTABLE 1168*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 1169*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 1170*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 1171*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 1172*c0909341SAndroid Build Coastguard Worker 1173*c0909341SAndroid Build Coastguard Worker .align 3 1174*c0909341SAndroid Build Coastguard Worker.W_AVG_LASX_JRTABLE: 1175*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W128_LASX - .W_AVG_LASX_JRTABLE 1176*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W64_LASX - .W_AVG_LASX_JRTABLE 1177*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W32_LASX - .W_AVG_LASX_JRTABLE 1178*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W16_LASX - .W_AVG_LASX_JRTABLE 1179*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W8_LASX - .W_AVG_LASX_JRTABLE 1180*c0909341SAndroid Build Coastguard Worker .hword .W_AVG_W4_LASX - .W_AVG_LASX_JRTABLE 1181*c0909341SAndroid Build Coastguard Worker 1182*c0909341SAndroid Build Coastguard Worker.W_AVG_W4_LASX: 1183*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1184*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1185*c0909341SAndroid Build Coastguard Worker xvpermi.d xr2, xr0, 0xD8 1186*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr1, 0xD8 1187*c0909341SAndroid Build Coastguard Worker xvilvl.h xr4, xr3, xr2 1188*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr0, xr4, xr21 1189*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr0, xr4, xr22 1190*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr1, xr0, bpcw_sh 1191*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr0, xr1, 0 1192*c0909341SAndroid Build Coastguard Worker fst.s f0, a0, 0 1193*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1194*c0909341SAndroid Build Coastguard Worker xvstelm.w xr0, a0, 0, 4 1195*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1196*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 1197*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 1198*c0909341SAndroid Build Coastguard Worker add.d a0, a1, a0 1199*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W4_LASX 1200*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LASX 1201*c0909341SAndroid Build Coastguard Worker 1202*c0909341SAndroid Build Coastguard Worker.W_AVG_W8_LASX: 1203*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1204*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1205*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr2, xr0, xr21 1206*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr3, xr0, xr21 1207*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr2, xr1, xr22 1208*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr3, xr1, xr22 1209*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr3, xr2, bpcw_sh 1210*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr1, xr3, 0 1211*c0909341SAndroid Build Coastguard Worker xvpickod.w xr4, xr2, xr1 1212*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr4, xr1 1213*c0909341SAndroid Build Coastguard Worker xvstelm.d xr0, a0, 0, 0 1214*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1215*c0909341SAndroid Build Coastguard Worker xvstelm.d xr0, a0, 0, 2 1216*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1217*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1218*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1219*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1220*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W8_LASX 1221*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LASX 1222*c0909341SAndroid Build Coastguard Worker 1223*c0909341SAndroid Build Coastguard Worker.W_AVG_W16_LASX: 1224*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1225*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1226*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr2, xr0, xr21 1227*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr3, xr0, xr21 1228*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr2, xr1, xr22 1229*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr3, xr1, xr22 1230*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr3, xr2, bpcw_sh 1231*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr1, xr3, 0 1232*c0909341SAndroid Build Coastguard Worker xvpickod.w xr4, xr2, xr1 1233*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr4, xr1 1234*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr0, 0xD8 1235*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 1236*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1237*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1238*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1239*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1240*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W16_LASX 1241*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LSX 1242*c0909341SAndroid Build Coastguard Worker 1243*c0909341SAndroid Build Coastguard Worker.W_AVG_W32_LASX: 1244*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1245*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 1246*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1247*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 1248*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr21 1249*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr21 1250*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr6, xr2, xr21 1251*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr7, xr2, xr21 1252*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr22 1253*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr22 1254*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr6, xr3, xr22 1255*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr7, xr3, xr22 1256*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr6, xr4, bpcw_sh 1257*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr7, xr5, bpcw_sh 1258*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr7, xr6, 0 1259*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr8, xr7, 0x4E 1260*c0909341SAndroid Build Coastguard Worker xvilvl.b xr9, xr8, xr7 1261*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr9, 0xD8 1262*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1263*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1264*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1265*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1266*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1267*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W32_LASX 1268*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LASX 1269*c0909341SAndroid Build Coastguard Worker 1270*c0909341SAndroid Build Coastguard Worker.W_AVG_W64_LASX: 1271*c0909341SAndroid Build Coastguard Worker.rept 2 1272*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1273*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 1274*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1275*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 1276*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr21 1277*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr21 1278*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr6, xr2, xr21 1279*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr7, xr2, xr21 1280*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr22 1281*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr22 1282*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr6, xr3, xr22 1283*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr7, xr3, xr22 1284*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr6, xr4, bpcw_sh 1285*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr7, xr5, bpcw_sh 1286*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr7, xr6, 0 1287*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr8, xr7, 0x4E 1288*c0909341SAndroid Build Coastguard Worker xvilvl.b xr9, xr8, xr7 1289*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr9, 0xD8 1290*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1291*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1292*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1293*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 1294*c0909341SAndroid Build Coastguard Worker.endr 1295*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1296*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1297*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1298*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W64_LASX 1299*c0909341SAndroid Build Coastguard Worker b .W_AVG_END_LASX 1300*c0909341SAndroid Build Coastguard Worker 1301*c0909341SAndroid Build Coastguard Worker.W_AVG_W128_LASX: 1302*c0909341SAndroid Build Coastguard Worker.rept 4 1303*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1304*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 32 1305*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1306*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 1307*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr21 1308*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr21 1309*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr6, xr2, xr21 1310*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr7, xr2, xr21 1311*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr22 1312*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr22 1313*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr6, xr3, xr22 1314*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr7, xr3, xr22 1315*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr6, xr4, bpcw_sh 1316*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr7, xr5, bpcw_sh 1317*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr7, xr6, 0 1318*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr8, xr7, 0x4E 1319*c0909341SAndroid Build Coastguard Worker xvilvl.b xr9, xr8, xr7 1320*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr9, 0xD8 1321*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1322*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1323*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1324*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 1325*c0909341SAndroid Build Coastguard Worker.endr 1326*c0909341SAndroid Build Coastguard Worker 1327*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1328*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1329*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1330*c0909341SAndroid Build Coastguard Worker blt zero, a5, .W_AVG_W128_LASX 1331*c0909341SAndroid Build Coastguard Worker.W_AVG_END_LASX: 1332*c0909341SAndroid Build Coastguard Workerendfunc 1333*c0909341SAndroid Build Coastguard Worker 1334*c0909341SAndroid Build Coastguard Worker#undef bpc_sh 1335*c0909341SAndroid Build Coastguard Worker#undef bpcw_sh 1336*c0909341SAndroid Build Coastguard Worker 1337*c0909341SAndroid Build Coastguard Worker#define mask_sh 10 1338*c0909341SAndroid Build Coastguard Worker/* 1339*c0909341SAndroid Build Coastguard Workerstatic void mask_c(pixel *dst, const ptrdiff_t dst_stride, 1340*c0909341SAndroid Build Coastguard Worker const int16_t *tmp1, const int16_t *tmp2, const int w, int h, 1341*c0909341SAndroid Build Coastguard Worker const uint8_t *mask HIGHBD_DECL_SUFFIX) 1342*c0909341SAndroid Build Coastguard Worker*/ 1343*c0909341SAndroid Build Coastguard Workerfunction mask_8bpc_lsx 1344*c0909341SAndroid Build Coastguard Worker vldi vr21, 0x440 // 64 1345*c0909341SAndroid Build Coastguard Worker vxor.v vr19, vr19, vr19 1346*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 1347*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 1348*c0909341SAndroid Build Coastguard Worker li.w t1, 24 1349*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 1350*c0909341SAndroid Build Coastguard Worker la.local t1, .MASK_LSX_JRTABLE 1351*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 1352*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 1353*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 1354*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 1355*c0909341SAndroid Build Coastguard Worker 1356*c0909341SAndroid Build Coastguard Worker .align 3 1357*c0909341SAndroid Build Coastguard Worker.MASK_LSX_JRTABLE: 1358*c0909341SAndroid Build Coastguard Worker .hword .MASK_W128_LSX - .MASK_LSX_JRTABLE 1359*c0909341SAndroid Build Coastguard Worker .hword .MASK_W64_LSX - .MASK_LSX_JRTABLE 1360*c0909341SAndroid Build Coastguard Worker .hword .MASK_W32_LSX - .MASK_LSX_JRTABLE 1361*c0909341SAndroid Build Coastguard Worker .hword .MASK_W16_LSX - .MASK_LSX_JRTABLE 1362*c0909341SAndroid Build Coastguard Worker .hword .MASK_W8_LSX - .MASK_LSX_JRTABLE 1363*c0909341SAndroid Build Coastguard Worker .hword .MASK_W4_LSX - .MASK_LSX_JRTABLE 1364*c0909341SAndroid Build Coastguard Worker 1365*c0909341SAndroid Build Coastguard Worker.MASK_W4_LSX: 1366*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1367*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1368*c0909341SAndroid Build Coastguard Worker fld.d f22, a6, 0 1369*c0909341SAndroid Build Coastguard Worker 1370*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1371*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1372*c0909341SAndroid Build Coastguard Worker 1373*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1374*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1375*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1376*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1377*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr5, vr4, mask_sh 1378*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr1, vr5, 0 1379*c0909341SAndroid Build Coastguard Worker vpickod.w vr4, vr2, vr1 1380*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr4, vr1 1381*c0909341SAndroid Build Coastguard Worker fst.s f0, a0, 0 1382*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1383*c0909341SAndroid Build Coastguard Worker vstelm.w vr0, a0, 0, 1 1384*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 1385*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 1386*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 8 1387*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1388*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1389*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W4_LSX 1390*c0909341SAndroid Build Coastguard Worker b .MASK_END_LSX 1391*c0909341SAndroid Build Coastguard Worker.MASK_W8_LSX: 1392*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1393*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 16 1394*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1395*c0909341SAndroid Build Coastguard Worker vld vr11, a3, 16 1396*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1397*c0909341SAndroid Build Coastguard Worker 1398*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1399*c0909341SAndroid Build Coastguard Worker vilvh.b vr12, vr19, vr22 1400*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1401*c0909341SAndroid Build Coastguard Worker vsub.h vr13, vr21, vr12 1402*c0909341SAndroid Build Coastguard Worker 1403*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1404*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1405*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr10, vr12 1406*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr15, vr10, vr12 1407*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1408*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1409*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr14, vr11, vr13 1410*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr11, vr13 1411*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr4, mask_sh 1412*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr15, vr5, mask_sh 1413*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr15, vr14, 0 1414*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr6, vr15, 0x4E 1415*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr6, vr15 1416*c0909341SAndroid Build Coastguard Worker fst.d f0, a0, 0 1417*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1418*c0909341SAndroid Build Coastguard Worker vstelm.d vr0, a0, 0, 1 1419*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1420*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1421*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1422*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1423*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1424*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W8_LSX 1425*c0909341SAndroid Build Coastguard Worker b .MASK_END_LSX 1426*c0909341SAndroid Build Coastguard Worker 1427*c0909341SAndroid Build Coastguard Worker.MASK_W16_LSX: 1428*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1429*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 16 1430*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1431*c0909341SAndroid Build Coastguard Worker vld vr11, a3, 16 1432*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1433*c0909341SAndroid Build Coastguard Worker 1434*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1435*c0909341SAndroid Build Coastguard Worker vilvh.b vr12, vr19, vr22 1436*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1437*c0909341SAndroid Build Coastguard Worker vsub.h vr13, vr21, vr12 1438*c0909341SAndroid Build Coastguard Worker 1439*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1440*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1441*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr10, vr12 1442*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr15, vr10, vr12 1443*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1444*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1445*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr14, vr11, vr13 1446*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr11, vr13 1447*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr4, mask_sh 1448*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr15, vr5, mask_sh 1449*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr15, vr14, 0 1450*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr6, vr15, 0x4E 1451*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr6, vr15 1452*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1453*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1454*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1455*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1456*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1457*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1458*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W16_LSX 1459*c0909341SAndroid Build Coastguard Worker b .MASK_END_LSX 1460*c0909341SAndroid Build Coastguard Worker.MASK_W32_LSX: 1461*c0909341SAndroid Build Coastguard Worker.rept 2 1462*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1463*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 16 1464*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1465*c0909341SAndroid Build Coastguard Worker vld vr11, a3, 16 1466*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1467*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1468*c0909341SAndroid Build Coastguard Worker vilvh.b vr12, vr19, vr22 1469*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1470*c0909341SAndroid Build Coastguard Worker vsub.h vr13, vr21, vr12 1471*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1472*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1473*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr10, vr12 1474*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr15, vr10, vr12 1475*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1476*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1477*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr14, vr11, vr13 1478*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr11, vr13 1479*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr4, mask_sh 1480*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr15, vr5, mask_sh 1481*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr15, vr14, 0 1482*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr6, vr15, 0x4E 1483*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr6, vr15 1484*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1485*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1486*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1487*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1488*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1489*c0909341SAndroid Build Coastguard Worker.endr 1490*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1491*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1492*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1493*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W32_LSX 1494*c0909341SAndroid Build Coastguard Worker b .MASK_END_LSX 1495*c0909341SAndroid Build Coastguard Worker.MASK_W64_LSX: 1496*c0909341SAndroid Build Coastguard Worker.rept 4 1497*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1498*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 16 1499*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1500*c0909341SAndroid Build Coastguard Worker vld vr11, a3, 16 1501*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1502*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1503*c0909341SAndroid Build Coastguard Worker vilvh.b vr12, vr19, vr22 1504*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1505*c0909341SAndroid Build Coastguard Worker vsub.h vr13, vr21, vr12 1506*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1507*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1508*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr10, vr12 1509*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr15, vr10, vr12 1510*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1511*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1512*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr14, vr11, vr13 1513*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr11, vr13 1514*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr4, mask_sh 1515*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr15, vr5, mask_sh 1516*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr15, vr14, 0 1517*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr6, vr15, 0x4E 1518*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr6, vr15 1519*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1520*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1521*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1522*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1523*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1524*c0909341SAndroid Build Coastguard Worker.endr 1525*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1526*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1527*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1528*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W64_LSX 1529*c0909341SAndroid Build Coastguard Worker b .MASK_END_LSX 1530*c0909341SAndroid Build Coastguard Worker.MASK_W128_LSX: 1531*c0909341SAndroid Build Coastguard Worker.rept 8 1532*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1533*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 16 1534*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1535*c0909341SAndroid Build Coastguard Worker vld vr11, a3, 16 1536*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1537*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1538*c0909341SAndroid Build Coastguard Worker vilvh.b vr12, vr19, vr22 1539*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1540*c0909341SAndroid Build Coastguard Worker vsub.h vr13, vr21, vr12 1541*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr0, vr2 1542*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr0, vr2 1543*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr10, vr12 1544*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr15, vr10, vr12 1545*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr1, vr3 1546*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr1, vr3 1547*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr14, vr11, vr13 1548*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr11, vr13 1549*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr4, mask_sh 1550*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr15, vr5, mask_sh 1551*c0909341SAndroid Build Coastguard Worker vssrlrni.bu.h vr15, vr14, 0 1552*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr6, vr15, 0x4E 1553*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr6, vr15 1554*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 1555*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1556*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1557*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1558*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 1559*c0909341SAndroid Build Coastguard Worker.endr 1560*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1561*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1562*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1563*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W128_LSX 1564*c0909341SAndroid Build Coastguard Worker.MASK_END_LSX: 1565*c0909341SAndroid Build Coastguard Workerendfunc 1566*c0909341SAndroid Build Coastguard Worker 1567*c0909341SAndroid Build Coastguard Workerfunction mask_8bpc_lasx 1568*c0909341SAndroid Build Coastguard Worker xvldi xr21, 0x440 // 64 1569*c0909341SAndroid Build Coastguard Worker xvxor.v xr19, xr19, xr19 1570*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 1571*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 1572*c0909341SAndroid Build Coastguard Worker li.w t1, 24 1573*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 1574*c0909341SAndroid Build Coastguard Worker la.local t1, .MASK_LASX_JRTABLE 1575*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 1576*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 1577*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 1578*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 1579*c0909341SAndroid Build Coastguard Worker 1580*c0909341SAndroid Build Coastguard Worker .align 3 1581*c0909341SAndroid Build Coastguard Worker.MASK_LASX_JRTABLE: 1582*c0909341SAndroid Build Coastguard Worker .hword .MASK_W128_LASX - .MASK_LASX_JRTABLE 1583*c0909341SAndroid Build Coastguard Worker .hword .MASK_W64_LASX - .MASK_LASX_JRTABLE 1584*c0909341SAndroid Build Coastguard Worker .hword .MASK_W32_LASX - .MASK_LASX_JRTABLE 1585*c0909341SAndroid Build Coastguard Worker .hword .MASK_W16_LASX - .MASK_LASX_JRTABLE 1586*c0909341SAndroid Build Coastguard Worker .hword .MASK_W8_LASX - .MASK_LASX_JRTABLE 1587*c0909341SAndroid Build Coastguard Worker .hword .MASK_W4_LASX - .MASK_LASX_JRTABLE 1588*c0909341SAndroid Build Coastguard Worker 1589*c0909341SAndroid Build Coastguard Worker.MASK_W4_LASX: 1590*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1591*c0909341SAndroid Build Coastguard Worker vld vr1, a3, 0 1592*c0909341SAndroid Build Coastguard Worker fld.d f22, a6, 0 1593*c0909341SAndroid Build Coastguard Worker 1594*c0909341SAndroid Build Coastguard Worker vilvl.h vr4, vr1, vr0 1595*c0909341SAndroid Build Coastguard Worker vilvh.h vr14, vr1, vr0 1596*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr19, vr22 1597*c0909341SAndroid Build Coastguard Worker vsub.h vr3, vr21, vr2 1598*c0909341SAndroid Build Coastguard Worker xvpermi.q xr14, xr4, 0x20 1599*c0909341SAndroid Build Coastguard Worker vilvl.h vr5, vr3, vr2 1600*c0909341SAndroid Build Coastguard Worker vilvh.h vr15, vr3, vr2 1601*c0909341SAndroid Build Coastguard Worker xvpermi.q xr15, xr5, 0x20 1602*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr0, xr14, xr15 1603*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr0, xr14, xr15 1604*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr1, xr0, mask_sh 1605*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr2, xr1, 0 1606*c0909341SAndroid Build Coastguard Worker fst.s f2, a0, 0 1607*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1608*c0909341SAndroid Build Coastguard Worker xvstelm.w xr2, a0, 0, 4 1609*c0909341SAndroid Build Coastguard Worker 1610*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 1611*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 16 1612*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 8 1613*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1614*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1615*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W4_LASX 1616*c0909341SAndroid Build Coastguard Worker b .MASK_END_LASX 1617*c0909341SAndroid Build Coastguard Worker 1618*c0909341SAndroid Build Coastguard Worker.MASK_W8_LASX: 1619*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1620*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1621*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1622*c0909341SAndroid Build Coastguard Worker 1623*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr22 1624*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr21, xr2 1625*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr2 1626*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr2 1627*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr3 1628*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr3 1629*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr5, xr4, mask_sh 1630*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr1, xr5, 0 1631*c0909341SAndroid Build Coastguard Worker xvpickod.w xr4, xr2, xr1 1632*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr4, xr1 1633*c0909341SAndroid Build Coastguard Worker fst.d f0, a0, 0 1634*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1635*c0909341SAndroid Build Coastguard Worker xvstelm.d xr0, a0, 0, 2 1636*c0909341SAndroid Build Coastguard Worker 1637*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1638*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1639*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1640*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1641*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1642*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W8_LASX 1643*c0909341SAndroid Build Coastguard Worker b .MASK_END_LASX 1644*c0909341SAndroid Build Coastguard Worker 1645*c0909341SAndroid Build Coastguard Worker.MASK_W16_LASX: 1646*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1647*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1648*c0909341SAndroid Build Coastguard Worker vld vr22, a6, 0 1649*c0909341SAndroid Build Coastguard Worker 1650*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr22 1651*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr21, xr2 1652*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr2 1653*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr2 1654*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr3 1655*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr3 1656*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr5, xr4, mask_sh 1657*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr1, xr5, 0 1658*c0909341SAndroid Build Coastguard Worker xvpickod.w xr4, xr2, xr1 1659*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr4, xr1 1660*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr0, 0xD8 1661*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 1662*c0909341SAndroid Build Coastguard Worker 1663*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1664*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1665*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 16 1666*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1667*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1668*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W16_LASX 1669*c0909341SAndroid Build Coastguard Worker b .MASK_END_LASX 1670*c0909341SAndroid Build Coastguard Worker.MASK_W32_LASX: 1671*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1672*c0909341SAndroid Build Coastguard Worker xvld xr10, a2, 32 1673*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1674*c0909341SAndroid Build Coastguard Worker xvld xr11, a3, 32 1675*c0909341SAndroid Build Coastguard Worker xvld xr22, a6, 0 1676*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr22 1677*c0909341SAndroid Build Coastguard Worker xvpermi.q xr4, xr22, 0x01 1678*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr12, xr4 1679*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr21, xr2 1680*c0909341SAndroid Build Coastguard Worker xvsub.h xr13, xr21, xr12 1681*c0909341SAndroid Build Coastguard Worker 1682*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr2 1683*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr2 1684*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr14, xr10, xr12 1685*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr15, xr10, xr12 1686*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr3 1687*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr3 1688*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr14, xr11, xr13 1689*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr15, xr11, xr13 1690*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr14, xr4, mask_sh 1691*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr15, xr5, mask_sh 1692*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr15, xr14, 0 1693*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr6, xr15, 0x4E 1694*c0909341SAndroid Build Coastguard Worker xvilvl.b xr1, xr6, xr15 1695*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr1, 0xD8 1696*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1697*c0909341SAndroid Build Coastguard Worker 1698*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1699*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1700*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 32 1701*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1702*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1703*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W32_LASX 1704*c0909341SAndroid Build Coastguard Worker b .MASK_END_LASX 1705*c0909341SAndroid Build Coastguard Worker 1706*c0909341SAndroid Build Coastguard Worker.MASK_W64_LASX: 1707*c0909341SAndroid Build Coastguard Worker.rept 2 1708*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1709*c0909341SAndroid Build Coastguard Worker xvld xr10, a2, 32 1710*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1711*c0909341SAndroid Build Coastguard Worker xvld xr11, a3, 32 1712*c0909341SAndroid Build Coastguard Worker xvld xr22, a6, 0 1713*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr22 1714*c0909341SAndroid Build Coastguard Worker xvpermi.q xr4, xr22, 0x01 1715*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr12, xr4 1716*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr21, xr2 1717*c0909341SAndroid Build Coastguard Worker xvsub.h xr13, xr21, xr12 1718*c0909341SAndroid Build Coastguard Worker 1719*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr2 1720*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr2 1721*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr14, xr10, xr12 1722*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr15, xr10, xr12 1723*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr3 1724*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr3 1725*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr14, xr11, xr13 1726*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr15, xr11, xr13 1727*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr14, xr4, mask_sh 1728*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr15, xr5, mask_sh 1729*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr15, xr14, 0 1730*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr6, xr15, 0x4E 1731*c0909341SAndroid Build Coastguard Worker xvilvl.b xr1, xr6, xr15 1732*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr1, 0xD8 1733*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1734*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1735*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1736*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 32 1737*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 1738*c0909341SAndroid Build Coastguard Worker.endr 1739*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1740*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1741*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1742*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W64_LASX 1743*c0909341SAndroid Build Coastguard Worker b .MASK_END_LASX 1744*c0909341SAndroid Build Coastguard Worker 1745*c0909341SAndroid Build Coastguard Worker.MASK_W128_LASX: 1746*c0909341SAndroid Build Coastguard Worker.rept 4 1747*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 1748*c0909341SAndroid Build Coastguard Worker xvld xr10, a2, 32 1749*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 1750*c0909341SAndroid Build Coastguard Worker xvld xr11, a3, 32 1751*c0909341SAndroid Build Coastguard Worker xvld xr22, a6, 0 1752*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr22 1753*c0909341SAndroid Build Coastguard Worker xvpermi.q xr4, xr22, 0x01 1754*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr12, xr4 1755*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr21, xr2 1756*c0909341SAndroid Build Coastguard Worker xvsub.h xr13, xr21, xr12 1757*c0909341SAndroid Build Coastguard Worker 1758*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr0, xr2 1759*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr5, xr0, xr2 1760*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr14, xr10, xr12 1761*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr15, xr10, xr12 1762*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr4, xr1, xr3 1763*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr1, xr3 1764*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr14, xr11, xr13 1765*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr15, xr11, xr13 1766*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr14, xr4, mask_sh 1767*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr15, xr5, mask_sh 1768*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr15, xr14, 0 1769*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr6, xr15, 0x4E 1770*c0909341SAndroid Build Coastguard Worker xvilvl.b xr1, xr6, xr15 1771*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr1, 0xD8 1772*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 1773*c0909341SAndroid Build Coastguard Worker 1774*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 1775*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 1776*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 32 1777*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 1778*c0909341SAndroid Build Coastguard Worker.endr 1779*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a1 1780*c0909341SAndroid Build Coastguard Worker add.d a0, t8, zero 1781*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -1 1782*c0909341SAndroid Build Coastguard Worker blt zero, a5, .MASK_W128_LASX 1783*c0909341SAndroid Build Coastguard Worker.MASK_END_LASX: 1784*c0909341SAndroid Build Coastguard Workerendfunc 1785*c0909341SAndroid Build Coastguard Worker 1786*c0909341SAndroid Build Coastguard Worker/* 1787*c0909341SAndroid Build Coastguard Workerstatic void w_mask_c(pixel *dst, const ptrdiff_t dst_stride, 1788*c0909341SAndroid Build Coastguard Worker const int16_t *tmp1, const int16_t *tmp2, const int w, int h, 1789*c0909341SAndroid Build Coastguard Worker uint8_t *mask, const int sign, 1790*c0909341SAndroid Build Coastguard Worker const int ss_hor, const int ss_ver HIGHBD_DECL_SUFFIX) 1791*c0909341SAndroid Build Coastguard Worker*/ 1792*c0909341SAndroid Build Coastguard Workerfunction w_mask_420_8bpc_lsx 1793*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -24 1794*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 1795*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 1796*c0909341SAndroid Build Coastguard Worker fst.d f26, sp, 16 1797*c0909341SAndroid Build Coastguard Worker vldi vr20, 0x440 1798*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr21, a7 1799*c0909341SAndroid Build Coastguard Worker vldi vr22, 0x426 1800*c0909341SAndroid Build Coastguard Worker 1801*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 1802*c0909341SAndroid Build Coastguard Worker li.w t1, 24 1803*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 1804*c0909341SAndroid Build Coastguard Worker la.local t1, .WMASK420_LSX_JRTABLE 1805*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 1806*c0909341SAndroid Build Coastguard Worker ld.h t8, t0, 0 1807*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t8 1808*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 1809*c0909341SAndroid Build Coastguard Worker 1810*c0909341SAndroid Build Coastguard Worker .align 3 1811*c0909341SAndroid Build Coastguard Worker.WMASK420_LSX_JRTABLE: 1812*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W128_LSX - .WMASK420_LSX_JRTABLE 1813*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W64_LSX - .WMASK420_LSX_JRTABLE 1814*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W32_LSX - .WMASK420_LSX_JRTABLE 1815*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W16_LSX - .WMASK420_LSX_JRTABLE 1816*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W8_LSX - .WMASK420_LSX_JRTABLE 1817*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W4_LSX - .WMASK420_LSX_JRTABLE 1818*c0909341SAndroid Build Coastguard Worker 1819*c0909341SAndroid Build Coastguard Worker.WMASK420_W4_LSX: 1820*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1821*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 1822*c0909341SAndroid Build Coastguard Worker vld vr2, a3, 0 1823*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1824*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -4 1825*c0909341SAndroid Build Coastguard Worker 1826*c0909341SAndroid Build Coastguard Worker vabsd.h vr4, vr0, vr2 1827*c0909341SAndroid Build Coastguard Worker vabsd.h vr5, vr1, vr3 1828*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr4, 8 1829*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr5, 8 1830*c0909341SAndroid Build Coastguard Worker vsrli.h vr4, vr4, 8 1831*c0909341SAndroid Build Coastguard Worker vsrli.h vr5, vr5, 8 1832*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr4, vr22 1833*c0909341SAndroid Build Coastguard Worker vadd.h vr5, vr5, vr22 1834*c0909341SAndroid Build Coastguard Worker vmin.hu vr6, vr4, vr20 1835*c0909341SAndroid Build Coastguard Worker vmin.hu vr7, vr5, vr20 1836*c0909341SAndroid Build Coastguard Worker vsub.h vr8, vr20, vr6 1837*c0909341SAndroid Build Coastguard Worker vsub.h vr9, vr20, vr7 1838*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr6, vr0 1839*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr6, vr0 1840*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr7, vr1 1841*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr11, vr7, vr1 1842*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr8, vr2 1843*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr8, vr2 1844*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr10, vr9, vr3 1845*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr11, vr9, vr3 1846*c0909341SAndroid Build Coastguard Worker vilvl.w vr0, vr5, vr4 1847*c0909341SAndroid Build Coastguard Worker vilvh.w vr1, vr5, vr4 1848*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr11, vr10 1849*c0909341SAndroid Build Coastguard Worker vilvh.w vr3, vr11, vr10 1850*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr1, vr0, 10 1851*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr3, vr2, 10 1852*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr3, vr1, 0 1853*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 0 1854*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1855*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 1 1856*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1857*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 2 1858*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1859*c0909341SAndroid Build Coastguard Worker vstelm.w vr3, a0, 0, 3 1860*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1861*c0909341SAndroid Build Coastguard Worker vpickev.h vr0, vr7, vr6 1862*c0909341SAndroid Build Coastguard Worker vpickod.h vr1, vr7, vr6 1863*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 1864*c0909341SAndroid Build Coastguard Worker vshuf4i.h vr0, vr0, 0xd8 1865*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr2, vr0, vr0 1866*c0909341SAndroid Build Coastguard Worker vpickev.h vr2, vr2, vr2 1867*c0909341SAndroid Build Coastguard Worker vsub.h vr2, vr2, vr21 1868*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr2, 2 1869*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr2, vr2, 2 1870*c0909341SAndroid Build Coastguard Worker vstelm.w vr2, a6, 0, 0 1871*c0909341SAndroid Build Coastguard Worker 1872*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1873*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1874*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 4 1875*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W4_LSX 1876*c0909341SAndroid Build Coastguard Worker b .END_W420 1877*c0909341SAndroid Build Coastguard Worker 1878*c0909341SAndroid Build Coastguard Worker.WMASK420_W8_LSX: 1879*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1880*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 1881*c0909341SAndroid Build Coastguard Worker vld vr2, a3, 0 1882*c0909341SAndroid Build Coastguard Worker vld vr3, a3, 16 1883*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 1884*c0909341SAndroid Build Coastguard Worker 1885*c0909341SAndroid Build Coastguard Worker vabsd.h vr4, vr0, vr2 1886*c0909341SAndroid Build Coastguard Worker vabsd.h vr5, vr1, vr3 1887*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr4, 8 1888*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr5, 8 1889*c0909341SAndroid Build Coastguard Worker vsrli.h vr4, vr4, 8 1890*c0909341SAndroid Build Coastguard Worker vsrli.h vr5, vr5, 8 1891*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr4, vr22 1892*c0909341SAndroid Build Coastguard Worker vadd.h vr5, vr5, vr22 1893*c0909341SAndroid Build Coastguard Worker vmin.hu vr6, vr4, vr20 1894*c0909341SAndroid Build Coastguard Worker vmin.hu vr7, vr5, vr20 1895*c0909341SAndroid Build Coastguard Worker vsub.h vr8, vr20, vr6 1896*c0909341SAndroid Build Coastguard Worker vsub.h vr9, vr20, vr7 1897*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr4, vr6, vr0 1898*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr5, vr6, vr0 1899*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr7, vr1 1900*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr11, vr7, vr1 1901*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr4, vr8, vr2 1902*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr5, vr8, vr2 1903*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr10, vr9, vr3 1904*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr11, vr9, vr3 1905*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr10, vr4, 10 1906*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr11, vr5, 10 1907*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr11, vr10, 0 1908*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr0, vr11, 0x4E 1909*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr0, vr11 1910*c0909341SAndroid Build Coastguard Worker vstelm.d vr3, a0, 0, 0 1911*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1912*c0909341SAndroid Build Coastguard Worker vstelm.d vr3, a0, 0, 1 1913*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 1914*c0909341SAndroid Build Coastguard Worker vpickev.h vr0, vr7, vr6 1915*c0909341SAndroid Build Coastguard Worker vpickod.h vr1, vr7, vr6 1916*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr1 1917*c0909341SAndroid Build Coastguard Worker vilvh.d vr2, vr0, vr0 1918*c0909341SAndroid Build Coastguard Worker vadd.h vr2, vr2, vr0 1919*c0909341SAndroid Build Coastguard Worker vsub.h vr2, vr2, vr21 1920*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr2, 2 1921*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr2, vr2, 2 1922*c0909341SAndroid Build Coastguard Worker vstelm.w vr2, a6, 0, 0 1923*c0909341SAndroid Build Coastguard Worker 1924*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 1925*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 1926*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 4 1927*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W8_LSX 1928*c0909341SAndroid Build Coastguard Worker b .END_W420 1929*c0909341SAndroid Build Coastguard Worker 1930*c0909341SAndroid Build Coastguard Worker.WMASK420_W16_LSX: 1931*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 1932*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 1933*c0909341SAndroid Build Coastguard Worker alsl.d a2, a4, a2, 1 1934*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 0 1935*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 16 1936*c0909341SAndroid Build Coastguard Worker vld vr4, a3, 0 1937*c0909341SAndroid Build Coastguard Worker vld vr5, a3, 16 1938*c0909341SAndroid Build Coastguard Worker alsl.d a3, a4, a3, 1 1939*c0909341SAndroid Build Coastguard Worker vld vr6, a3, 0 1940*c0909341SAndroid Build Coastguard Worker vld vr7, a3, 16 1941*c0909341SAndroid Build Coastguard Worker 1942*c0909341SAndroid Build Coastguard Worker vabsd.h vr8, vr0, vr4 1943*c0909341SAndroid Build Coastguard Worker vabsd.h vr9, vr1, vr5 1944*c0909341SAndroid Build Coastguard Worker vabsd.h vr10, vr2, vr6 1945*c0909341SAndroid Build Coastguard Worker vabsd.h vr11, vr3, vr7 1946*c0909341SAndroid Build Coastguard Worker vaddi.hu vr8, vr8, 8 1947*c0909341SAndroid Build Coastguard Worker vaddi.hu vr9, vr9, 8 1948*c0909341SAndroid Build Coastguard Worker vaddi.hu vr10, vr10, 8 1949*c0909341SAndroid Build Coastguard Worker vaddi.hu vr11, vr11, 8 1950*c0909341SAndroid Build Coastguard Worker vsrli.h vr8, vr8, 8 1951*c0909341SAndroid Build Coastguard Worker vsrli.h vr9, vr9, 8 1952*c0909341SAndroid Build Coastguard Worker vsrli.h vr10, vr10, 8 1953*c0909341SAndroid Build Coastguard Worker vsrli.h vr11, vr11, 8 1954*c0909341SAndroid Build Coastguard Worker vadd.h vr8, vr8, vr22 1955*c0909341SAndroid Build Coastguard Worker vadd.h vr9, vr9, vr22 1956*c0909341SAndroid Build Coastguard Worker vadd.h vr10, vr10, vr22 1957*c0909341SAndroid Build Coastguard Worker vadd.h vr11, vr11, vr22 1958*c0909341SAndroid Build Coastguard Worker vmin.hu vr12, vr8, vr20 1959*c0909341SAndroid Build Coastguard Worker vmin.hu vr13, vr9, vr20 1960*c0909341SAndroid Build Coastguard Worker vmin.hu vr14, vr10, vr20 1961*c0909341SAndroid Build Coastguard Worker vmin.hu vr15, vr11, vr20 1962*c0909341SAndroid Build Coastguard Worker vsub.h vr16, vr20, vr12 1963*c0909341SAndroid Build Coastguard Worker vsub.h vr17, vr20, vr13 1964*c0909341SAndroid Build Coastguard Worker vsub.h vr18, vr20, vr14 1965*c0909341SAndroid Build Coastguard Worker vsub.h vr19, vr20, vr15 1966*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr8, vr12, vr0 1967*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr9, vr12, vr0 1968*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr13, vr1 1969*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr11, vr13, vr1 1970*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr23, vr14, vr2 1971*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr24, vr14, vr2 1972*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr25, vr15, vr3 1973*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr26, vr15, vr3 1974*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr8, vr16, vr4 1975*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr16, vr4 1976*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr10, vr17, vr5 1977*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr11, vr17, vr5 1978*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr23, vr18, vr6 1979*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr24, vr18, vr6 1980*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr25, vr19, vr7 1981*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr26, vr19, vr7 1982*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr10, vr8, 10 1983*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr11, vr9, 10 1984*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr25, vr23, 10 1985*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr26, vr24, 10 1986*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr11, vr10, 0 1987*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr26, vr25, 0 1988*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr0, vr11, 0x4E 1989*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr1, vr26, 0x4E 1990*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr0, vr11 1991*c0909341SAndroid Build Coastguard Worker vilvl.b vr7, vr1, vr26 1992*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 0 1993*c0909341SAndroid Build Coastguard Worker vstx vr7, a0, a1 1994*c0909341SAndroid Build Coastguard Worker vpickev.h vr0, vr13, vr12 1995*c0909341SAndroid Build Coastguard Worker vpickod.h vr1, vr13, vr12 1996*c0909341SAndroid Build Coastguard Worker vpickev.h vr2, vr15, vr14 1997*c0909341SAndroid Build Coastguard Worker vpickod.h vr3, vr15, vr14 1998*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr0, vr1 1999*c0909341SAndroid Build Coastguard Worker vadd.h vr5, vr2, vr3 2000*c0909341SAndroid Build Coastguard Worker vadd.h vr4, vr4, vr5 2001*c0909341SAndroid Build Coastguard Worker vsub.h vr4, vr4, vr21 2002*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr4, vr4, 2 2003*c0909341SAndroid Build Coastguard Worker vstelm.d vr4, a6, 0, 0 2004*c0909341SAndroid Build Coastguard Worker 2005*c0909341SAndroid Build Coastguard Worker alsl.d a2, a4, a2, 1 2006*c0909341SAndroid Build Coastguard Worker alsl.d a3, a4, a3, 1 2007*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2008*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 8 2009*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2010*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W16_LSX 2011*c0909341SAndroid Build Coastguard Worker b .END_W420 2012*c0909341SAndroid Build Coastguard Worker 2013*c0909341SAndroid Build Coastguard Worker.WMASK420_W32_LSX: 2014*c0909341SAndroid Build Coastguard Worker.WMASK420_W64_LSX: 2015*c0909341SAndroid Build Coastguard Worker.WMASK420_W128_LSX: 2016*c0909341SAndroid Build Coastguard Worker 2017*c0909341SAndroid Build Coastguard Worker.LOOP_W32_420_LSX: 2018*c0909341SAndroid Build Coastguard Worker add.d t1, a2, zero 2019*c0909341SAndroid Build Coastguard Worker add.d t2, a3, zero 2020*c0909341SAndroid Build Coastguard Worker add.d t3, a0, zero 2021*c0909341SAndroid Build Coastguard Worker add.d t4, a6, zero 2022*c0909341SAndroid Build Coastguard Worker alsl.d t5, a4, t1, 1 2023*c0909341SAndroid Build Coastguard Worker alsl.d t6, a4, t2, 1 2024*c0909341SAndroid Build Coastguard Worker or t7, a4, a4 2025*c0909341SAndroid Build Coastguard Worker 2026*c0909341SAndroid Build Coastguard Worker.W32_420_LSX: 2027*c0909341SAndroid Build Coastguard Worker vld vr0, t1, 0 2028*c0909341SAndroid Build Coastguard Worker vld vr1, t1, 16 2029*c0909341SAndroid Build Coastguard Worker vld vr2, t2, 0 2030*c0909341SAndroid Build Coastguard Worker vld vr3, t2, 16 2031*c0909341SAndroid Build Coastguard Worker vld vr4, t5, 0 2032*c0909341SAndroid Build Coastguard Worker vld vr5, t5, 16 2033*c0909341SAndroid Build Coastguard Worker vld vr6, t6, 0 2034*c0909341SAndroid Build Coastguard Worker vld vr7, t6, 16 2035*c0909341SAndroid Build Coastguard Worker addi.d t1, t1, 32 2036*c0909341SAndroid Build Coastguard Worker addi.d t2, t2, 32 2037*c0909341SAndroid Build Coastguard Worker addi.d t5, t5, 32 2038*c0909341SAndroid Build Coastguard Worker addi.d t6, t6, 32 2039*c0909341SAndroid Build Coastguard Worker addi.w t7, t7, -16 2040*c0909341SAndroid Build Coastguard Worker vabsd.h vr8, vr0, vr2 2041*c0909341SAndroid Build Coastguard Worker vabsd.h vr9, vr1, vr3 2042*c0909341SAndroid Build Coastguard Worker vabsd.h vr10, vr4, vr6 2043*c0909341SAndroid Build Coastguard Worker vabsd.h vr11, vr5, vr7 2044*c0909341SAndroid Build Coastguard Worker vaddi.hu vr8, vr8, 8 2045*c0909341SAndroid Build Coastguard Worker vaddi.hu vr9, vr9, 8 2046*c0909341SAndroid Build Coastguard Worker vaddi.hu vr10, vr10, 8 2047*c0909341SAndroid Build Coastguard Worker vaddi.hu vr11, vr11, 8 2048*c0909341SAndroid Build Coastguard Worker vsrli.h vr8, vr8, 8 2049*c0909341SAndroid Build Coastguard Worker vsrli.h vr9, vr9, 8 2050*c0909341SAndroid Build Coastguard Worker vsrli.h vr10, vr10, 8 2051*c0909341SAndroid Build Coastguard Worker vsrli.h vr11, vr11, 8 2052*c0909341SAndroid Build Coastguard Worker vadd.h vr8, vr8, vr22 2053*c0909341SAndroid Build Coastguard Worker vadd.h vr9, vr9, vr22 2054*c0909341SAndroid Build Coastguard Worker vadd.h vr10, vr10, vr22 2055*c0909341SAndroid Build Coastguard Worker vadd.h vr11, vr11, vr22 2056*c0909341SAndroid Build Coastguard Worker vmin.hu vr12, vr8, vr20 2057*c0909341SAndroid Build Coastguard Worker vmin.hu vr13, vr9, vr20 2058*c0909341SAndroid Build Coastguard Worker vmin.hu vr14, vr10, vr20 2059*c0909341SAndroid Build Coastguard Worker vmin.hu vr15, vr11, vr20 2060*c0909341SAndroid Build Coastguard Worker vsub.h vr16, vr20, vr12 2061*c0909341SAndroid Build Coastguard Worker vsub.h vr17, vr20, vr13 2062*c0909341SAndroid Build Coastguard Worker vsub.h vr18, vr20, vr14 2063*c0909341SAndroid Build Coastguard Worker vsub.h vr19, vr20, vr15 2064*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr8, vr12, vr0 2065*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr9, vr12, vr0 2066*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr13, vr1 2067*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr11, vr13, vr1 2068*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr23, vr14, vr4 2069*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr24, vr14, vr4 2070*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr25, vr15, vr5 2071*c0909341SAndroid Build Coastguard Worker vmulwod.w.h vr26, vr15, vr5 2072*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr8, vr16, vr2 2073*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr16, vr2 2074*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr10, vr17, vr3 2075*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr11, vr17, vr3 2076*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr23, vr18, vr6 2077*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr24, vr18, vr6 2078*c0909341SAndroid Build Coastguard Worker vmaddwev.w.h vr25, vr19, vr7 2079*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr26, vr19, vr7 2080*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr10, vr8, 10 2081*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr11, vr9, 10 2082*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr25, vr23, 10 2083*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr26, vr24, 10 2084*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr11, vr10, 0 2085*c0909341SAndroid Build Coastguard Worker vssrlni.bu.h vr26, vr25, 0 2086*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr8, vr11, 0x4E 2087*c0909341SAndroid Build Coastguard Worker vshuf4i.w vr9, vr26, 0x4E 2088*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr8, vr11 2089*c0909341SAndroid Build Coastguard Worker vilvl.b vr7, vr9, vr26 2090*c0909341SAndroid Build Coastguard Worker vst vr3, t3, 0 2091*c0909341SAndroid Build Coastguard Worker vstx vr7, a1, t3 2092*c0909341SAndroid Build Coastguard Worker addi.d t3, t3, 16 2093*c0909341SAndroid Build Coastguard Worker vpickev.h vr8, vr13, vr12 2094*c0909341SAndroid Build Coastguard Worker vpickod.h vr9, vr13, vr12 2095*c0909341SAndroid Build Coastguard Worker vpickev.h vr10, vr15, vr14 2096*c0909341SAndroid Build Coastguard Worker vpickod.h vr11, vr15, vr14 2097*c0909341SAndroid Build Coastguard Worker vadd.h vr8, vr8, vr9 2098*c0909341SAndroid Build Coastguard Worker vadd.h vr10, vr10, vr11 2099*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr8, vr10 2100*c0909341SAndroid Build Coastguard Worker vsub.h vr12, vr12, vr21 2101*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr12, vr12, 2 2102*c0909341SAndroid Build Coastguard Worker vstelm.d vr12, t4, 0, 0 2103*c0909341SAndroid Build Coastguard Worker addi.d t4, t4, 8 2104*c0909341SAndroid Build Coastguard Worker bne t7, zero, .W32_420_LSX 2105*c0909341SAndroid Build Coastguard Worker 2106*c0909341SAndroid Build Coastguard Worker alsl.d a2, a4, a2, 2 2107*c0909341SAndroid Build Coastguard Worker alsl.d a3, a4, a3, 2 2108*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2109*c0909341SAndroid Build Coastguard Worker srai.w t8, a4, 1 2110*c0909341SAndroid Build Coastguard Worker add.d a6, a6, t8 2111*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2112*c0909341SAndroid Build Coastguard Worker blt zero, a5, .LOOP_W32_420_LSX 2113*c0909341SAndroid Build Coastguard Worker 2114*c0909341SAndroid Build Coastguard Worker.END_W420: 2115*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 2116*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 2117*c0909341SAndroid Build Coastguard Worker fld.d f26, sp, 16 2118*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 24 2119*c0909341SAndroid Build Coastguard Workerendfunc 2120*c0909341SAndroid Build Coastguard Worker 2121*c0909341SAndroid Build Coastguard Workerfunction w_mask_420_8bpc_lasx 2122*c0909341SAndroid Build Coastguard Worker xvldi xr20, 0x440 2123*c0909341SAndroid Build Coastguard Worker xvreplgr2vr.h xr21, a7 2124*c0909341SAndroid Build Coastguard Worker xvldi xr22, 0x426 2125*c0909341SAndroid Build Coastguard Worker 2126*c0909341SAndroid Build Coastguard Worker clz.w t0, a4 2127*c0909341SAndroid Build Coastguard Worker li.w t1, 24 2128*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 2129*c0909341SAndroid Build Coastguard Worker la.local t1, .WMASK420_LASX_JRTABLE 2130*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 2131*c0909341SAndroid Build Coastguard Worker ld.h t8, t0, 0 2132*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t8 2133*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 2134*c0909341SAndroid Build Coastguard Worker 2135*c0909341SAndroid Build Coastguard Worker .align 3 2136*c0909341SAndroid Build Coastguard Worker.WMASK420_LASX_JRTABLE: 2137*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W128_LASX - .WMASK420_LASX_JRTABLE 2138*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W64_LASX - .WMASK420_LASX_JRTABLE 2139*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W32_LASX - .WMASK420_LASX_JRTABLE 2140*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W16_LASX - .WMASK420_LASX_JRTABLE 2141*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W8_LASX - .WMASK420_LASX_JRTABLE 2142*c0909341SAndroid Build Coastguard Worker .hword .WMASK420_W4_LASX - .WMASK420_LASX_JRTABLE 2143*c0909341SAndroid Build Coastguard Worker 2144*c0909341SAndroid Build Coastguard Worker.WMASK420_W4_LASX: 2145*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 2146*c0909341SAndroid Build Coastguard Worker xvld xr1, a3, 0 2147*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -4 2148*c0909341SAndroid Build Coastguard Worker 2149*c0909341SAndroid Build Coastguard Worker xvabsd.h xr2, xr0, xr1 2150*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr2, xr2, 8 2151*c0909341SAndroid Build Coastguard Worker xvsrli.h xr2, xr2, 8 2152*c0909341SAndroid Build Coastguard Worker xvadd.h xr2, xr2, xr22 2153*c0909341SAndroid Build Coastguard Worker xvmin.hu xr3, xr2, xr20 2154*c0909341SAndroid Build Coastguard Worker xvsub.h xr4, xr20, xr3 2155*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr5, xr3, xr0 2156*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr6, xr3, xr0 2157*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr5, xr4, xr1 2158*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr6, xr4, xr1 2159*c0909341SAndroid Build Coastguard Worker xvilvl.w xr7, xr6, xr5 2160*c0909341SAndroid Build Coastguard Worker xvilvh.w xr8, xr6, xr5 2161*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr8, xr7, 10 2162*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr9, xr8, 0 2163*c0909341SAndroid Build Coastguard Worker vstelm.w vr9, a0, 0, 0 2164*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2165*c0909341SAndroid Build Coastguard Worker vstelm.w vr9, a0, 0, 1 2166*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2167*c0909341SAndroid Build Coastguard Worker xvstelm.w xr9, a0, 0, 4 2168*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2169*c0909341SAndroid Build Coastguard Worker xvstelm.w xr9, a0, 0, 5 2170*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2171*c0909341SAndroid Build Coastguard Worker 2172*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr3, xr3, xr3 2173*c0909341SAndroid Build Coastguard Worker xvpermi.d xr4, xr3, 0xb1 2174*c0909341SAndroid Build Coastguard Worker xvadd.h xr3, xr3, xr4 2175*c0909341SAndroid Build Coastguard Worker xvpickev.h xr3, xr3, xr3 2176*c0909341SAndroid Build Coastguard Worker xvsub.h xr3, xr3, xr21 2177*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr3, xr3, 2 2178*c0909341SAndroid Build Coastguard Worker vstelm.h vr3, a6, 0, 0 2179*c0909341SAndroid Build Coastguard Worker xvstelm.h xr3, a6, 2, 8 2180*c0909341SAndroid Build Coastguard Worker 2181*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 2182*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 32 2183*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 4 2184*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W4_LASX 2185*c0909341SAndroid Build Coastguard Worker b .END_W420_LASX 2186*c0909341SAndroid Build Coastguard Worker 2187*c0909341SAndroid Build Coastguard Worker.WMASK420_W8_LASX: 2188*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 2189*c0909341SAndroid Build Coastguard Worker xvld xr1, a2, 32 2190*c0909341SAndroid Build Coastguard Worker xvld xr2, a3, 0 2191*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 2192*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -4 2193*c0909341SAndroid Build Coastguard Worker 2194*c0909341SAndroid Build Coastguard Worker xvabsd.h xr4, xr0, xr2 2195*c0909341SAndroid Build Coastguard Worker xvabsd.h xr5, xr1, xr3 2196*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr4, xr4, 8 2197*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr5, xr5, 8 2198*c0909341SAndroid Build Coastguard Worker xvsrli.h xr4, xr4, 8 2199*c0909341SAndroid Build Coastguard Worker xvsrli.h xr5, xr5, 8 2200*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr4, xr22 2201*c0909341SAndroid Build Coastguard Worker xvadd.h xr5, xr5, xr22 2202*c0909341SAndroid Build Coastguard Worker xvmin.hu xr6, xr4, xr20 2203*c0909341SAndroid Build Coastguard Worker xvmin.hu xr7, xr5, xr20 2204*c0909341SAndroid Build Coastguard Worker xvsub.h xr8, xr20, xr6 2205*c0909341SAndroid Build Coastguard Worker xvsub.h xr9, xr20, xr7 2206*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr10, xr6, xr0 2207*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr11, xr6, xr0 2208*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr12, xr7, xr1 2209*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr13, xr7, xr1 2210*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr10, xr8, xr2 2211*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr11, xr8, xr2 2212*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr12, xr9, xr3 2213*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr13, xr9, xr3 2214*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr12, xr10, 10 2215*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr13, xr11, 10 2216*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr13, xr12, 0 2217*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr1, xr13, 0x4E 2218*c0909341SAndroid Build Coastguard Worker xvilvl.b xr17, xr1, xr13 2219*c0909341SAndroid Build Coastguard Worker vstelm.d vr17, a0, 0, 0 2220*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2221*c0909341SAndroid Build Coastguard Worker xvstelm.d xr17, a0, 0, 2 2222*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2223*c0909341SAndroid Build Coastguard Worker xvstelm.d xr17, a0, 0, 1 2224*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2225*c0909341SAndroid Build Coastguard Worker xvstelm.d xr17, a0, 0, 3 2226*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2227*c0909341SAndroid Build Coastguard Worker 2228*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr6, xr6, xr6 2229*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr7, xr7, xr7 2230*c0909341SAndroid Build Coastguard Worker xvpickev.h xr8, xr7, xr6 2231*c0909341SAndroid Build Coastguard Worker xvpermi.q xr9, xr8, 0x01 2232*c0909341SAndroid Build Coastguard Worker vadd.h vr8, vr8, vr9 2233*c0909341SAndroid Build Coastguard Worker vsub.h vr8, vr8, vr21 2234*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr8, vr8, 2 2235*c0909341SAndroid Build Coastguard Worker vstelm.d vr8, a6, 0, 0 2236*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 2237*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 2238*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 8 2239*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W8_LASX 2240*c0909341SAndroid Build Coastguard Worker b .END_W420_LASX 2241*c0909341SAndroid Build Coastguard Worker 2242*c0909341SAndroid Build Coastguard Worker.WMASK420_W16_LASX: 2243*c0909341SAndroid Build Coastguard Worker xvld xr0, a2, 0 2244*c0909341SAndroid Build Coastguard Worker xvld xr1, a2, 32 2245*c0909341SAndroid Build Coastguard Worker xvld xr2, a3, 0 2246*c0909341SAndroid Build Coastguard Worker xvld xr3, a3, 32 2247*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2248*c0909341SAndroid Build Coastguard Worker 2249*c0909341SAndroid Build Coastguard Worker xvabsd.h xr4, xr0, xr2 2250*c0909341SAndroid Build Coastguard Worker xvabsd.h xr5, xr1, xr3 2251*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr4, xr4, 8 2252*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr5, xr5, 8 2253*c0909341SAndroid Build Coastguard Worker xvsrli.h xr4, xr4, 8 2254*c0909341SAndroid Build Coastguard Worker xvsrli.h xr5, xr5, 8 2255*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr4, xr22 2256*c0909341SAndroid Build Coastguard Worker xvadd.h xr5, xr5, xr22 2257*c0909341SAndroid Build Coastguard Worker xvmin.hu xr4, xr4, xr20 2258*c0909341SAndroid Build Coastguard Worker xvmin.hu xr5, xr5, xr20 2259*c0909341SAndroid Build Coastguard Worker xvsub.h xr6, xr20, xr4 2260*c0909341SAndroid Build Coastguard Worker xvsub.h xr7, xr20, xr5 2261*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr8, xr4, xr0 2262*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr9, xr4, xr0 2263*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr10, xr5, xr1 2264*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr11, xr5, xr1 2265*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr8, xr6, xr2 2266*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr9, xr6, xr2 2267*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr10, xr7, xr3 2268*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr11, xr7, xr3 2269*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr10, xr8, 10 2270*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr11, xr9, 10 2271*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr11, xr10, 0 2272*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr8, xr11, 0x4E 2273*c0909341SAndroid Build Coastguard Worker xvilvl.b xr15, xr8, xr11 2274*c0909341SAndroid Build Coastguard Worker xvpermi.d xr16, xr15, 0xd8 2275*c0909341SAndroid Build Coastguard Worker vst vr16, a0, 0 2276*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2277*c0909341SAndroid Build Coastguard Worker xvpermi.q xr16, xr16, 0x01 2278*c0909341SAndroid Build Coastguard Worker vst vr16, a0, 0 2279*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2280*c0909341SAndroid Build Coastguard Worker 2281*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr4, xr4, xr4 2282*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr5, xr5, xr5 2283*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr5, xr4 2284*c0909341SAndroid Build Coastguard Worker xvpickev.h xr6, xr4, xr4 2285*c0909341SAndroid Build Coastguard Worker xvpermi.d xr7, xr6, 0x08 2286*c0909341SAndroid Build Coastguard Worker vsub.h vr7, vr7, vr21 2287*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr7, vr7, 2 2288*c0909341SAndroid Build Coastguard Worker vstelm.d vr7, a6, 0, 0 2289*c0909341SAndroid Build Coastguard Worker 2290*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 2291*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, 64 2292*c0909341SAndroid Build Coastguard Worker addi.d a6, a6, 8 2293*c0909341SAndroid Build Coastguard Worker blt zero, a5, .WMASK420_W16_LASX 2294*c0909341SAndroid Build Coastguard Worker b .END_W420_LASX 2295*c0909341SAndroid Build Coastguard Worker 2296*c0909341SAndroid Build Coastguard Worker.WMASK420_W32_LASX: 2297*c0909341SAndroid Build Coastguard Worker.WMASK420_W64_LASX: 2298*c0909341SAndroid Build Coastguard Worker.WMASK420_W128_LASX: 2299*c0909341SAndroid Build Coastguard Worker 2300*c0909341SAndroid Build Coastguard Worker.LOOP_W32_420_LASX: 2301*c0909341SAndroid Build Coastguard Worker add.d t1, a2, zero 2302*c0909341SAndroid Build Coastguard Worker add.d t2, a3, zero 2303*c0909341SAndroid Build Coastguard Worker add.d t3, a0, zero 2304*c0909341SAndroid Build Coastguard Worker add.d t4, a6, zero 2305*c0909341SAndroid Build Coastguard Worker alsl.d t5, a4, t1, 1 2306*c0909341SAndroid Build Coastguard Worker alsl.d t6, a4, t2, 1 2307*c0909341SAndroid Build Coastguard Worker or t7, a4, a4 2308*c0909341SAndroid Build Coastguard Worker.W32_420_LASX: 2309*c0909341SAndroid Build Coastguard Worker xvld xr0, t1, 0 2310*c0909341SAndroid Build Coastguard Worker xvld xr1, t2, 0 2311*c0909341SAndroid Build Coastguard Worker xvld xr2, t5, 0 2312*c0909341SAndroid Build Coastguard Worker xvld xr3, t6, 0 2313*c0909341SAndroid Build Coastguard Worker addi.d t1, t1, 32 2314*c0909341SAndroid Build Coastguard Worker addi.d t2, t2, 32 2315*c0909341SAndroid Build Coastguard Worker addi.d t5, t5, 32 2316*c0909341SAndroid Build Coastguard Worker addi.d t6, t6, 32 2317*c0909341SAndroid Build Coastguard Worker addi.w t7, t7, -16 2318*c0909341SAndroid Build Coastguard Worker xvabsd.h xr4, xr0, xr1 2319*c0909341SAndroid Build Coastguard Worker xvabsd.h xr5, xr2, xr3 2320*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr4, xr4, 8 2321*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr5, xr5, 8 2322*c0909341SAndroid Build Coastguard Worker xvsrli.h xr4, xr4, 8 2323*c0909341SAndroid Build Coastguard Worker xvsrli.h xr5, xr5, 8 2324*c0909341SAndroid Build Coastguard Worker xvadd.h xr4, xr4, xr22 2325*c0909341SAndroid Build Coastguard Worker xvadd.h xr5, xr5, xr22 2326*c0909341SAndroid Build Coastguard Worker xvmin.hu xr6, xr4, xr20 2327*c0909341SAndroid Build Coastguard Worker xvmin.hu xr7, xr5, xr20 2328*c0909341SAndroid Build Coastguard Worker xvsub.h xr8, xr20, xr6 2329*c0909341SAndroid Build Coastguard Worker xvsub.h xr9, xr20, xr7 2330*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr10, xr6, xr0 2331*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr11, xr6, xr0 2332*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr12, xr7, xr2 2333*c0909341SAndroid Build Coastguard Worker xvmulwod.w.h xr13, xr7, xr2 2334*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr10, xr8, xr1 2335*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr11, xr8, xr1 2336*c0909341SAndroid Build Coastguard Worker xvmaddwev.w.h xr12, xr9, xr3 2337*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr13, xr9, xr3 2338*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr12, xr10, 10 2339*c0909341SAndroid Build Coastguard Worker xvssrarni.hu.w xr13, xr11, 10 2340*c0909341SAndroid Build Coastguard Worker xvssrlni.bu.h xr13, xr12, 0 2341*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr10, xr13, 0x4E 2342*c0909341SAndroid Build Coastguard Worker xvilvl.b xr17, xr10, xr13 2343*c0909341SAndroid Build Coastguard Worker xvpermi.d xr18, xr17, 0x08 2344*c0909341SAndroid Build Coastguard Worker xvpermi.d xr19, xr17, 0x0d 2345*c0909341SAndroid Build Coastguard Worker vst vr18, t3, 0 2346*c0909341SAndroid Build Coastguard Worker vstx vr19, t3, a1 2347*c0909341SAndroid Build Coastguard Worker addi.d t3, t3, 16 2348*c0909341SAndroid Build Coastguard Worker 2349*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr6, xr6, xr6 2350*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr7, xr7, xr7 2351*c0909341SAndroid Build Coastguard Worker xvadd.h xr6, xr7, xr6 2352*c0909341SAndroid Build Coastguard Worker xvpickev.h xr7, xr6, xr6 2353*c0909341SAndroid Build Coastguard Worker xvpermi.d xr8, xr7, 0x08 2354*c0909341SAndroid Build Coastguard Worker vsub.h vr9, vr8, vr21 2355*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr9, vr9, 2 2356*c0909341SAndroid Build Coastguard Worker vstelm.d vr9, t4, 0, 0 2357*c0909341SAndroid Build Coastguard Worker addi.d t4, t4, 8 2358*c0909341SAndroid Build Coastguard Worker bne t7, zero, .W32_420_LASX 2359*c0909341SAndroid Build Coastguard Worker 2360*c0909341SAndroid Build Coastguard Worker alsl.d a2, a4, a2, 2 2361*c0909341SAndroid Build Coastguard Worker alsl.d a3, a4, a3, 2 2362*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2363*c0909341SAndroid Build Coastguard Worker srai.w t8, a4, 1 2364*c0909341SAndroid Build Coastguard Worker add.d a6, a6, t8 2365*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2366*c0909341SAndroid Build Coastguard Worker blt zero, a5, .LOOP_W32_420_LASX 2367*c0909341SAndroid Build Coastguard Worker 2368*c0909341SAndroid Build Coastguard Worker.END_W420_LASX: 2369*c0909341SAndroid Build Coastguard Workerendfunc 2370*c0909341SAndroid Build Coastguard Worker 2371*c0909341SAndroid Build Coastguard Worker#undef bpc_sh 2372*c0909341SAndroid Build Coastguard Worker#undef bpcw_sh 2373*c0909341SAndroid Build Coastguard Worker 2374*c0909341SAndroid Build Coastguard Worker.macro vhaddw.d.h in0 2375*c0909341SAndroid Build Coastguard Worker vhaddw.w.h \in0, \in0, \in0 2376*c0909341SAndroid Build Coastguard Worker vhaddw.d.w \in0, \in0, \in0 2377*c0909341SAndroid Build Coastguard Worker.endm 2378*c0909341SAndroid Build Coastguard Worker.macro vhaddw.q.w in0 2379*c0909341SAndroid Build Coastguard Worker vhaddw.d.w \in0, \in0, \in0 2380*c0909341SAndroid Build Coastguard Worker vhaddw.q.d \in0, \in0, \in0 2381*c0909341SAndroid Build Coastguard Worker.endm 2382*c0909341SAndroid Build Coastguard Worker.macro PUT_H_8W in0 2383*c0909341SAndroid Build Coastguard Worker vshuf.b vr2, \in0, \in0, vr6 2384*c0909341SAndroid Build Coastguard Worker vshuf.b vr3, \in0, \in0, vr7 2385*c0909341SAndroid Build Coastguard Worker vshuf.b vr4, \in0, \in0, vr8 2386*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr2, vr10 2387*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr3, vr11 2388*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr3, vr10 2389*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr4, vr11 2390*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr2, vr10 2391*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr3, vr11 2392*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr3, vr10 2393*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr4, vr11 2394*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr13 2395*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr15 2396*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 2397*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr14, vr14, vr14 2398*c0909341SAndroid Build Coastguard Worker vpickev.h \in0, vr14, vr12 2399*c0909341SAndroid Build Coastguard Worker vadd.h \in0, \in0, vr9 2400*c0909341SAndroid Build Coastguard Worker.endm 2401*c0909341SAndroid Build Coastguard Worker 2402*c0909341SAndroid Build Coastguard Workerconst subpel_h_shuf0 2403*c0909341SAndroid Build Coastguard Worker.byte 0, 1, 2, 3, 1, 2, 3, 4, 16, 17, 18, 19, 17, 18, 19, 20 2404*c0909341SAndroid Build Coastguard Workerendconst 2405*c0909341SAndroid Build Coastguard Workerconst subpel_h_shuf1 2406*c0909341SAndroid Build Coastguard Worker.byte 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6 2407*c0909341SAndroid Build Coastguard Workerendconst 2408*c0909341SAndroid Build Coastguard Workerconst subpel_h_shuf2 2409*c0909341SAndroid Build Coastguard Worker.byte 0, 1, 2, 3, 1, 2, 3, 4, 8, 9, 10, 11, 9, 10, 11, 12 2410*c0909341SAndroid Build Coastguard Worker.byte 2, 3, 4, 5, 3, 4, 5, 6, 10, 11, 12, 13, 11, 12, 13, 14 2411*c0909341SAndroid Build Coastguard Workerendconst 2412*c0909341SAndroid Build Coastguard Workerconst subpel_h_shuf3 2413*c0909341SAndroid Build Coastguard Worker.byte 0, 4, 1, 5, 2, 6, 3, 7, 4, 8, 5, 9, 6, 10, 7, 11 2414*c0909341SAndroid Build Coastguard Worker.byte 0, 4, 1, 5, 2, 6, 3, 7, 4, 8, 5, 9, 6, 10, 7, 11 2415*c0909341SAndroid Build Coastguard Workerendconst 2416*c0909341SAndroid Build Coastguard Worker 2417*c0909341SAndroid Build Coastguard Worker.macro FILTER_8TAP_8W in0 2418*c0909341SAndroid Build Coastguard Worker vshuf.b vr13, \in0, \in0, vr7 2419*c0909341SAndroid Build Coastguard Worker vshuf.b vr14, \in0, \in0, vr11 2420*c0909341SAndroid Build Coastguard Worker vshuf.b vr15, \in0, \in0, vr12 2421*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr16, vr13, vr8 2422*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr17, vr14, vr10 2423*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr18, vr14, vr8 2424*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr19, vr15, vr10 2425*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr16, vr13, vr8 2426*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr17, vr14, vr10 2427*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr18, vr14, vr8 2428*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr19, vr15, vr10 2429*c0909341SAndroid Build Coastguard Worker vadd.h vr16, vr16, vr17 2430*c0909341SAndroid Build Coastguard Worker vadd.h vr18, vr18, vr19 2431*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr16, vr16, vr16 2432*c0909341SAndroid Build Coastguard Worker vhaddw.w.h \in0, vr18, vr18 2433*c0909341SAndroid Build Coastguard Worker vssrarni.h.w \in0, vr16, 2 2434*c0909341SAndroid Build Coastguard Worker.endm 2435*c0909341SAndroid Build Coastguard Worker 2436*c0909341SAndroid Build Coastguard Worker.macro PUT_8TAP_8BPC_LSX lable 2437*c0909341SAndroid Build Coastguard Worker li.w t0, 4 2438*c0909341SAndroid Build Coastguard Worker la.local t6, dav1d_mc_subpel_filters 2439*c0909341SAndroid Build Coastguard Worker slli.d t2, a3, 1 //src_stride*2 2440*c0909341SAndroid Build Coastguard Worker add.d t3, t2, a3 //src_stride*3 2441*c0909341SAndroid Build Coastguard Worker slli.d t4, t2, 1 //src_stride*4 2442*c0909341SAndroid Build Coastguard Worker 2443*c0909341SAndroid Build Coastguard Worker bnez a6, .l_\lable\()put_h //mx 2444*c0909341SAndroid Build Coastguard Worker bnez a7, .l_\lable\()put_v //my 2445*c0909341SAndroid Build Coastguard Worker 2446*c0909341SAndroid Build Coastguard Worker clz.w t1, a4 2447*c0909341SAndroid Build Coastguard Worker li.w t5, 24 2448*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 2449*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()put_hv0_jtable 2450*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 3 2451*c0909341SAndroid Build Coastguard Worker ld.d t6, t1, 0 2452*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t6 2453*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 2454*c0909341SAndroid Build Coastguard Worker 2455*c0909341SAndroid Build Coastguard Worker .align 3 2456*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_jtable: 2457*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_128w - .l_\lable\()put_hv0_jtable 2458*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_64w - .l_\lable\()put_hv0_jtable 2459*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_32w - .l_\lable\()put_hv0_jtable 2460*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_16w - .l_\lable\()put_hv0_jtable 2461*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_8w - .l_\lable\()put_hv0_jtable 2462*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_4w - .l_\lable\()put_hv0_jtable 2463*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv0_2w - .l_\lable\()put_hv0_jtable 2464*c0909341SAndroid Build Coastguard Worker 2465*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_2w: 2466*c0909341SAndroid Build Coastguard Worker vldrepl.h vr0, a2, 0 2467*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2468*c0909341SAndroid Build Coastguard Worker vldrepl.h vr1, a2, 0 2469*c0909341SAndroid Build Coastguard Worker vstelm.h vr0, a0, 0, 0 2470*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2471*c0909341SAndroid Build Coastguard Worker vstelm.h vr1, a0, 0, 0 2472*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2473*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2474*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2475*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_2w 2476*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2477*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_4w: 2478*c0909341SAndroid Build Coastguard Worker fld.s f0, a2, 0 2479*c0909341SAndroid Build Coastguard Worker fldx.s f1, a2, a3 2480*c0909341SAndroid Build Coastguard Worker fst.s f0, a0, 0 2481*c0909341SAndroid Build Coastguard Worker fstx.s f1, a0, a1 2482*c0909341SAndroid Build Coastguard Worker alsl.d a2, a3, a2, 1 2483*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2484*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2485*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_4w 2486*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2487*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_8w: 2488*c0909341SAndroid Build Coastguard Worker fld.d f0, a2, 0 2489*c0909341SAndroid Build Coastguard Worker fldx.d f1, a2, a3 2490*c0909341SAndroid Build Coastguard Worker fst.d f0, a0, 0 2491*c0909341SAndroid Build Coastguard Worker fstx.d f1, a0, a1 2492*c0909341SAndroid Build Coastguard Worker alsl.d a2, a3, a2, 1 2493*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2494*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2495*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_8w 2496*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2497*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_16w: 2498*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2499*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 2500*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 2501*c0909341SAndroid Build Coastguard Worker vstx vr1, a0, a1 2502*c0909341SAndroid Build Coastguard Worker alsl.d a2, a3, a2, 1 2503*c0909341SAndroid Build Coastguard Worker alsl.d a0, a1, a0, 1 2504*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2505*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_16w 2506*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2507*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_32w: 2508*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2509*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 2510*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2511*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 0 2512*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 16 2513*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 2514*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 2515*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2516*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 2517*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 16 2518*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2519*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2520*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2521*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_32w 2522*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2523*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_64w: 2524*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2525*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 2526*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 32 2527*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 48 2528*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2529*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 0 2530*c0909341SAndroid Build Coastguard Worker vld vr5, a2, 16 2531*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 32 2532*c0909341SAndroid Build Coastguard Worker vld vr7, a2, 48 2533*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2534*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 2535*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 2536*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 32 2537*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 48 2538*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2539*c0909341SAndroid Build Coastguard Worker vst vr4, a0, 0 2540*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 16 2541*c0909341SAndroid Build Coastguard Worker vst vr6, a0, 32 2542*c0909341SAndroid Build Coastguard Worker vst vr7, a0, 48 2543*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2544*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2545*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_64w 2546*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2547*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv0_128w: 2548*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2549*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 2550*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 32 2551*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 48 2552*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 64 2553*c0909341SAndroid Build Coastguard Worker vld vr5, a2, 80 2554*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 96 2555*c0909341SAndroid Build Coastguard Worker vld vr7, a2, 112 2556*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2557*c0909341SAndroid Build Coastguard Worker vld vr8, a2, 0 2558*c0909341SAndroid Build Coastguard Worker vld vr9, a2, 16 2559*c0909341SAndroid Build Coastguard Worker vld vr10, a2, 32 2560*c0909341SAndroid Build Coastguard Worker vld vr11, a2, 48 2561*c0909341SAndroid Build Coastguard Worker vld vr12, a2, 64 2562*c0909341SAndroid Build Coastguard Worker vld vr13, a2, 80 2563*c0909341SAndroid Build Coastguard Worker vld vr14, a2, 96 2564*c0909341SAndroid Build Coastguard Worker vld vr15, a2, 112 2565*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2566*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 2567*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 2568*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 32 2569*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 48 2570*c0909341SAndroid Build Coastguard Worker vst vr4, a0, 64 2571*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 80 2572*c0909341SAndroid Build Coastguard Worker vst vr6, a0, 96 2573*c0909341SAndroid Build Coastguard Worker vst vr7, a0, 112 2574*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2575*c0909341SAndroid Build Coastguard Worker vst vr8, a0, 0 2576*c0909341SAndroid Build Coastguard Worker vst vr9, a0, 16 2577*c0909341SAndroid Build Coastguard Worker vst vr10, a0, 32 2578*c0909341SAndroid Build Coastguard Worker vst vr11, a0, 48 2579*c0909341SAndroid Build Coastguard Worker vst vr12, a0, 64 2580*c0909341SAndroid Build Coastguard Worker vst vr13, a0, 80 2581*c0909341SAndroid Build Coastguard Worker vst vr14, a0, 96 2582*c0909341SAndroid Build Coastguard Worker vst vr15, a0, 112 2583*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2584*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2585*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv0_128w 2586*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2587*c0909341SAndroid Build Coastguard Worker 2588*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h: 2589*c0909341SAndroid Build Coastguard Worker bnez a7, .l_\lable\()put_hv //if(fh) && if (fv) 2590*c0909341SAndroid Build Coastguard Worker ld.d t5, sp, 0 //filter_type 2591*c0909341SAndroid Build Coastguard Worker andi t1, t5, 3 2592*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()put_h_idx_fh 2593*c0909341SAndroid Build Coastguard Worker andi t1, t5, 1 2594*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 2595*c0909341SAndroid Build Coastguard Worker 2596*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_idx_fh: 2597*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 2598*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 2599*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 2600*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 2601*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 2602*c0909341SAndroid Build Coastguard Worker add.d t7, t6, t1 //fh's offset 2603*c0909341SAndroid Build Coastguard Worker li.w t1, 34 2604*c0909341SAndroid Build Coastguard Worker vreplgr2vr.h vr9, t1 2605*c0909341SAndroid Build Coastguard Worker 2606*c0909341SAndroid Build Coastguard Worker clz.w t1, a4 2607*c0909341SAndroid Build Coastguard Worker li.w t5, 24 2608*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 2609*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()put_h_jtable 2610*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 3 2611*c0909341SAndroid Build Coastguard Worker ld.d t6, t1, 0 2612*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t6 2613*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 2614*c0909341SAndroid Build Coastguard Worker 2615*c0909341SAndroid Build Coastguard Worker .align 3 2616*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_jtable: 2617*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_128w - .l_\lable\()put_h_jtable 2618*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_64w - .l_\lable\()put_h_jtable 2619*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_32w - .l_\lable\()put_h_jtable 2620*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_16w - .l_\lable\()put_h_jtable 2621*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_8w - .l_\lable\()put_h_jtable 2622*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_4w - .l_\lable\()put_h_jtable 2623*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_h_2w - .l_\lable\()put_h_jtable 2624*c0909341SAndroid Build Coastguard Worker 2625*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_2w: 2626*c0909341SAndroid Build Coastguard Worker addi.d t7, t7, 2 2627*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -1 2628*c0909341SAndroid Build Coastguard Worker vldrepl.w vr8, t7, 0 2629*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf0 2630*c0909341SAndroid Build Coastguard Worker vld vr7, t7, 0 2631*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_2w_loop: 2632*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2633*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 2634*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2635*c0909341SAndroid Build Coastguard Worker 2636*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr1, vr0, vr7 2637*c0909341SAndroid Build Coastguard Worker vdp2.h.bu.b vr1, vr0, vr8 2638*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr0, vr1, vr1 2639*c0909341SAndroid Build Coastguard Worker vpickev.h vr0, vr0, vr0 2640*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr9 2641*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr0, vr0, 6 2642*c0909341SAndroid Build Coastguard Worker 2643*c0909341SAndroid Build Coastguard Worker vstelm.h vr0, a0, 0, 0 2644*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2645*c0909341SAndroid Build Coastguard Worker vstelm.h vr0, a0, 0, 1 2646*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2647*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2648*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_h_2w_loop 2649*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2650*c0909341SAndroid Build Coastguard Worker 2651*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_4w: 2652*c0909341SAndroid Build Coastguard Worker addi.d t7, t7, 2 2653*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -1 2654*c0909341SAndroid Build Coastguard Worker vldrepl.w vr8, t7, 0 2655*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 2656*c0909341SAndroid Build Coastguard Worker vld vr7, t7, 0 2657*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_4w_loop: 2658*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2659*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 2660*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2661*c0909341SAndroid Build Coastguard Worker 2662*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr0, vr0, vr7 2663*c0909341SAndroid Build Coastguard Worker vshuf.b vr1, vr1, vr1, vr7 2664*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr2, vr0, vr8 2665*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr3, vr1, vr8 2666*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr2, vr0, vr8 2667*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr3, vr1, vr8 2668*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr0, vr2, vr2 2669*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr1, vr3, vr3 2670*c0909341SAndroid Build Coastguard Worker vpickev.h vr0, vr1, vr0 2671*c0909341SAndroid Build Coastguard Worker vadd.h vr0, vr0, vr9 2672*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr0, vr0, 6 2673*c0909341SAndroid Build Coastguard Worker 2674*c0909341SAndroid Build Coastguard Worker vstelm.w vr0, a0, 0, 0 2675*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2676*c0909341SAndroid Build Coastguard Worker vstelm.w vr0, a0, 0, 1 2677*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2678*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, -2 2679*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_h_4w_loop 2680*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2681*c0909341SAndroid Build Coastguard Worker 2682*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_8w: 2683*c0909341SAndroid Build Coastguard Worker fld.d f10, t7, 0 2684*c0909341SAndroid Build Coastguard Worker vreplvei.w vr11, vr10, 1 2685*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr10, 0 2686*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 2687*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 2688*c0909341SAndroid Build Coastguard Worker vaddi.bu vr7, vr6, 4 2689*c0909341SAndroid Build Coastguard Worker vaddi.bu vr8, vr6, 8 2690*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -3 2691*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_8w_loop: 2692*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2693*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 2694*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2695*c0909341SAndroid Build Coastguard Worker PUT_H_8W vr0 2696*c0909341SAndroid Build Coastguard Worker PUT_H_8W vr1 2697*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr1, vr0, 6 2698*c0909341SAndroid Build Coastguard Worker vstelm.d vr1, a0, 0, 0 2699*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2700*c0909341SAndroid Build Coastguard Worker vstelm.d vr1, a0, 0, 1 2701*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2702*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2703*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_h_8w_loop 2704*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2705*c0909341SAndroid Build Coastguard Worker 2706*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_16w: 2707*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_32w: 2708*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_64w: 2709*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_128w: 2710*c0909341SAndroid Build Coastguard Worker fld.d f10, t7, 0 2711*c0909341SAndroid Build Coastguard Worker vreplvei.w vr11, vr10, 1 2712*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr10, 0 2713*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 2714*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 2715*c0909341SAndroid Build Coastguard Worker vaddi.bu vr7, vr6, 4 2716*c0909341SAndroid Build Coastguard Worker vaddi.bu vr8, vr6, 8 2717*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -3 2718*c0909341SAndroid Build Coastguard Worker addi.d t0, a2, 0 //src 2719*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, 0 //h 2720*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 2721*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_h_16w_loop: 2722*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 2723*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 8 2724*c0909341SAndroid Build Coastguard Worker add.d a2, a2, a3 2725*c0909341SAndroid Build Coastguard Worker PUT_H_8W vr0 2726*c0909341SAndroid Build Coastguard Worker PUT_H_8W vr1 2727*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr1, vr0, 6 2728*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 2729*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2730*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, -1 2731*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_h_16w_loop 2732*c0909341SAndroid Build Coastguard Worker addi.d a2, t0, 16 2733*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 16 2734*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 16 2735*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 16 2736*c0909341SAndroid Build Coastguard Worker addi.w a5, t5, 0 2737*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -16 2738*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()put_h_16w_loop 2739*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2740*c0909341SAndroid Build Coastguard Worker 2741*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v: 2742*c0909341SAndroid Build Coastguard Worker ld.d t1, sp, 0 //filter_type 2743*c0909341SAndroid Build Coastguard Worker srli.w t1, t1, 2 2744*c0909341SAndroid Build Coastguard Worker blt t0, a5, .l_\lable\()put_v_idx_fv 2745*c0909341SAndroid Build Coastguard Worker andi t1, t1, 1 2746*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 2747*c0909341SAndroid Build Coastguard Worker 2748*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_idx_fv: 2749*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 2750*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 2751*c0909341SAndroid Build Coastguard Worker addi.w t5, a7, -1 2752*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 2753*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 2754*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fv's offset 2755*c0909341SAndroid Build Coastguard Worker vldrepl.d vr8, t1, 0 2756*c0909341SAndroid Build Coastguard Worker sub.d a2, a2, t3 2757*c0909341SAndroid Build Coastguard Worker 2758*c0909341SAndroid Build Coastguard Worker vilvl.h vr8, vr8, vr8 2759*c0909341SAndroid Build Coastguard Worker vreplvei.w vr9, vr8, 1 2760*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr8, 2 2761*c0909341SAndroid Build Coastguard Worker vreplvei.w vr11, vr8, 3 2762*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 2763*c0909341SAndroid Build Coastguard Worker 2764*c0909341SAndroid Build Coastguard Worker clz.w t1, a4 2765*c0909341SAndroid Build Coastguard Worker li.w t5, 24 2766*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 2767*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()put_v_jtable 2768*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 3 2769*c0909341SAndroid Build Coastguard Worker ld.d t6, t1, 0 2770*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t6 2771*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 2772*c0909341SAndroid Build Coastguard Worker 2773*c0909341SAndroid Build Coastguard Worker .align 3 2774*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_jtable: 2775*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_128w - .l_\lable\()put_v_jtable 2776*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_64w - .l_\lable\()put_v_jtable 2777*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_32w - .l_\lable\()put_v_jtable 2778*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_16w - .l_\lable\()put_v_jtable 2779*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_8w - .l_\lable\()put_v_jtable 2780*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_4w - .l_\lable\()put_v_jtable 2781*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_v_2w - .l_\lable\()put_v_jtable 2782*c0909341SAndroid Build Coastguard Worker 2783*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_2w: 2784*c0909341SAndroid Build Coastguard Worker fld.s f0, a2, 0 2785*c0909341SAndroid Build Coastguard Worker fldx.s f1, a2, a3 2786*c0909341SAndroid Build Coastguard Worker fldx.s f2, a2, t2 2787*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 2788*c0909341SAndroid Build Coastguard Worker fld.s f3, a2, 0 2789*c0909341SAndroid Build Coastguard Worker fldx.s f4, a2, a3 2790*c0909341SAndroid Build Coastguard Worker fldx.s f5, a2, t2 2791*c0909341SAndroid Build Coastguard Worker fldx.s f6, a2, t3 2792*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 2793*c0909341SAndroid Build Coastguard Worker 2794*c0909341SAndroid Build Coastguard Worker vilvl.h vr0, vr1, vr0 //0 1 2795*c0909341SAndroid Build Coastguard Worker vilvl.h vr1, vr2, vr1 //1 2 2796*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 //01 12 2797*c0909341SAndroid Build Coastguard Worker vilvl.h vr2, vr3, vr2 //2 3 2798*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr4, vr3 //3 4 2799*c0909341SAndroid Build Coastguard Worker vilvl.b vr1, vr3, vr2 //23 34 2800*c0909341SAndroid Build Coastguard Worker vilvl.h vr2, vr5, vr4 //4 5 2801*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr6, vr5 //5 6 2802*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr3, vr2 //45 56 2803*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_2w_loop: 2804*c0909341SAndroid Build Coastguard Worker fld.s f7, a2, 0 2805*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr7, vr6 //6 7 2806*c0909341SAndroid Build Coastguard Worker fldx.s f6, a2, a3 2807*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2808*c0909341SAndroid Build Coastguard Worker vilvl.h vr4, vr6, vr7 //7 8 2809*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr4, vr3 //67 78 2810*c0909341SAndroid Build Coastguard Worker 2811*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr0, vr8 2812*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr1, vr9 2813*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr2, vr10 2814*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr3, vr11 2815*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr0, vr8 2816*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr1, vr9 2817*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr2, vr10 2818*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr3, vr11 2819*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 2820*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 2821*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr3, 0 2822*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr13 2823*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr14 2824*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr15 2825*c0909341SAndroid Build Coastguard Worker 2826*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr12, vr12, 6 2827*c0909341SAndroid Build Coastguard Worker vstelm.h vr12, a0, 0, 0 2828*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2829*c0909341SAndroid Build Coastguard Worker vstelm.h vr12, a0, 0, 1 2830*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2831*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2832*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_v_2w_loop 2833*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2834*c0909341SAndroid Build Coastguard Worker 2835*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_4w: 2836*c0909341SAndroid Build Coastguard Worker fld.s f0, a2, 0 2837*c0909341SAndroid Build Coastguard Worker fldx.s f1, a2, a3 2838*c0909341SAndroid Build Coastguard Worker fldx.s f2, a2, t2 2839*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 2840*c0909341SAndroid Build Coastguard Worker fld.s f3, a2, 0 2841*c0909341SAndroid Build Coastguard Worker fldx.s f4, a2, a3 2842*c0909341SAndroid Build Coastguard Worker fldx.s f5, a2, t2 2843*c0909341SAndroid Build Coastguard Worker fldx.s f6, a2, t3 2844*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 2845*c0909341SAndroid Build Coastguard Worker 2846*c0909341SAndroid Build Coastguard Worker vilvl.w vr0, vr1, vr0 2847*c0909341SAndroid Build Coastguard Worker vilvl.w vr1, vr2, vr1 2848*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 2849*c0909341SAndroid Build Coastguard Worker vilvl.w vr1, vr3, vr2 2850*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr4, vr3 2851*c0909341SAndroid Build Coastguard Worker vilvl.b vr1, vr2, vr1 2852*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr5, vr4 2853*c0909341SAndroid Build Coastguard Worker vilvl.w vr3, vr6, vr5 2854*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr3, vr2 2855*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_4w_loop: 2856*c0909341SAndroid Build Coastguard Worker fld.s f7, a2, 0 2857*c0909341SAndroid Build Coastguard Worker 2858*c0909341SAndroid Build Coastguard Worker vilvl.w vr3, vr7, vr6 2859*c0909341SAndroid Build Coastguard Worker fldx.s f6, a2, a3 2860*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2861*c0909341SAndroid Build Coastguard Worker vilvl.w vr4, vr6, vr7 2862*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr4, vr3 2863*c0909341SAndroid Build Coastguard Worker 2864*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr0, vr8 2865*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr1, vr9 2866*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr2, vr10 2867*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr3, vr11 2868*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr0, vr8 2869*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr1, vr9 2870*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr2, vr10 2871*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr3, vr11 2872*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 2873*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 2874*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr3, 0 2875*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr13 2876*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr14 2877*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr15 2878*c0909341SAndroid Build Coastguard Worker 2879*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr12, vr12, 6 2880*c0909341SAndroid Build Coastguard Worker vstelm.w vr12, a0, 0, 0 2881*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2882*c0909341SAndroid Build Coastguard Worker vstelm.w vr12, a0, 0, 1 2883*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2884*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2885*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_v_4w_loop 2886*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2887*c0909341SAndroid Build Coastguard Worker 2888*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_8w: 2889*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_16w: 2890*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_32w: 2891*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_64w: 2892*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_128w: 2893*c0909341SAndroid Build Coastguard Worker addi.d t0, a2, 0 //src 2894*c0909341SAndroid Build Coastguard Worker addi.d t5, a5, 0 //h 2895*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 2896*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_8w_loop0: 2897*c0909341SAndroid Build Coastguard Worker fld.d f0, a2, 0 2898*c0909341SAndroid Build Coastguard Worker fldx.d f1, a2, a3 2899*c0909341SAndroid Build Coastguard Worker fldx.d f2, a2, t2 2900*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 2901*c0909341SAndroid Build Coastguard Worker fld.d f3, a2, 0 2902*c0909341SAndroid Build Coastguard Worker fldx.d f4, a2, a3 2903*c0909341SAndroid Build Coastguard Worker fldx.d f5, a2, t2 2904*c0909341SAndroid Build Coastguard Worker fldx.d f6, a2, t3 2905*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 2906*c0909341SAndroid Build Coastguard Worker 2907*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 //0 1 2908*c0909341SAndroid Build Coastguard Worker vilvl.b vr1, vr2, vr1 //1 2 2909*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr3, vr2 //2 3 2910*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr4, vr3 //3 4 2911*c0909341SAndroid Build Coastguard Worker vilvl.b vr4, vr5, vr4 //4 5 2912*c0909341SAndroid Build Coastguard Worker vilvl.b vr5, vr6, vr5 //5 6 2913*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_v_8w_loop: 2914*c0909341SAndroid Build Coastguard Worker fld.d f7, a2, 0 2915*c0909341SAndroid Build Coastguard Worker vilvl.b vr12, vr7, vr6 //6 7 2916*c0909341SAndroid Build Coastguard Worker fldx.d f6, a2, a3 2917*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 2918*c0909341SAndroid Build Coastguard Worker vilvl.b vr13, vr6, vr7 //7 8 2919*c0909341SAndroid Build Coastguard Worker 2920*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr0, vr8 2921*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr1, vr8 2922*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr16, vr2, vr9 2923*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr17, vr3, vr9 2924*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr18, vr4, vr10 2925*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr19, vr5, vr10 2926*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr20, vr12, vr11 2927*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr21, vr13, vr11 2928*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr0, vr8 2929*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr1, vr8 2930*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr16, vr2, vr9 2931*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr17, vr3, vr9 2932*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr18, vr4, vr10 2933*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr19, vr5, vr10 2934*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr20, vr12, vr11 2935*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr21, vr13, vr11 2936*c0909341SAndroid Build Coastguard Worker 2937*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr2, 0 2938*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr3, 0 2939*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr4, 0 2940*c0909341SAndroid Build Coastguard Worker vaddi.hu vr3, vr5, 0 2941*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr12, 0 2942*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr13, 0 2943*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr16 2944*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr18 2945*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr20 2946*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr17 2947*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr19 2948*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr21 2949*c0909341SAndroid Build Coastguard Worker 2950*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr15, vr14, 6 2951*c0909341SAndroid Build Coastguard Worker vstelm.d vr15, a0, 0, 0 2952*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2953*c0909341SAndroid Build Coastguard Worker vstelm.d vr15, a0, 0, 1 2954*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 2955*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 2956*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_v_8w_loop 2957*c0909341SAndroid Build Coastguard Worker addi.d a2, t0, 8 2958*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 8 2959*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 8 2960*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 8 2961*c0909341SAndroid Build Coastguard Worker addi.d a5, t5, 0 2962*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -8 2963*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()put_v_8w_loop0 2964*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 2965*c0909341SAndroid Build Coastguard Worker 2966*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv: 2967*c0909341SAndroid Build Coastguard Worker ld.d t5, sp, 0 //filter_type 2968*c0909341SAndroid Build Coastguard Worker andi t1, t5, 3 2969*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()put_hv_idx_fh 2970*c0909341SAndroid Build Coastguard Worker andi t1, t5, 1 2971*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 2972*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_idx_fh: 2973*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 2974*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 2975*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 2976*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 2977*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 2978*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fh's offset 2979*c0909341SAndroid Build Coastguard Worker vldrepl.d vr8, t1, 0 2980*c0909341SAndroid Build Coastguard Worker ld.d t1, sp, 0 //filter_type 2981*c0909341SAndroid Build Coastguard Worker srli.w t1, t1, 2 2982*c0909341SAndroid Build Coastguard Worker blt t0, a5, .l_\lable\()put_hv_idx_fv 2983*c0909341SAndroid Build Coastguard Worker andi t1, t1, 1 2984*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 2985*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_idx_fv: 2986*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 2987*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 2988*c0909341SAndroid Build Coastguard Worker addi.w t5, a7, -1 2989*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 2990*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 2991*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fv's offset 2992*c0909341SAndroid Build Coastguard Worker vldrepl.d vr9, t1, 0 2993*c0909341SAndroid Build Coastguard Worker vexth.h.b vr9, vr9 2994*c0909341SAndroid Build Coastguard Worker 2995*c0909341SAndroid Build Coastguard Worker sub.d a2, a2, t3 2996*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, -3 2997*c0909341SAndroid Build Coastguard Worker 2998*c0909341SAndroid Build Coastguard Worker clz.w t1, a4 2999*c0909341SAndroid Build Coastguard Worker li.w t5, 24 3000*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 3001*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()put_hv_jtable 3002*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 3 3003*c0909341SAndroid Build Coastguard Worker ld.d t6, t1, 0 3004*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t6 3005*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 3006*c0909341SAndroid Build Coastguard Worker 3007*c0909341SAndroid Build Coastguard Worker .align 3 3008*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_jtable: 3009*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_128w - .l_\lable\()put_hv_jtable 3010*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_64w - .l_\lable\()put_hv_jtable 3011*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_32w - .l_\lable\()put_hv_jtable 3012*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_16w - .l_\lable\()put_hv_jtable 3013*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_8w - .l_\lable\()put_hv_jtable 3014*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_4w - .l_\lable\()put_hv_jtable 3015*c0909341SAndroid Build Coastguard Worker .dword .l_\lable\()put_hv_2w - .l_\lable\()put_hv_jtable 3016*c0909341SAndroid Build Coastguard Worker 3017*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_2w: 3018*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 2 3019*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 3020*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 3021*c0909341SAndroid Build Coastguard Worker vldx vr2, a2, t2 3022*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 3023*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 0 3024*c0909341SAndroid Build Coastguard Worker vldx vr4, a2, a3 3025*c0909341SAndroid Build Coastguard Worker vldx vr5, a2, t2 3026*c0909341SAndroid Build Coastguard Worker vldx vr6, a2, t3 3027*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 3028*c0909341SAndroid Build Coastguard Worker 3029*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf0 3030*c0909341SAndroid Build Coastguard Worker vld vr7, t1, 0 3031*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr8, 2 3032*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 3033*c0909341SAndroid Build Coastguard Worker 3034*c0909341SAndroid Build Coastguard Worker //fv 3035*c0909341SAndroid Build Coastguard Worker vreplvei.w vr14, vr9, 1 3036*c0909341SAndroid Build Coastguard Worker vreplvei.w vr15, vr9, 2 3037*c0909341SAndroid Build Coastguard Worker vreplvei.w vr16, vr9, 3 3038*c0909341SAndroid Build Coastguard Worker vreplvei.w vr9, vr9, 0 3039*c0909341SAndroid Build Coastguard Worker 3040*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr1, vr0, vr7 3041*c0909341SAndroid Build Coastguard Worker vshuf.b vr1, vr3, vr2, vr7 3042*c0909341SAndroid Build Coastguard Worker vshuf.b vr2, vr5, vr4, vr7 3043*c0909341SAndroid Build Coastguard Worker vshuf.b vr3, vr6, vr6, vr7 3044*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr10, vr0, vr8 3045*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr11, vr1, vr8 3046*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr2, vr8 3047*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr3, vr8 3048*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr10, vr0, vr8 3049*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr11, vr1, vr8 3050*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr2, vr8 3051*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr3, vr8 3052*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr0, vr10, vr10 3053*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr1, vr11, vr11 3054*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr1, vr0, 2 //h0 h1 h2 h3 3055*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr2, vr12, vr12 3056*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr3, vr13, vr13 3057*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr3, vr2, 2 //h4 h5 h6 ~ 3058*c0909341SAndroid Build Coastguard Worker vbsrl.v vr2, vr1, 4 3059*c0909341SAndroid Build Coastguard Worker vextrins.w vr2, vr3, 0x30 //h1 h2 h3 h4 3060*c0909341SAndroid Build Coastguard Worker vilvl.h vr4, vr2, vr1 //h0 h1 h1 h2 -- 3061*c0909341SAndroid Build Coastguard Worker vilvh.h vr5, vr2, vr1 //h2 h3 h3 h4 -- 3062*c0909341SAndroid Build Coastguard Worker vbsrl.v vr6, vr3, 4 3063*c0909341SAndroid Build Coastguard Worker vilvl.h vr6, vr6, vr3 //h4 h5 h5 h6 -- 3064*c0909341SAndroid Build Coastguard Worker vbsrl.v vr3, vr3, 8 //h6 ~ 3065*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_2w_loop: 3066*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 3067*c0909341SAndroid Build Coastguard Worker vldx vr2, a2, a3 3068*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 3069*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr2, vr0, vr7 3070*c0909341SAndroid Build Coastguard Worker vdp2.h.bu.b vr17, vr0, vr8 3071*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr17, vr17, vr17 3072*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr17, vr17, 2 //h7 h8 3073*c0909341SAndroid Build Coastguard Worker vextrins.w vr3, vr17, 0x10 //h6 h7 3074*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr17, vr3 //h6 h7 h7 h8 -- 3075*c0909341SAndroid Build Coastguard Worker 3076*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr18, vr4, vr9 3077*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr19, vr5, vr14 3078*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr20, vr6, vr15 3079*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr21, vr3, vr16 3080*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr18, vr4, vr9 3081*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr19, vr5, vr14 3082*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr20, vr6, vr15 3083*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr21, vr3, vr16 3084*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr5, 0 3085*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr6, 0 3086*c0909341SAndroid Build Coastguard Worker vaddi.hu vr6, vr3, 0 3087*c0909341SAndroid Build Coastguard Worker vbsrl.v vr3, vr17, 4 //h8 ~ 3088*c0909341SAndroid Build Coastguard Worker vadd.w vr18, vr18, vr19 3089*c0909341SAndroid Build Coastguard Worker vadd.w vr18, vr18, vr20 3090*c0909341SAndroid Build Coastguard Worker vadd.w vr18, vr18, vr21 3091*c0909341SAndroid Build Coastguard Worker 3092*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr0, vr18, 10 3093*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr0, vr0, 0 3094*c0909341SAndroid Build Coastguard Worker vstelm.h vr0, a0, 0, 0 3095*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3096*c0909341SAndroid Build Coastguard Worker vstelm.h vr0, a0, 0, 1 3097*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3098*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, -2 3099*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv_2w_loop 3100*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 3101*c0909341SAndroid Build Coastguard Worker 3102*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_4w: 3103*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 2 //ignore leading 0 3104*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 3105*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 3106*c0909341SAndroid Build Coastguard Worker vldx vr2, a2, t2 3107*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 3108*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 0 3109*c0909341SAndroid Build Coastguard Worker vldx vr4, a2, a3 3110*c0909341SAndroid Build Coastguard Worker vldx vr5, a2, t2 3111*c0909341SAndroid Build Coastguard Worker vldx vr6, a2, t3 3112*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 3113*c0909341SAndroid Build Coastguard Worker 3114*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf1 3115*c0909341SAndroid Build Coastguard Worker vld vr7, t1, 0 3116*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr8, 2 3117*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 3118*c0909341SAndroid Build Coastguard Worker 3119*c0909341SAndroid Build Coastguard Worker //fv 3120*c0909341SAndroid Build Coastguard Worker vreplvei.w vr17, vr9, 0 3121*c0909341SAndroid Build Coastguard Worker vreplvei.w vr18, vr9, 1 3122*c0909341SAndroid Build Coastguard Worker vreplvei.w vr19, vr9, 2 3123*c0909341SAndroid Build Coastguard Worker vreplvei.w vr20, vr9, 3 3124*c0909341SAndroid Build Coastguard Worker 3125*c0909341SAndroid Build Coastguard Worker //DAV1D_FILTER_8TAP_RND 3126*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr0, vr0, vr7 3127*c0909341SAndroid Build Coastguard Worker vshuf.b vr1, vr1, vr1, vr7 3128*c0909341SAndroid Build Coastguard Worker vshuf.b vr2, vr2, vr2, vr7 3129*c0909341SAndroid Build Coastguard Worker vshuf.b vr3, vr3, vr3, vr7 3130*c0909341SAndroid Build Coastguard Worker vshuf.b vr4, vr4, vr4, vr7 3131*c0909341SAndroid Build Coastguard Worker vshuf.b vr5, vr5, vr5, vr7 3132*c0909341SAndroid Build Coastguard Worker vshuf.b vr6, vr6, vr6, vr7 3133*c0909341SAndroid Build Coastguard Worker 3134*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr10, vr0, vr8 3135*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr11, vr1, vr8 3136*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr2, vr8 3137*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr3, vr8 3138*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr4, vr8 3139*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr5, vr8 3140*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr16, vr6, vr8 3141*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr10, vr0, vr8 3142*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr11, vr1, vr8 3143*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr2, vr8 3144*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr3, vr8 3145*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr4, vr8 3146*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr5, vr8 3147*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr16, vr6, vr8 3148*c0909341SAndroid Build Coastguard Worker 3149*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr10, vr10, vr10 3150*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr11, vr11, vr11 3151*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 3152*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr13, vr13, vr13 3153*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr14, vr14, vr14 3154*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr15, vr15, vr15 3155*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr16, vr16, vr16 3156*c0909341SAndroid Build Coastguard Worker 3157*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr10, vr10, 2 //h0 3158*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr11, vr11, 2 //h1 3159*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr12, vr12, 2 //h2 3160*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr13, vr13, 2 //h3 3161*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr14, vr14, 2 //h4 3162*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr15, vr15, 2 //h5 3163*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr16, vr16, 2 //h6 3164*c0909341SAndroid Build Coastguard Worker 3165*c0909341SAndroid Build Coastguard Worker //h0 3166*c0909341SAndroid Build Coastguard Worker vilvl.h vr0, vr11, vr10 //01 3167*c0909341SAndroid Build Coastguard Worker vilvl.h vr1, vr13, vr12 //23 3168*c0909341SAndroid Build Coastguard Worker vilvl.h vr2, vr15, vr14 //45 3169*c0909341SAndroid Build Coastguard Worker //h1 3170*c0909341SAndroid Build Coastguard Worker vilvl.h vr4, vr12, vr11 //12 3171*c0909341SAndroid Build Coastguard Worker vilvl.h vr5, vr14, vr13 //34 3172*c0909341SAndroid Build Coastguard Worker vilvl.h vr6, vr16, vr15 //56 3173*c0909341SAndroid Build Coastguard Worker 3174*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_4w_loop: 3175*c0909341SAndroid Build Coastguard Worker vld vr9, a2, 0 3176*c0909341SAndroid Build Coastguard Worker vldx vr10, a2, a3 3177*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 3178*c0909341SAndroid Build Coastguard Worker 3179*c0909341SAndroid Build Coastguard Worker //DAV1D_FILTER_8TAP_CLIP 3180*c0909341SAndroid Build Coastguard Worker vshuf.b vr9, vr9, vr9, vr7 3181*c0909341SAndroid Build Coastguard Worker vshuf.b vr10, vr10, vr10, vr7 3182*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr11, vr9, vr8 3183*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr10, vr8 3184*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr11, vr9, vr8 3185*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr10, vr8 3186*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr11, vr11, vr11 3187*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 3188*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr11, vr11, 2 //h7 3189*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr12, vr12, 2 //h8 3190*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr11, vr16 //67 3191*c0909341SAndroid Build Coastguard Worker vilvl.h vr13, vr12, vr11 //78 3192*c0909341SAndroid Build Coastguard Worker 3193*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr9, vr0, vr17 3194*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr1, vr18 3195*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr2, vr19 3196*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr3, vr20 3197*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr0, vr17 3198*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr10, vr1, vr18 3199*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr2, vr19 3200*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr3, vr20 3201*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr9, vr10 3202*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr16, vr14 3203*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr16, vr15 3204*c0909341SAndroid Build Coastguard Worker 3205*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr9, vr4, vr17 3206*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr5, vr18 3207*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr6, vr19 3208*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr13, vr20 3209*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr4, vr17 3210*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr10, vr5, vr18 3211*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr6, vr19 3212*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr13, vr20 3213*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr9, vr10 3214*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr21, vr14 3215*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr21, vr15 3216*c0909341SAndroid Build Coastguard Worker 3217*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr21, vr16, 10 3218*c0909341SAndroid Build Coastguard Worker vssrani.bu.h vr21, vr21, 0 3219*c0909341SAndroid Build Coastguard Worker //cache 3220*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 3221*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 3222*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr3, 0 3223*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr5, 0 3224*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr6, 0 3225*c0909341SAndroid Build Coastguard Worker vaddi.hu vr6, vr13, 0 3226*c0909341SAndroid Build Coastguard Worker vaddi.hu vr16, vr12, 0 3227*c0909341SAndroid Build Coastguard Worker 3228*c0909341SAndroid Build Coastguard Worker vstelm.w vr21, a0, 0, 0 3229*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3230*c0909341SAndroid Build Coastguard Worker vstelm.w vr21, a0, 0, 1 3231*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3232*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 3233*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv_4w_loop 3234*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_put_8tap 3235*c0909341SAndroid Build Coastguard Worker 3236*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_8w: 3237*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_16w: 3238*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_32w: 3239*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_64w: 3240*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_128w: 3241*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -8*8 3242*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 3243*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 3244*c0909341SAndroid Build Coastguard Worker fst.d f26, sp, 16 3245*c0909341SAndroid Build Coastguard Worker fst.d f27, sp, 24 3246*c0909341SAndroid Build Coastguard Worker fst.d f28, sp, 32 3247*c0909341SAndroid Build Coastguard Worker fst.d f29, sp, 40 3248*c0909341SAndroid Build Coastguard Worker fst.d f30, sp, 48 3249*c0909341SAndroid Build Coastguard Worker fst.d f31, sp, 56 3250*c0909341SAndroid Build Coastguard Worker addi.d t0, a2, 0 //src 3251*c0909341SAndroid Build Coastguard Worker addi.d t5, a5, 0 //h 3252*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 3253*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf1 3254*c0909341SAndroid Build Coastguard Worker vld vr7, t1, 0 3255*c0909341SAndroid Build Coastguard Worker vaddi.bu vr11, vr7, 4 3256*c0909341SAndroid Build Coastguard Worker vaddi.bu vr12, vr7, 8 3257*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr8, 1 3258*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 3259*c0909341SAndroid Build Coastguard Worker vreplvei.w vr20, vr9, 1 3260*c0909341SAndroid Build Coastguard Worker vreplvei.w vr21, vr9, 2 3261*c0909341SAndroid Build Coastguard Worker vreplvei.w vr22, vr9, 3 3262*c0909341SAndroid Build Coastguard Worker vreplvei.w vr9, vr9, 0 3263*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_8w_loop0: 3264*c0909341SAndroid Build Coastguard Worker vld vr0, a2, 0 3265*c0909341SAndroid Build Coastguard Worker vldx vr1, a2, a3 3266*c0909341SAndroid Build Coastguard Worker vldx vr2, a2, t2 3267*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t3 3268*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 0 3269*c0909341SAndroid Build Coastguard Worker vldx vr4, a2, a3 3270*c0909341SAndroid Build Coastguard Worker vldx vr5, a2, t2 3271*c0909341SAndroid Build Coastguard Worker vldx vr6, a2, t3 3272*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t4 3273*c0909341SAndroid Build Coastguard Worker 3274*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr0 //h0 3275*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr1 //h1 3276*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr2 //h2 3277*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr3 //h3 3278*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr4 //h4 3279*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr5 //h5 3280*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr6 //h6 3281*c0909341SAndroid Build Coastguard Worker 3282*c0909341SAndroid Build Coastguard Worker //h0' low part 3283*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr1, vr0 //01 3284*c0909341SAndroid Build Coastguard Worker vilvl.h vr24, vr3, vr2 //23 3285*c0909341SAndroid Build Coastguard Worker vilvl.h vr25, vr5, vr4 //45 3286*c0909341SAndroid Build Coastguard Worker //h0' high part 3287*c0909341SAndroid Build Coastguard Worker vilvh.h vr26, vr1, vr0 //01 3288*c0909341SAndroid Build Coastguard Worker vilvh.h vr27, vr3, vr2 //23 3289*c0909341SAndroid Build Coastguard Worker vilvh.h vr28, vr5, vr4 //45 3290*c0909341SAndroid Build Coastguard Worker 3291*c0909341SAndroid Build Coastguard Worker //h1' low part 3292*c0909341SAndroid Build Coastguard Worker vilvl.h vr29, vr2, vr1 //12 3293*c0909341SAndroid Build Coastguard Worker vilvl.h vr30, vr4, vr3 //34 3294*c0909341SAndroid Build Coastguard Worker vilvl.h vr31, vr6, vr5 //56 3295*c0909341SAndroid Build Coastguard Worker //h1' high part 3296*c0909341SAndroid Build Coastguard Worker vilvh.h vr0, vr2, vr1 //12 3297*c0909341SAndroid Build Coastguard Worker vilvh.h vr1, vr4, vr3 //34 3298*c0909341SAndroid Build Coastguard Worker vilvh.h vr2, vr6, vr5 //56 3299*c0909341SAndroid Build Coastguard Worker 3300*c0909341SAndroid Build Coastguard Worker.l_\lable\()put_hv_8w_loop: 3301*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 0 3302*c0909341SAndroid Build Coastguard Worker vldx vr4, a2, a3 3303*c0909341SAndroid Build Coastguard Worker add.d a2, a2, t2 3304*c0909341SAndroid Build Coastguard Worker 3305*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr3 //h7 3306*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr4 //h8 3307*c0909341SAndroid Build Coastguard Worker 3308*c0909341SAndroid Build Coastguard Worker //h0' low part 3309*c0909341SAndroid Build Coastguard Worker vilvl.h vr16, vr3, vr6 //67 ~low 3310*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr13, vr23, vr9 3311*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr24, vr20 3312*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr25, vr21 3313*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr17, vr16, vr22 3314*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr13, vr23, vr9 3315*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr24, vr20 3316*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr25, vr21 3317*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr16, vr22 3318*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr14 3319*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr15 3320*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr17 3321*c0909341SAndroid Build Coastguard Worker //cache 3322*c0909341SAndroid Build Coastguard Worker vaddi.hu vr23, vr24, 0 3323*c0909341SAndroid Build Coastguard Worker vaddi.hu vr24, vr25, 0 3324*c0909341SAndroid Build Coastguard Worker vaddi.hu vr25, vr16, 0 3325*c0909341SAndroid Build Coastguard Worker 3326*c0909341SAndroid Build Coastguard Worker //h0' high part 3327*c0909341SAndroid Build Coastguard Worker vilvh.h vr17, vr3, vr6 //67 ~high 3328*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr26, vr9 3329*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr27, vr20 3330*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr28, vr21 3331*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr18, vr17, vr22 3332*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr26, vr9 3333*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr27, vr20 3334*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr28, vr21 3335*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr18, vr17, vr22 3336*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr15 3337*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr16 3338*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr18 3339*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr13, 10 3340*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr14, 0 3341*c0909341SAndroid Build Coastguard Worker vstelm.d vr5, a0, 0, 0 3342*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3343*c0909341SAndroid Build Coastguard Worker //cache 3344*c0909341SAndroid Build Coastguard Worker vaddi.hu vr26, vr27, 0 3345*c0909341SAndroid Build Coastguard Worker vaddi.hu vr27, vr28, 0 3346*c0909341SAndroid Build Coastguard Worker vaddi.hu vr28, vr17, 0 3347*c0909341SAndroid Build Coastguard Worker vaddi.hu vr6, vr4, 0 3348*c0909341SAndroid Build Coastguard Worker 3349*c0909341SAndroid Build Coastguard Worker vilvl.h vr5, vr4, vr3 //78 ~low 3350*c0909341SAndroid Build Coastguard Worker vilvh.h vr4, vr4, vr3 //78 ~high 3351*c0909341SAndroid Build Coastguard Worker 3352*c0909341SAndroid Build Coastguard Worker //h1' low part 3353*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr13, vr29, vr9 3354*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr30, vr20 3355*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr31, vr21 3356*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr5, vr22 3357*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr13, vr29, vr9 3358*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr30, vr20 3359*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr31, vr21 3360*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr5, vr22 3361*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr14 3362*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr15 3363*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr16 3364*c0909341SAndroid Build Coastguard Worker //cache 3365*c0909341SAndroid Build Coastguard Worker vaddi.hu vr29, vr30, 0 3366*c0909341SAndroid Build Coastguard Worker vaddi.hu vr30, vr31, 0 3367*c0909341SAndroid Build Coastguard Worker vaddi.hu vr31, vr5, 0 3368*c0909341SAndroid Build Coastguard Worker 3369*c0909341SAndroid Build Coastguard Worker //h1' high part 3370*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr0, vr9 3371*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr1, vr20 3372*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr2, vr21 3373*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr17, vr4, vr22 3374*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr0, vr9 3375*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr1, vr20 3376*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr2, vr21 3377*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr4, vr22 3378*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr15 3379*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr16 3380*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr17 3381*c0909341SAndroid Build Coastguard Worker vssrarni.hu.w vr14, vr13, 10 3382*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr14, 0 3383*c0909341SAndroid Build Coastguard Worker vstelm.d vr5, a0, 0, 0 3384*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 3385*c0909341SAndroid Build Coastguard Worker //cache 3386*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 3387*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 3388*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr4, 0 3389*c0909341SAndroid Build Coastguard Worker 3390*c0909341SAndroid Build Coastguard Worker addi.w a5, a5, -2 3391*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()put_hv_8w_loop 3392*c0909341SAndroid Build Coastguard Worker addi.d a2, t0, 8 3393*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 8 3394*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 8 3395*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 8 3396*c0909341SAndroid Build Coastguard Worker addi.d a5, t5, 0 3397*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -8 3398*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()put_hv_8w_loop0 3399*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 3400*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 3401*c0909341SAndroid Build Coastguard Worker fld.d f26, sp, 16 3402*c0909341SAndroid Build Coastguard Worker fld.d f27, sp, 24 3403*c0909341SAndroid Build Coastguard Worker fld.d f28, sp, 32 3404*c0909341SAndroid Build Coastguard Worker fld.d f29, sp, 40 3405*c0909341SAndroid Build Coastguard Worker fld.d f30, sp, 48 3406*c0909341SAndroid Build Coastguard Worker fld.d f31, sp, 56 3407*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 8*8 3408*c0909341SAndroid Build Coastguard Worker.l_\lable\()end_put_8tap: 3409*c0909341SAndroid Build Coastguard Worker.endm 3410*c0909341SAndroid Build Coastguard Worker 3411*c0909341SAndroid Build Coastguard Workerfunction put_8tap_regular_8bpc_lsx 3412*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3413*c0909341SAndroid Build Coastguard Worker st.d zero, sp, 0 3414*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 0 3415*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3416*c0909341SAndroid Build Coastguard Workerendfunc 3417*c0909341SAndroid Build Coastguard Worker 3418*c0909341SAndroid Build Coastguard Workerfunction put_8tap_smooth_regular_8bpc_lsx 3419*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3420*c0909341SAndroid Build Coastguard Worker li.w t0, 1 3421*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3422*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 1 3423*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3424*c0909341SAndroid Build Coastguard Workerendfunc 3425*c0909341SAndroid Build Coastguard Worker 3426*c0909341SAndroid Build Coastguard Workerfunction put_8tap_sharp_regular_8bpc_lsx 3427*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3428*c0909341SAndroid Build Coastguard Worker li.w t0, 2 3429*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3430*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 2 3431*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3432*c0909341SAndroid Build Coastguard Workerendfunc 3433*c0909341SAndroid Build Coastguard Worker 3434*c0909341SAndroid Build Coastguard Workerfunction put_8tap_regular_smooth_8bpc_lsx 3435*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3436*c0909341SAndroid Build Coastguard Worker li.w t0, 4 3437*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3438*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 4 3439*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3440*c0909341SAndroid Build Coastguard Workerendfunc 3441*c0909341SAndroid Build Coastguard Worker 3442*c0909341SAndroid Build Coastguard Workerfunction put_8tap_smooth_8bpc_lsx 3443*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3444*c0909341SAndroid Build Coastguard Worker li.w t0, 5 3445*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3446*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 5 3447*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3448*c0909341SAndroid Build Coastguard Workerendfunc 3449*c0909341SAndroid Build Coastguard Worker 3450*c0909341SAndroid Build Coastguard Workerfunction put_8tap_sharp_smooth_8bpc_lsx 3451*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3452*c0909341SAndroid Build Coastguard Worker li.w t0, 6 3453*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3454*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 6 3455*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3456*c0909341SAndroid Build Coastguard Workerendfunc 3457*c0909341SAndroid Build Coastguard Worker 3458*c0909341SAndroid Build Coastguard Workerfunction put_8tap_regular_sharp_8bpc_lsx 3459*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3460*c0909341SAndroid Build Coastguard Worker li.w t0, 8 3461*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3462*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 8 3463*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3464*c0909341SAndroid Build Coastguard Workerendfunc 3465*c0909341SAndroid Build Coastguard Worker 3466*c0909341SAndroid Build Coastguard Workerfunction put_8tap_smooth_sharp_8bpc_lsx 3467*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3468*c0909341SAndroid Build Coastguard Worker li.w t0, 9 3469*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3470*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 9 3471*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3472*c0909341SAndroid Build Coastguard Workerendfunc 3473*c0909341SAndroid Build Coastguard Worker 3474*c0909341SAndroid Build Coastguard Workerfunction put_8tap_sharp_8bpc_lsx 3475*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -16 3476*c0909341SAndroid Build Coastguard Worker li.w t0, 10 3477*c0909341SAndroid Build Coastguard Worker st.d t0, sp, 0 3478*c0909341SAndroid Build Coastguard Worker PUT_8TAP_8BPC_LSX 10 3479*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 16 3480*c0909341SAndroid Build Coastguard Workerendfunc 3481*c0909341SAndroid Build Coastguard Worker 3482*c0909341SAndroid Build Coastguard Workerconst shufb1 3483*c0909341SAndroid Build Coastguard Worker.byte 0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,8 3484*c0909341SAndroid Build Coastguard Workerendconst 3485*c0909341SAndroid Build Coastguard Worker 3486*c0909341SAndroid Build Coastguard Worker.macro PREP_H_8W in0 3487*c0909341SAndroid Build Coastguard Worker vshuf.b vr2, \in0, \in0, vr6 3488*c0909341SAndroid Build Coastguard Worker vshuf.b vr3, \in0, \in0, vr7 3489*c0909341SAndroid Build Coastguard Worker vshuf.b vr4, \in0, \in0, vr8 3490*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr2, vr22 3491*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr3, vr23 3492*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr3, vr22 3493*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr4, vr23 3494*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr2, vr22 3495*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr3, vr23 3496*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr3, vr22 3497*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr4, vr23 3498*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr13 3499*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr15 3500*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 3501*c0909341SAndroid Build Coastguard Worker vhaddw.w.h \in0, vr14, vr14 3502*c0909341SAndroid Build Coastguard Worker vssrarni.h.w \in0, vr12, 2 3503*c0909341SAndroid Build Coastguard Worker.endm 3504*c0909341SAndroid Build Coastguard Worker 3505*c0909341SAndroid Build Coastguard Worker.macro PREP_HV_8W_LASX in0 3506*c0909341SAndroid Build Coastguard Worker xvshuf.b xr4, \in0, \in0, xr19 3507*c0909341SAndroid Build Coastguard Worker xvshuf.b xr5, \in0, \in0, xr20 3508*c0909341SAndroid Build Coastguard Worker xvshuf.b xr6, \in0, \in0, xr21 3509*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr7, xr4, xr22 3510*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr9, xr5, xr23 3511*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr10, xr5, xr22 3512*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr11, xr6, xr23 3513*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr7, xr4, xr22 3514*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr9, xr5, xr23 3515*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr10, xr5, xr22 3516*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr11, xr6, xr23 3517*c0909341SAndroid Build Coastguard Worker xvadd.h xr7, xr7, xr9 3518*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr10, xr11 3519*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr7, xr7, xr7 3520*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h \in0, xr9, xr9 3521*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w \in0, xr7, 2 3522*c0909341SAndroid Build Coastguard Worker.endm 3523*c0909341SAndroid Build Coastguard Worker 3524*c0909341SAndroid Build Coastguard Worker.macro PREP_8TAP_8BPC_LASX lable 3525*c0909341SAndroid Build Coastguard Worker li.w t0, 4 3526*c0909341SAndroid Build Coastguard Worker la.local t6, dav1d_mc_subpel_filters 3527*c0909341SAndroid Build Coastguard Worker slli.d t2, a2, 1 //src_stride*2 3528*c0909341SAndroid Build Coastguard Worker add.d t3, t2, a2 //src_stride*3 3529*c0909341SAndroid Build Coastguard Worker slli.d t4, t2, 1 3530*c0909341SAndroid Build Coastguard Worker 3531*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()h_lasx //mx 3532*c0909341SAndroid Build Coastguard Worker bnez a6, .l_\lable\()v_lasx 3533*c0909341SAndroid Build Coastguard Worker 3534*c0909341SAndroid Build Coastguard Worker clz.w t1, a3 3535*c0909341SAndroid Build Coastguard Worker li.w t5, 24 3536*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 3537*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()prep_hv0_jtable_lasx 3538*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 1 3539*c0909341SAndroid Build Coastguard Worker ld.h t8, t1, 0 3540*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t8 3541*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 3542*c0909341SAndroid Build Coastguard Worker 3543*c0909341SAndroid Build Coastguard Worker .align 3 3544*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_hv0_jtable_lasx: 3545*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_128w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3546*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_64w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3547*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_32w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3548*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_16w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3549*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_8w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3550*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_4w_lasx - .l_\lable\()prep_hv0_jtable_lasx 3551*c0909341SAndroid Build Coastguard Worker 3552*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_4w_lasx: 3553*c0909341SAndroid Build Coastguard Worker fld.s f0, a1, 0 3554*c0909341SAndroid Build Coastguard Worker fldx.s f1, a1, a2 3555*c0909341SAndroid Build Coastguard Worker fldx.s f2, a1, t2 3556*c0909341SAndroid Build Coastguard Worker fldx.s f3, a1, t3 3557*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3558*c0909341SAndroid Build Coastguard Worker xvpackev.w xr0, xr1, xr0 3559*c0909341SAndroid Build Coastguard Worker xvpackev.w xr1, xr3, xr2 3560*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3561*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr0, xr0, 4 3562*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3563*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 3564*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3565*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_4w_lasx 3566*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3567*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_8w_lasx: 3568*c0909341SAndroid Build Coastguard Worker fld.d f0, a1, 0 3569*c0909341SAndroid Build Coastguard Worker fldx.d f1, a1, a2 3570*c0909341SAndroid Build Coastguard Worker fldx.d f2, a1, t2 3571*c0909341SAndroid Build Coastguard Worker fldx.d f3, a1, t3 3572*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3573*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3574*c0909341SAndroid Build Coastguard Worker xvpermi.q xr2, xr3, 0x02 3575*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr0, xr0, 4 3576*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr2, xr2, 4 3577*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3578*c0909341SAndroid Build Coastguard Worker xvst xr2, a0, 32 3579*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 64 3580*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3581*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_8w_lasx 3582*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3583*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_16w_lasx: 3584*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 3585*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 3586*c0909341SAndroid Build Coastguard Worker vldx vr2, a1, t2 3587*c0909341SAndroid Build Coastguard Worker vldx vr3, a1, t3 3588*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3589*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr0, xr0 3590*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr1, xr1 3591*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr2, xr2 3592*c0909341SAndroid Build Coastguard Worker vext2xv.hu.bu xr3, xr3 3593*c0909341SAndroid Build Coastguard Worker xvslli.h xr0, xr0, 4 3594*c0909341SAndroid Build Coastguard Worker xvslli.h xr1, xr1, 4 3595*c0909341SAndroid Build Coastguard Worker xvslli.h xr2, xr2, 4 3596*c0909341SAndroid Build Coastguard Worker xvslli.h xr3, xr3, 4 3597*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3598*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 32 3599*c0909341SAndroid Build Coastguard Worker xvst xr2, a0, 64 3600*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 96 3601*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 128 3602*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3603*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_16w_lasx 3604*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3605*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_32w_lasx: 3606*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3607*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 3608*c0909341SAndroid Build Coastguard Worker xvldx xr2, a1, t2 3609*c0909341SAndroid Build Coastguard Worker xvldx xr3, a1, t3 3610*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3611*c0909341SAndroid Build Coastguard Worker xvpermi.d xr4, xr0, 0xD8 3612*c0909341SAndroid Build Coastguard Worker xvpermi.d xr5, xr1, 0xD8 3613*c0909341SAndroid Build Coastguard Worker xvpermi.d xr6, xr2, 0xD8 3614*c0909341SAndroid Build Coastguard Worker xvpermi.d xr7, xr3, 0xD8 3615*c0909341SAndroid Build Coastguard Worker xvpermi.d xr10, xr0, 0x32 3616*c0909341SAndroid Build Coastguard Worker xvpermi.d xr11, xr1, 0x32 3617*c0909341SAndroid Build Coastguard Worker xvpermi.d xr12, xr2, 0x32 3618*c0909341SAndroid Build Coastguard Worker xvpermi.d xr13, xr3, 0x32 3619*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr0, xr4, 4 3620*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr1, xr5, 4 3621*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr2, xr6, 4 3622*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr3, xr7, 4 3623*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr4, xr10, 4 3624*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr5, xr11, 4 3625*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr6, xr12, 4 3626*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr7, xr13, 4 3627*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3628*c0909341SAndroid Build Coastguard Worker xvst xr4, a0, 32 3629*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 64 3630*c0909341SAndroid Build Coastguard Worker xvst xr5, a0, 96 3631*c0909341SAndroid Build Coastguard Worker xvst xr2, a0, 128 3632*c0909341SAndroid Build Coastguard Worker xvst xr6, a0, 160 3633*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 192 3634*c0909341SAndroid Build Coastguard Worker xvst xr7, a0, 224 3635*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 256 3636*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3637*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_32w_lasx 3638*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3639*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_64w_lasx: 3640*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_128w_lasx: 3641*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 3642*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 3643*c0909341SAndroid Build Coastguard Worker srli.w t7, a3, 5 3644*c0909341SAndroid Build Coastguard Worker slli.w t7, t7, 6 3645*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 3646*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_32_loop_lasx: 3647*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3648*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 3649*c0909341SAndroid Build Coastguard Worker xvldx xr2, a1, t2 3650*c0909341SAndroid Build Coastguard Worker xvldx xr3, a1, t3 3651*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3652*c0909341SAndroid Build Coastguard Worker xvpermi.d xr4, xr0, 0xD8 3653*c0909341SAndroid Build Coastguard Worker xvpermi.d xr5, xr1, 0xD8 3654*c0909341SAndroid Build Coastguard Worker xvpermi.d xr6, xr2, 0xD8 3655*c0909341SAndroid Build Coastguard Worker xvpermi.d xr7, xr3, 0xD8 3656*c0909341SAndroid Build Coastguard Worker xvpermi.d xr10, xr0, 0x32 3657*c0909341SAndroid Build Coastguard Worker xvpermi.d xr11, xr1, 0x32 3658*c0909341SAndroid Build Coastguard Worker xvpermi.d xr12, xr2, 0x32 3659*c0909341SAndroid Build Coastguard Worker xvpermi.d xr13, xr3, 0x32 3660*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr0, xr4, 4 3661*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr1, xr5, 4 3662*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr2, xr6, 4 3663*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr3, xr7, 4 3664*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr4, xr10, 4 3665*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr5, xr11, 4 3666*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr6, xr12, 4 3667*c0909341SAndroid Build Coastguard Worker xvsllwil.hu.bu xr7, xr13, 4 3668*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3669*c0909341SAndroid Build Coastguard Worker xvst xr4, a0, 32 3670*c0909341SAndroid Build Coastguard Worker add.d t1, a0, t7 3671*c0909341SAndroid Build Coastguard Worker xvst xr1, t1, 0 3672*c0909341SAndroid Build Coastguard Worker xvst xr5, t1, 32 3673*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t7 3674*c0909341SAndroid Build Coastguard Worker xvst xr2, t1, 0 3675*c0909341SAndroid Build Coastguard Worker xvst xr6, t1, 32 3676*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t7 3677*c0909341SAndroid Build Coastguard Worker xvst xr3, t1, 0 3678*c0909341SAndroid Build Coastguard Worker xvst xr7, t1, 32 3679*c0909341SAndroid Build Coastguard Worker add.d a0, t1, t7 3680*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3681*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_32_loop_lasx 3682*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 32 3683*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 32 3684*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 64 3685*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 64 3686*c0909341SAndroid Build Coastguard Worker addi.d a4, t5, 0 3687*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -32 3688*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()hv0_32_loop_lasx 3689*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3690*c0909341SAndroid Build Coastguard Worker 3691*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_lasx: 3692*c0909341SAndroid Build Coastguard Worker bnez a6, .l_\lable\()hv_lasx //if(fh) && if (fv) 3693*c0909341SAndroid Build Coastguard Worker 3694*c0909341SAndroid Build Coastguard Worker andi t1, a7, 3 3695*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()h_idx_fh_lasx 3696*c0909341SAndroid Build Coastguard Worker andi t1, a7, 1 3697*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 3698*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_idx_fh_lasx: 3699*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 3700*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 3701*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, -1 3702*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 3703*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 3704*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fh's offset 3705*c0909341SAndroid Build Coastguard Worker xvldrepl.d xr22, t1, 0 3706*c0909341SAndroid Build Coastguard Worker 3707*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, -3 3708*c0909341SAndroid Build Coastguard Worker clz.w t1, a3 3709*c0909341SAndroid Build Coastguard Worker li.w t5, 24 3710*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 3711*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()prep_h_jtable_lasx 3712*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 1 3713*c0909341SAndroid Build Coastguard Worker ld.h t8, t1, 0 3714*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t8 3715*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 3716*c0909341SAndroid Build Coastguard Worker 3717*c0909341SAndroid Build Coastguard Worker .align 3 3718*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_h_jtable_lasx: 3719*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_128w_lasx - .l_\lable\()prep_h_jtable_lasx 3720*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_64w_lasx - .l_\lable\()prep_h_jtable_lasx 3721*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_32w_lasx - .l_\lable\()prep_h_jtable_lasx 3722*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_16w_lasx - .l_\lable\()prep_h_jtable_lasx 3723*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_8w_lasx - .l_\lable\()prep_h_jtable_lasx 3724*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_4w_lasx - .l_\lable\()prep_h_jtable_lasx 3725*c0909341SAndroid Build Coastguard Worker 3726*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_4w_lasx: 3727*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, 2 3728*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 3729*c0909341SAndroid Build Coastguard Worker vld vr7, t7, 0 3730*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr7, xr7 3731*c0909341SAndroid Build Coastguard Worker xvbsrl.v xr22, xr22, 2 3732*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 3733*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_4w_loop_lasx: 3734*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 3735*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 3736*c0909341SAndroid Build Coastguard Worker vldx vr2, a1, t2 3737*c0909341SAndroid Build Coastguard Worker vldx vr3, a1, t3 3738*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3739*c0909341SAndroid Build Coastguard Worker xvpermi.q xr1, xr0, 0x20 3740*c0909341SAndroid Build Coastguard Worker xvpermi.q xr3, xr2, 0x20 3741*c0909341SAndroid Build Coastguard Worker xvshuf.b xr1, xr1, xr1, xr7 3742*c0909341SAndroid Build Coastguard Worker xvshuf.b xr3, xr3, xr3, xr7 3743*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr0, xr1, xr22 3744*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr2, xr3, xr22 3745*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr0, xr1, xr22 3746*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr2, xr3, xr22 3747*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr0, xr0, xr0 3748*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr2, xr2, xr2 3749*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr2, xr0, 2 3750*c0909341SAndroid Build Coastguard Worker xvpermi.d xr2, xr2, 0xd8 3751*c0909341SAndroid Build Coastguard Worker xvst xr2, a0, 0 3752*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 3753*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -4 3754*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_4w_loop_lasx 3755*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3756*c0909341SAndroid Build Coastguard Worker 3757*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_8w_lasx: 3758*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 3759*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 3760*c0909341SAndroid Build Coastguard Worker vbsrl.v vr23, vr22, 4 //fh 3761*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr23, xr23 3762*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 3763*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr19, xr6 3764*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr20, xr19, 4 3765*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr21, xr19, 8 3766*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_8w_loop_lasx: 3767*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3768*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 3769*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 3770*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3771*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 3772*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3773*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 3774*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 3775*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_8w_loop_lasx 3776*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3777*c0909341SAndroid Build Coastguard Worker 3778*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16w_lasx: 3779*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 3780*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 3781*c0909341SAndroid Build Coastguard Worker vbsrl.v vr23, vr22, 4 //fh 3782*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr23, xr23 3783*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 3784*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr19, xr6 3785*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr20, xr19, 4 3786*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr21, xr19, 8 3787*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16w_loop_lasx: 3788*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3789*c0909341SAndroid Build Coastguard Worker xvld xr1, a1, 8 3790*c0909341SAndroid Build Coastguard Worker add.d a1, a1, a2 3791*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3792*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 3793*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3794*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3795*c0909341SAndroid Build Coastguard Worker xvld xr1, a1, 8 3796*c0909341SAndroid Build Coastguard Worker add.d a1, a1, a2 3797*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3798*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 3799*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 32 3800*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 64 3801*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -2 3802*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_16w_loop_lasx 3803*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3804*c0909341SAndroid Build Coastguard Worker 3805*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_32w_lasx: 3806*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_64w_lasx: 3807*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_128w_lasx: 3808*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 3809*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 3810*c0909341SAndroid Build Coastguard Worker vbsrl.v vr23, vr22, 4 //fh 3811*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr23, xr23 3812*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 3813*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr19, xr6 3814*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr20, xr19, 4 3815*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr21, xr19, 8 3816*c0909341SAndroid Build Coastguard Worker addi.d t5, a1, 0 //src 3817*c0909341SAndroid Build Coastguard Worker addi.d t6, a3, 0 //w 3818*c0909341SAndroid Build Coastguard Worker slli.w t7, a3, 1 //store offset 3819*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 3820*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16_loop_lasx: 3821*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3822*c0909341SAndroid Build Coastguard Worker xvld xr1, a1, 8 3823*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3824*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 3825*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 0 3826*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 16 3827*c0909341SAndroid Build Coastguard Worker xvld xr1, a1, 24 3828*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 3829*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 3830*c0909341SAndroid Build Coastguard Worker xvst xr0, a0, 32 3831*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 64 3832*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, 32 3833*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -32 3834*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()h_16_loop_lasx 3835*c0909341SAndroid Build Coastguard Worker add.d a1, t5, a2 3836*c0909341SAndroid Build Coastguard Worker add.d t5, t5, a2 3837*c0909341SAndroid Build Coastguard Worker add.d a0, t8, t7 3838*c0909341SAndroid Build Coastguard Worker add.d t8, t8, t7 3839*c0909341SAndroid Build Coastguard Worker addi.d a3, t6, 0 3840*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -1 3841*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_16_loop_lasx 3842*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3843*c0909341SAndroid Build Coastguard Worker 3844*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_lasx: 3845*c0909341SAndroid Build Coastguard Worker andi t1, a7, 3 3846*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()hv_idx_fh_lasx 3847*c0909341SAndroid Build Coastguard Worker andi t1, a7, 1 3848*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 3849*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_idx_fh_lasx: 3850*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 3851*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 3852*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, -1 3853*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 3854*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 3855*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fh's offset 3856*c0909341SAndroid Build Coastguard Worker xvldrepl.d xr22, t1, 0 3857*c0909341SAndroid Build Coastguard Worker srli.w a7, a7, 2 3858*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()hv_idx_fv_lasx 3859*c0909341SAndroid Build Coastguard Worker andi a7, a7, 1 3860*c0909341SAndroid Build Coastguard Worker addi.w a7, a7, 3 3861*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_idx_fv_lasx: 3862*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 3863*c0909341SAndroid Build Coastguard Worker mul.w a7, a7, t5 3864*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 3865*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 3866*c0909341SAndroid Build Coastguard Worker add.w a7, a7, t5 3867*c0909341SAndroid Build Coastguard Worker add.d a7, t6, a7 //fv's offset 3868*c0909341SAndroid Build Coastguard Worker xvldrepl.d xr8, a7, 0 3869*c0909341SAndroid Build Coastguard Worker xvsllwil.h.b xr8, xr8, 0 3870*c0909341SAndroid Build Coastguard Worker sub.d a1, a1, t3 3871*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, -1 //ignore leading 0s 3872*c0909341SAndroid Build Coastguard Worker beq a3, t0, .l_\lable\()hv_4w_lasx 3873*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, -2 3874*c0909341SAndroid Build Coastguard Worker b .l_\lable\()hv_8w_lasx 3875*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_4w_lasx: 3876*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 3877*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 3878*c0909341SAndroid Build Coastguard Worker xvldx xr2, a1, t2 3879*c0909341SAndroid Build Coastguard Worker xvldx xr3, a1, t3 3880*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3881*c0909341SAndroid Build Coastguard Worker xvld xr4, a1, 0 3882*c0909341SAndroid Build Coastguard Worker xvldx xr5, a1, a2 3883*c0909341SAndroid Build Coastguard Worker xvldx xr6, a1, t2 3884*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf2 3885*c0909341SAndroid Build Coastguard Worker xvld xr7, t1, 0 3886*c0909341SAndroid Build Coastguard Worker vbsrl.v vr22, vr22, 2 3887*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 3888*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr8, xr8 3889*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr12, xr8, 0 3890*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr13, xr8, 1 3891*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr14, xr8, 2 3892*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr15, xr8, 3 3893*c0909341SAndroid Build Coastguard Worker xvilvl.d xr0, xr1, xr0 3894*c0909341SAndroid Build Coastguard Worker xvilvl.d xr2, xr3, xr2 3895*c0909341SAndroid Build Coastguard Worker xvilvl.d xr4, xr5, xr4 3896*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr0, xr0 3897*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr2, xr2 3898*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr4, xr4 3899*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr6, xr6 3900*c0909341SAndroid Build Coastguard Worker xvshuf.b xr0, xr0, xr0, xr7 3901*c0909341SAndroid Build Coastguard Worker xvshuf.b xr2, xr2, xr2, xr7 3902*c0909341SAndroid Build Coastguard Worker xvshuf.b xr4, xr4, xr4, xr7 3903*c0909341SAndroid Build Coastguard Worker xvshuf.b xr6, xr6, xr6, xr7 3904*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr1, xr0, xr22 3905*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr3, xr2, xr22 3906*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr5, xr4, xr22 3907*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr9, xr6, xr22 3908*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr1, xr0, xr22 3909*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr3, xr2, xr22 3910*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr5, xr4, xr22 3911*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr9, xr6, xr22 3912*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr1, xr1, xr1 // a0 b0 a1 b1 c0 d0 c1 d1 3913*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr3, xr3, xr3 // a2 b2 a3 b3 c2 d2 c3 d3 3914*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr5, xr5, xr5 // a4 b4 a5 b5 c4 d4 c5 d5 3915*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr9, xr9, xr9 // a6 b6 - - c6 d6 - - 3916*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr3, xr1, 2 // a0 b0 a1 b1 a2 b2 a3 b3 c0 d0 c1 d1 c2 d2 c3 d3 3917*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr9, xr5, 2 // a4 b4 a5 b5 a6 b6 - - c4 d4 c5 d5 c6 d6 - - 3918*c0909341SAndroid Build Coastguard Worker xvbsrl.v xr4, xr3, 4 3919*c0909341SAndroid Build Coastguard Worker xvextrins.w xr4, xr9, 0x30 // a1 b1 a2 b2 a3 b3 a4 b4 c1 d1 c2 d2 c3 d3 c4 d4 3920*c0909341SAndroid Build Coastguard Worker xvilvl.h xr5, xr4, xr3 // a0 a1 b0 b1 a1 a2 b1 b2 c0 c1 d0 d1 c1 c2 d1 d2 3921*c0909341SAndroid Build Coastguard Worker xvilvh.h xr6, xr4, xr3 // a2 a3 b2 b3 a3 a4 b3 b4 c2 c3 d2 d3 c3 c4 d3 d4 3922*c0909341SAndroid Build Coastguard Worker xvbsrl.v xr10, xr9, 4 // a5 b5 a6 b6 - - - - c5 d5 c6 d6 - - - - 3923*c0909341SAndroid Build Coastguard Worker xvilvl.h xr11, xr10, xr9 // a4 a5 b4 b5 a5 a6 b5 b6 c4 c5 d4 d5 c5 c6 d5 d6 3924*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_w4_loop_lasx: 3925*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr16, xr5, xr12 //a0 a1 (h0) 3926*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr17, xr6, xr12 //a2 a3 (h1) 3927*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr18, xr6, xr13 //a2 a3 (h0) 3928*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr19, xr11, xr13 //a4 a5 (h1) 3929*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr20, xr11, xr14 //a4 a5 (h0) 3930*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr16, xr5, xr12 // 3931*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr17, xr6, xr12 // 3932*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr18, xr6, xr13 // 3933*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr19, xr11, xr13 // 3934*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr20, xr11, xr14 // 3935*c0909341SAndroid Build Coastguard Worker xvaddi.wu xr5, xr11, 0 3936*c0909341SAndroid Build Coastguard Worker xvadd.w xr16, xr16, xr18 //a0 a1 + a2 a3 3937*c0909341SAndroid Build Coastguard Worker xvldx xr18, a1, t3 //a7 b7 c7 d7 3938*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 3939*c0909341SAndroid Build Coastguard Worker xvadd.w xr17, xr17, xr19 //a2 a3 + a4 a5 3940*c0909341SAndroid Build Coastguard Worker xvld xr19, a1, 0 //a8 b8 c8 d8 3941*c0909341SAndroid Build Coastguard Worker xvadd.w xr16, xr16, xr20 //a0 a1 + a2 a3 + a4 a5 3942*c0909341SAndroid Build Coastguard Worker xvldx xr20, a1, a2 //a9 b9 c9 d9 3943*c0909341SAndroid Build Coastguard Worker xvilvl.d xr18, xr19, xr18 3944*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr18, xr18 3945*c0909341SAndroid Build Coastguard Worker xvldx xr19, a1, t2 //aa ba ca da 3946*c0909341SAndroid Build Coastguard Worker xvilvl.d xr20, xr19, xr20 3947*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr20, xr20 3948*c0909341SAndroid Build Coastguard Worker xvshuf.b xr18, xr18, xr18, xr7 3949*c0909341SAndroid Build Coastguard Worker xvshuf.b xr20, xr20, xr20, xr7 3950*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr21, xr18, xr22 3951*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr23, xr20, xr22 3952*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr21, xr18, xr22 3953*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr23, xr20, xr22 3954*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr21, xr21, xr21 //a7 b7 a8 b8 c7 d7 c8 d8 3955*c0909341SAndroid Build Coastguard Worker xvhaddw.w.h xr23, xr23, xr23 //a9 b9 aa ba c9 d9 ca da 3956*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr23, xr21, 2 //a7 b7 a8 b8 a9 b9 aa ba c7 d7 c8 d8 c9 d9 ca da 3957*c0909341SAndroid Build Coastguard Worker xvbsll.v xr0, xr23, 4 3958*c0909341SAndroid Build Coastguard Worker xvextrins.w xr0, xr9, 0x02 //a6 b6 a7 b7 a8 b8 a9 b9 c6 d6 c7 d7 c8 d8 c9 d9 3959*c0909341SAndroid Build Coastguard Worker xvilvl.h xr6, xr23, xr0 //a6 a7 b6 b7 a7 a8 b7 b8 c6 c7 d6 d7 c7 c8 d7 d8 3960*c0909341SAndroid Build Coastguard Worker xvilvh.h xr11, xr23, xr0 //a8 a9 b8 b9 a9 aa b9 ba c8 c9 d8 d9 c9 ca d9 da 3961*c0909341SAndroid Build Coastguard Worker xvbsrl.v xr9, xr23, 4 3962*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr1 , xr6, xr14 //a6 a7 (h0) 3963*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr2 , xr6, xr15 //a6 a7 (h1) 3964*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr3 , xr11, xr15 //a8 a9 (h1) 3965*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr1 , xr6, xr14 3966*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr2 , xr6, xr15 3967*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr3 , xr11, xr15 3968*c0909341SAndroid Build Coastguard Worker xvadd.w xr17, xr17, xr1 //a2 a3 + a4 a5 + a6 a7 3969*c0909341SAndroid Build Coastguard Worker xvadd.w xr16, xr16, xr2 //a0 a1 + a2 a3 + a4 a5 + a6 a7 3970*c0909341SAndroid Build Coastguard Worker xvadd.w xr17, xr17, xr3 //a2 a3 + a4 a5 + a6 a7 + a8 a9 3971*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr17, xr16, 6 //a01 b01 a12 b12 a23 b23 a34 b34 c01 d01 c12 d12 c23 d23 c34 d34 3972*c0909341SAndroid Build Coastguard Worker xvpermi.d xr17, xr17, 0xd8 //a01 b01 a12 b12 c01 d01 c12 d12 a23 b23 a34 b34 c23 d23 c34 d34 3973*c0909341SAndroid Build Coastguard Worker xvshuf4i.w xr17, xr17, 0xd8 3974*c0909341SAndroid Build Coastguard Worker xvst xr17, a0, 0 3975*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 3976*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -4 3977*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv_w4_loop_lasx 3978*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 3979*c0909341SAndroid Build Coastguard Worker 3980*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_8w_lasx: 3981*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -4*8 3982*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 3983*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 3984*c0909341SAndroid Build Coastguard Worker fst.d f26, sp, 16 3985*c0909341SAndroid Build Coastguard Worker fst.d f27, sp, 24 3986*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf1 3987*c0909341SAndroid Build Coastguard Worker vld vr19, t1, 0 3988*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 3989*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 3990*c0909341SAndroid Build Coastguard Worker slli.w t7, a3, 1 // store offset 3991*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 3992*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr19, xr19 3993*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr20, xr19, 4 3994*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr21, xr19, 8 3995*c0909341SAndroid Build Coastguard Worker vbsrl.v vr23, vr22, 4 3996*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr22, xr22 //f0f1f2f3 3997*c0909341SAndroid Build Coastguard Worker xvreplve0.w xr23, xr23 //f4f5f6f7 3998*c0909341SAndroid Build Coastguard Worker xvreplve0.q xr8, xr8 3999*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr24, xr8, 0 4000*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr25, xr8, 1 4001*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr26, xr8, 2 4002*c0909341SAndroid Build Coastguard Worker xvrepl128vei.w xr27, xr8, 3 4003*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_8w_loop0_lasx: 4004*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 4005*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 4006*c0909341SAndroid Build Coastguard Worker xvldx xr2, a1, t2 4007*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4008*c0909341SAndroid Build Coastguard Worker xvld xr3, a1, 0 4009*c0909341SAndroid Build Coastguard Worker xvldx xr4, a1, a2 4010*c0909341SAndroid Build Coastguard Worker xvldx xr5, a1, t2 4011*c0909341SAndroid Build Coastguard Worker xvldx xr6, a1, t3 4012*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4013*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr3, 0x02 //0 3 4014*c0909341SAndroid Build Coastguard Worker xvpermi.q xr1, xr4, 0x02 //1 4 4015*c0909341SAndroid Build Coastguard Worker xvpermi.q xr2, xr5, 0x02 //2 5 4016*c0909341SAndroid Build Coastguard Worker xvpermi.q xr3, xr6, 0x02 //3 6 4017*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 //a0b0c0d0 e0f0g0h0 a3b3c3d3 e3f3g3h3 4018*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr1 //a1b1c1d1 e1f1g1h1 a4b4c4d4 e4f4g4h4 4019*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr2 //a2b2c2d2 e2f2g2h2 a5b5c5d5 e5f5g5h5 4020*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr3 //a3b3c3d3 e3f3g3h3 a6b6c6d6 e6f6g6h6 4021*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr0, 0xd8 4022*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr1, 0xd8 4023*c0909341SAndroid Build Coastguard Worker xvpermi.d xr2, xr2, 0xd8 4024*c0909341SAndroid Build Coastguard Worker xvpermi.d xr18, xr3, 0xd8 4025*c0909341SAndroid Build Coastguard Worker xvilvl.h xr12, xr1, xr0 //a0a1b0b1c0c1d0d1 e0e1f0f1g0g1h0h1 4026*c0909341SAndroid Build Coastguard Worker xvilvh.h xr13, xr1, xr0 //a3a4b3b4c3c4d3d4 e3e4f3f4g3g4h3h4 4027*c0909341SAndroid Build Coastguard Worker xvilvl.h xr14, xr2, xr1 //a1a2b1b2c1c2d1d2 e1e2f1f2g1g2h1h2 4028*c0909341SAndroid Build Coastguard Worker xvilvh.h xr15, xr2, xr1 //a4a5b4b5c4c5d4d5 e4e5f4f5g4g5h4h5 4029*c0909341SAndroid Build Coastguard Worker xvilvl.h xr16, xr18, xr2 //a2a3b2b3c2c3d2d3 e2e3f2f3g2g3h2h3 4030*c0909341SAndroid Build Coastguard Worker xvilvh.h xr17, xr18, xr2 //a5a6b5b6c5c6d5d6 e5e6f5f6g5g6h5h6 4031*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_8w_loop_lasx: 4032*c0909341SAndroid Build Coastguard Worker xvld xr0, a1, 0 4033*c0909341SAndroid Build Coastguard Worker xvldx xr1, a1, a2 4034*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4035*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 //7 8 4036*c0909341SAndroid Build Coastguard Worker PREP_HV_8W_LASX xr0 //a7b7c7d7e7f7g7h7 a8b8c8d8e8f8g8h8 4037*c0909341SAndroid Build Coastguard Worker xvpermi.q xr3, xr0, 0x03 //a6b6c6d6e6f6g6h6 a7b7c7d7e7f7g7h7 4038*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr3, 0xd8 //a6b6c6d6a7b7c7d7 e6f6g6h6e7f7g7h7 4039*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr0, 0xd8 //a7b7c7d7a8b8c8d8 e7f7g7h7e8f8g8h8 4040*c0909341SAndroid Build Coastguard Worker xvilvl.h xr18, xr1, xr3 //a6a7b6b7c6c7d6d7 e6e7f6f7g6g7h6h7 4041*c0909341SAndroid Build Coastguard Worker xvilvh.h xr2, xr1, xr3 //a7a8b7b8c7c8d7d8 e7e8f7f8g7g8h7h8 4042*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr3, xr0, 0 4043*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr4, xr12, xr24 //01 4044*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr5, xr14, xr24 //12 4045*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr6, xr16, xr25 //23 4046*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr7, xr13, xr25 //34 4047*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr8, xr15, xr26 //45 4048*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr9, xr17, xr26 //56 4049*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr10, xr18, xr27 //67 4050*c0909341SAndroid Build Coastguard Worker xvmulwev.w.h xr11, xr2, xr27 //78 4051*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr4, xr12, xr24 //01 4052*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr5, xr14, xr24 //12 4053*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr6, xr16, xr25 //23 4054*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr7, xr13, xr25 //34 4055*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr8, xr15, xr26 //45 4056*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr9, xr17, xr26 //56 4057*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr10, xr18, xr27 //67 4058*c0909341SAndroid Build Coastguard Worker xvmaddwod.w.h xr11, xr2, xr27 //78 4059*c0909341SAndroid Build Coastguard Worker xvadd.w xr4, xr4, xr6 4060*c0909341SAndroid Build Coastguard Worker xvadd.w xr5, xr5, xr7 4061*c0909341SAndroid Build Coastguard Worker xvadd.w xr4, xr4, xr8 4062*c0909341SAndroid Build Coastguard Worker xvadd.w xr5, xr5, xr9 4063*c0909341SAndroid Build Coastguard Worker xvadd.w xr4, xr4, xr10 4064*c0909341SAndroid Build Coastguard Worker xvadd.w xr5, xr5, xr11 4065*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr12, xr16, 0 //01 <-- 23 4066*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr14, xr13, 0 //12 <-- 34 4067*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr16, xr15, 0 //23 <-- 45 4068*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr13, xr17, 0 //34 <-- 56 4069*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr15, xr18, 0 //45 <-- 67 4070*c0909341SAndroid Build Coastguard Worker xvaddi.hu xr17, xr2, 0 //56 <-- 78 4071*c0909341SAndroid Build Coastguard Worker xvssrarni.h.w xr5, xr4, 6 4072*c0909341SAndroid Build Coastguard Worker xvpermi.d xr5, xr5, 0xd8 4073*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 4074*c0909341SAndroid Build Coastguard Worker xvpermi.q xr5, xr5, 0x11 4075*c0909341SAndroid Build Coastguard Worker vstx vr5, a0, t7 4076*c0909341SAndroid Build Coastguard Worker alsl.d a0, t7, a0, 1 4077*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4078*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv_8w_loop_lasx 4079*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 8 4080*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 8 4081*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 16 4082*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 16 4083*c0909341SAndroid Build Coastguard Worker addi.d a4, t5, 0 4084*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -8 4085*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()hv_8w_loop0_lasx 4086*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 4087*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 4088*c0909341SAndroid Build Coastguard Worker fld.d f26, sp, 16 4089*c0909341SAndroid Build Coastguard Worker fld.d f27, sp, 24 4090*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 4*8 4091*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 4092*c0909341SAndroid Build Coastguard Worker 4093*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_lasx: 4094*c0909341SAndroid Build Coastguard Worker srli.w a7, a7, 2 4095*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()v_idx_fv_lasx 4096*c0909341SAndroid Build Coastguard Worker andi a7, a7, 1 4097*c0909341SAndroid Build Coastguard Worker addi.w a7, a7, 3 4098*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_idx_fv_lasx: 4099*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 4100*c0909341SAndroid Build Coastguard Worker mul.w a7, a7, t5 4101*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 4102*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 4103*c0909341SAndroid Build Coastguard Worker add.w a7, a7, t5 4104*c0909341SAndroid Build Coastguard Worker add.d a7, t6, a7 //fv's offset 4105*c0909341SAndroid Build Coastguard Worker xvldrepl.d xr8, a7, 0 4106*c0909341SAndroid Build Coastguard Worker xvrepl128vei.h xr12, xr8, 0 4107*c0909341SAndroid Build Coastguard Worker xvrepl128vei.h xr13, xr8, 1 4108*c0909341SAndroid Build Coastguard Worker xvrepl128vei.h xr14, xr8, 2 4109*c0909341SAndroid Build Coastguard Worker xvrepl128vei.h xr15, xr8, 3 4110*c0909341SAndroid Build Coastguard Worker sub.d a1, a1, t3 4111*c0909341SAndroid Build Coastguard Worker beq a3, t0, .l_\lable\()v_4w_lasx 4112*c0909341SAndroid Build Coastguard Worker addi.w t0, t0, 4 4113*c0909341SAndroid Build Coastguard Worker beq a3, t0, .l_\lable\()v_8w_lasx 4114*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()v_16w_lasx 4115*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_4w_lasx: 4116*c0909341SAndroid Build Coastguard Worker la.local t6, subpel_h_shuf3 4117*c0909341SAndroid Build Coastguard Worker xvld xr11, t6, 0 4118*c0909341SAndroid Build Coastguard Worker fld.s f0, a1, 0 //a0b0c0d0 4119*c0909341SAndroid Build Coastguard Worker fldx.s f1, a1, a2 //a1b1c1d1 4120*c0909341SAndroid Build Coastguard Worker fldx.s f2, a1, t2 //a2b2c2d2 4121*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4122*c0909341SAndroid Build Coastguard Worker fld.s f3, a1, 0 //a3b3c3d3 4123*c0909341SAndroid Build Coastguard Worker fldx.s f4, a1, a2 //a4b4c4d4 4124*c0909341SAndroid Build Coastguard Worker fldx.s f5, a1, t2 //a5b5c5d5 4125*c0909341SAndroid Build Coastguard Worker fldx.s f6, a1, t3 //a6b6c6d6 4126*c0909341SAndroid Build Coastguard Worker vilvl.w vr0, vr1, vr0 //01 4127*c0909341SAndroid Build Coastguard Worker vilvl.w vr1, vr3, vr2 //23 4128*c0909341SAndroid Build Coastguard Worker vilvl.d vr0, vr1, vr0 //0123 4129*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr5, vr4 //45 4130*c0909341SAndroid Build Coastguard Worker vilvl.d vr1, vr2, vr1 //2345 4131*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 //0123 2345 4132*c0909341SAndroid Build Coastguard Worker xvbsrl.v xr1, xr0, 4 //123- 345- 4133*c0909341SAndroid Build Coastguard Worker xvpermi.q xr4, xr6, 0x02 4134*c0909341SAndroid Build Coastguard Worker xvextrins.w xr1, xr4, 0x30 //1234 3456 4135*c0909341SAndroid Build Coastguard Worker xvilvl.b xr2, xr1, xr0 //0112 2334 //a0a1b0b1c0c1d0d1 a1a2b1b2c1c2d1d2 a2a3b2b3c2c3d2d3 a3a4b3b4c3c4d3d4 4136*c0909341SAndroid Build Coastguard Worker xvilvh.b xr3, xr1, xr0 //2334 4556 //a2a3b2b3c2c3d2d3 a3a4b3b4c3c4d3d4 a4a5b4b5c4c5d4d5 a5a6b5b6c5c6d5d6 4137*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_4w_loop_lasx: 4138*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4139*c0909341SAndroid Build Coastguard Worker fld.s f0, a1, 0 //a7b7c7d7 4140*c0909341SAndroid Build Coastguard Worker fldx.s f1, a1, a2 //a8b8c8d8 4141*c0909341SAndroid Build Coastguard Worker fldx.s f4, a1, t2 //a9b9c9d9 4142*c0909341SAndroid Build Coastguard Worker fldx.s f5, a1, t3 //aabacada 4143*c0909341SAndroid Build Coastguard Worker vilvl.w vr7, vr0, vr6 //67 4144*c0909341SAndroid Build Coastguard Worker vilvl.w vr10, vr4, vr1 //89 4145*c0909341SAndroid Build Coastguard Worker vextrins.w vr7, vr1, 0x20//678- 4146*c0909341SAndroid Build Coastguard Worker vextrins.w vr10, vr5, 0x20//89a- 4147*c0909341SAndroid Build Coastguard Worker xvpermi.q xr7, xr10, 0x02//678- 89a- 4148*c0909341SAndroid Build Coastguard Worker xvshuf.b xr4, xr7, xr7, xr11 //67 78 89 9a //a6a7b6b7c6c7d6d7 a7a8b7b8c7c8d7d8 a8a9b8b9c8c9d8d9 a9aab9bac9cad9da 4149*c0909341SAndroid Build Coastguard Worker xvpermi.q xr7, xr3, 0x11 //4556 4150*c0909341SAndroid Build Coastguard Worker xvpermi.q xr7, xr4, 0x02 //45 56 67 78 //a4a5b4b5c4c5d4d5 a5a6b5b6c5c6d5d6 a6a7b6b7c6c7d6d7 a7a8b7b8c7c8d7d8 4151*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr16, xr2, xr12 4152*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr17, xr3, xr13 4153*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr18, xr7, xr14 4154*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr19, xr4, xr15 4155*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr16, xr2, xr12 4156*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr17, xr3, xr13 4157*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr18, xr7, xr14 4158*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr19, xr4, xr15 4159*c0909341SAndroid Build Coastguard Worker xvadd.h xr16, xr16, xr17 4160*c0909341SAndroid Build Coastguard Worker xvadd.h xr16, xr16, xr18 4161*c0909341SAndroid Build Coastguard Worker xvadd.h xr16, xr16, xr19 4162*c0909341SAndroid Build Coastguard Worker xvsrari.h xr16, xr16, 2 4163*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr2, xr7, 0 4164*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr3, xr4, 0 4165*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr6, xr5, 0 4166*c0909341SAndroid Build Coastguard Worker xvst xr16, a0, 0 4167*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 4168*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -4 4169*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()v_4w_loop_lasx 4170*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 4171*c0909341SAndroid Build Coastguard Worker 4172*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_8w_lasx: 4173*c0909341SAndroid Build Coastguard Worker fld.d f0, a1, 0 4174*c0909341SAndroid Build Coastguard Worker fldx.d f1, a1, a2 4175*c0909341SAndroid Build Coastguard Worker fldx.d f2, a1, t2 4176*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4177*c0909341SAndroid Build Coastguard Worker fld.d f3, a1, 0 4178*c0909341SAndroid Build Coastguard Worker fldx.d f4, a1, a2 4179*c0909341SAndroid Build Coastguard Worker fldx.d f5, a1, t2 4180*c0909341SAndroid Build Coastguard Worker fldx.d f6, a1, t3 4181*c0909341SAndroid Build Coastguard Worker xvpermi.q xr0, xr1, 0x02 4182*c0909341SAndroid Build Coastguard Worker xvpermi.q xr1, xr2, 0x02 4183*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr1, xr0 //01 12 4184*c0909341SAndroid Build Coastguard Worker xvpermi.q xr2, xr3, 0x02 4185*c0909341SAndroid Build Coastguard Worker xvpermi.q xr3, xr4, 0x02 4186*c0909341SAndroid Build Coastguard Worker xvilvl.b xr2, xr3, xr2 //23 34 4187*c0909341SAndroid Build Coastguard Worker xvpermi.q xr4, xr5, 0x02 4188*c0909341SAndroid Build Coastguard Worker xvpermi.q xr5, xr6, 0x02 4189*c0909341SAndroid Build Coastguard Worker xvilvl.b xr4, xr5, xr4 //45 56 4190*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_8w_loop_lasx: 4191*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4192*c0909341SAndroid Build Coastguard Worker fld.d f7, a1, 0 //7 4193*c0909341SAndroid Build Coastguard Worker fldx.d f10, a1, a2 //8 4194*c0909341SAndroid Build Coastguard Worker fldx.d f11, a1, t2 //9 4195*c0909341SAndroid Build Coastguard Worker fldx.d f18, a1, t3 //a 4196*c0909341SAndroid Build Coastguard Worker xvpermi.q xr6, xr7, 0x02 4197*c0909341SAndroid Build Coastguard Worker xvpermi.q xr7, xr10, 0x02 4198*c0909341SAndroid Build Coastguard Worker xvilvl.b xr6, xr7, xr6 //67 78 4199*c0909341SAndroid Build Coastguard Worker xvpermi.q xr10, xr11, 0x02 4200*c0909341SAndroid Build Coastguard Worker xvpermi.q xr11, xr18, 0x02 4201*c0909341SAndroid Build Coastguard Worker xvilvl.b xr10, xr11, xr10 //89 9a 4202*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr1, xr0, xr12 4203*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr3, xr2, xr13 4204*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr5, xr4, xr14 4205*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr7, xr6, xr15 4206*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr9, xr2, xr12 4207*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr11, xr4, xr13 4208*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr16, xr6, xr14 4209*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr17, xr10, xr15 4210*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr1, xr0, xr12 4211*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr3, xr2, xr13 4212*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr5, xr4, xr14 4213*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr7, xr6, xr15 4214*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr9, xr2, xr12 4215*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr11, xr4, xr13 4216*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr16, xr6, xr14 4217*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr17, xr10, xr15 4218*c0909341SAndroid Build Coastguard Worker xvadd.h xr1, xr1, xr3 4219*c0909341SAndroid Build Coastguard Worker xvadd.h xr1, xr1, xr5 4220*c0909341SAndroid Build Coastguard Worker xvadd.h xr1, xr1, xr7 4221*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr11 4222*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr16 4223*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr17 4224*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr0, xr4, 0 4225*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr2, xr6, 0 4226*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr4, xr10, 0 4227*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr6, xr18, 0 4228*c0909341SAndroid Build Coastguard Worker xvsrari.h xr1, xr1, 2 4229*c0909341SAndroid Build Coastguard Worker xvsrari.h xr9, xr9, 2 4230*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 0 4231*c0909341SAndroid Build Coastguard Worker xvst xr9, a0, 32 4232*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 64 4233*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -4 4234*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()v_8w_loop_lasx 4235*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lasx 4236*c0909341SAndroid Build Coastguard Worker 4237*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_16w_lasx: 4238*c0909341SAndroid Build Coastguard Worker addi.d t0, a0, 0 //dst 4239*c0909341SAndroid Build Coastguard Worker addi.d t5, a1, 0 //src 4240*c0909341SAndroid Build Coastguard Worker slli.w t7, a3, 1 //w 4241*c0909341SAndroid Build Coastguard Worker addi.d t8, a4, 0 //h 4242*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_16w_loop0_lasx: 4243*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4244*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4245*c0909341SAndroid Build Coastguard Worker vldx vr2, a1, t2 4246*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4247*c0909341SAndroid Build Coastguard Worker vld vr3, a1, 0 4248*c0909341SAndroid Build Coastguard Worker vldx vr4, a1, a2 4249*c0909341SAndroid Build Coastguard Worker vldx vr5, a1, t2 4250*c0909341SAndroid Build Coastguard Worker vldx vr6, a1, t3 4251*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4252*c0909341SAndroid Build Coastguard Worker xvpermi.d xr0, xr0, 0xd8 4253*c0909341SAndroid Build Coastguard Worker xvpermi.d xr1, xr1, 0xd8 4254*c0909341SAndroid Build Coastguard Worker xvpermi.d xr2, xr2, 0xd8 4255*c0909341SAndroid Build Coastguard Worker xvpermi.d xr3, xr3, 0xd8 4256*c0909341SAndroid Build Coastguard Worker xvpermi.d xr4, xr4, 0xd8 4257*c0909341SAndroid Build Coastguard Worker xvpermi.d xr5, xr5, 0xd8 4258*c0909341SAndroid Build Coastguard Worker xvpermi.d xr6, xr6, 0xd8 4259*c0909341SAndroid Build Coastguard Worker xvilvl.b xr0, xr1, xr0 //01 4260*c0909341SAndroid Build Coastguard Worker xvilvl.b xr1, xr2, xr1 //12 4261*c0909341SAndroid Build Coastguard Worker xvilvl.b xr2, xr3, xr2 //23 4262*c0909341SAndroid Build Coastguard Worker xvilvl.b xr3, xr4, xr3 //34 4263*c0909341SAndroid Build Coastguard Worker xvilvl.b xr4, xr5, xr4 //45 4264*c0909341SAndroid Build Coastguard Worker xvilvl.b xr5, xr6, xr5 //56 4265*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_16w_loop_lasx: 4266*c0909341SAndroid Build Coastguard Worker vld vr7, a1, 0 //7 4267*c0909341SAndroid Build Coastguard Worker vldx vr10, a1, a2 //8 4268*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4269*c0909341SAndroid Build Coastguard Worker xvpermi.d xr7, xr7, 0xd8 4270*c0909341SAndroid Build Coastguard Worker xvpermi.d xr10, xr10, 0xd8 4271*c0909341SAndroid Build Coastguard Worker xvilvl.b xr6, xr7, xr6 //67 4272*c0909341SAndroid Build Coastguard Worker xvilvl.b xr7, xr10, xr7 //78 4273*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr9, xr0, xr12 4274*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr11, xr2, xr13 4275*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr16, xr4, xr14 4276*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr17, xr6, xr15 4277*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr18, xr1, xr12 4278*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr19, xr3, xr13 4279*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr20, xr5, xr14 4280*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu.b xr21, xr7, xr15 4281*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr9, xr0, xr12 4282*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr11, xr2, xr13 4283*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr16, xr4, xr14 4284*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr17, xr6, xr15 4285*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr18, xr1, xr12 4286*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr19, xr3, xr13 4287*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr20, xr5, xr14 4288*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu.b xr21, xr7, xr15 4289*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr11 4290*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr16 4291*c0909341SAndroid Build Coastguard Worker xvadd.h xr9, xr9, xr17 4292*c0909341SAndroid Build Coastguard Worker xvadd.h xr11, xr18, xr19 4293*c0909341SAndroid Build Coastguard Worker xvadd.h xr11, xr11, xr20 4294*c0909341SAndroid Build Coastguard Worker xvadd.h xr11, xr11, xr21 4295*c0909341SAndroid Build Coastguard Worker xvsrari.h xr9, xr9, 2 4296*c0909341SAndroid Build Coastguard Worker xvsrari.h xr11, xr11, 2 4297*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr0, xr2, 0 4298*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr1, xr3, 0 4299*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr2, xr4, 0 4300*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr3, xr5, 0 4301*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr4, xr6, 0 4302*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr5, xr7, 0 4303*c0909341SAndroid Build Coastguard Worker xvaddi.bu xr6, xr10, 0 4304*c0909341SAndroid Build Coastguard Worker xvst xr9, a0, 0 4305*c0909341SAndroid Build Coastguard Worker xvstx xr11, a0, t7 4306*c0909341SAndroid Build Coastguard Worker alsl.d a0, t7, a0, 1 4307*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4308*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()v_16w_loop_lasx 4309*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -16 4310*c0909341SAndroid Build Coastguard Worker addi.d a0, t0, 32 4311*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 32 4312*c0909341SAndroid Build Coastguard Worker addi.d a1, t5, 16 4313*c0909341SAndroid Build Coastguard Worker addi.d t5, t5, 16 4314*c0909341SAndroid Build Coastguard Worker addi.d a4, t8, 0 4315*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()v_16w_loop0_lasx 4316*c0909341SAndroid Build Coastguard Worker.l_\lable\()end_pre_8tap_lasx: 4317*c0909341SAndroid Build Coastguard Worker.endm 4318*c0909341SAndroid Build Coastguard Worker 4319*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_8bpc_lasx 4320*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 0 4321*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 0 4322*c0909341SAndroid Build Coastguard Workerendfunc 4323*c0909341SAndroid Build Coastguard Worker 4324*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_regular_8bpc_lasx 4325*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 1 4326*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 1 4327*c0909341SAndroid Build Coastguard Workerendfunc 4328*c0909341SAndroid Build Coastguard Worker 4329*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_regular_8bpc_lasx 4330*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 2 4331*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 2 4332*c0909341SAndroid Build Coastguard Workerendfunc 4333*c0909341SAndroid Build Coastguard Worker 4334*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_smooth_8bpc_lasx 4335*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 4 4336*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 4 4337*c0909341SAndroid Build Coastguard Workerendfunc 4338*c0909341SAndroid Build Coastguard Worker 4339*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_8bpc_lasx 4340*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 5 4341*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 5 4342*c0909341SAndroid Build Coastguard Workerendfunc 4343*c0909341SAndroid Build Coastguard Worker 4344*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_smooth_8bpc_lasx 4345*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 6 4346*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 6 4347*c0909341SAndroid Build Coastguard Workerendfunc 4348*c0909341SAndroid Build Coastguard Worker 4349*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_sharp_8bpc_lasx 4350*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 8 4351*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 8 4352*c0909341SAndroid Build Coastguard Workerendfunc 4353*c0909341SAndroid Build Coastguard Worker 4354*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_sharp_8bpc_lasx 4355*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 9 4356*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 9 4357*c0909341SAndroid Build Coastguard Workerendfunc 4358*c0909341SAndroid Build Coastguard Worker 4359*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_8bpc_lasx 4360*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 10 4361*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LASX 10 4362*c0909341SAndroid Build Coastguard Workerendfunc 4363*c0909341SAndroid Build Coastguard Worker 4364*c0909341SAndroid Build Coastguard Worker.macro PREP_8TAP_8BPC_LSX lable 4365*c0909341SAndroid Build Coastguard Worker li.w t0, 4 4366*c0909341SAndroid Build Coastguard Worker la.local t6, dav1d_mc_subpel_filters 4367*c0909341SAndroid Build Coastguard Worker la.local t7, shufb1 4368*c0909341SAndroid Build Coastguard Worker vld vr23, t7, 0 4369*c0909341SAndroid Build Coastguard Worker slli.d t2, a2, 1 //src_stride*2 4370*c0909341SAndroid Build Coastguard Worker add.d t3, t2, a2 //src_stride*3 4371*c0909341SAndroid Build Coastguard Worker slli.d t4, t2, 1 4372*c0909341SAndroid Build Coastguard Worker 4373*c0909341SAndroid Build Coastguard Worker bnez a5, .l_\lable\()h_lsx //mx 4374*c0909341SAndroid Build Coastguard Worker bnez a6, .l_\lable\()v_lsx 4375*c0909341SAndroid Build Coastguard Worker 4376*c0909341SAndroid Build Coastguard Worker clz.w t1, a3 4377*c0909341SAndroid Build Coastguard Worker li.w t5, 24 4378*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 4379*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()prep_hv0_jtable_lsx 4380*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 1 4381*c0909341SAndroid Build Coastguard Worker ld.h t8, t1, 0 4382*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t8 4383*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 4384*c0909341SAndroid Build Coastguard Worker .align 3 4385*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_hv0_jtable_lsx: 4386*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_128w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4387*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_64w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4388*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_32w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4389*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_16w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4390*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_8w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4391*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()hv0_4w_lsx - .l_\lable\()prep_hv0_jtable_lsx 4392*c0909341SAndroid Build Coastguard Worker 4393*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_4w_lsx: 4394*c0909341SAndroid Build Coastguard Worker fld.s f0, a1, 0 4395*c0909341SAndroid Build Coastguard Worker fldx.s f1, a1, a2 4396*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4397*c0909341SAndroid Build Coastguard Worker vilvl.w vr0, vr1, vr0 4398*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 4 4399*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 4400*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 4401*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4402*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_4w_lsx 4403*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4404*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_8w_lsx: 4405*c0909341SAndroid Build Coastguard Worker fld.d f0, a1, 0 4406*c0909341SAndroid Build Coastguard Worker fldx.d f1, a1, a2 4407*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4408*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 4 4409*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 4 4410*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 4411*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 4412*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 4413*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4414*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_8w_lsx 4415*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4416*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_16w_lsx: 4417*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4418*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4419*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4420*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr2, vr0, 4 4421*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr1, 4 4422*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr3, vr0 4423*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr5, vr1 4424*c0909341SAndroid Build Coastguard Worker vslli.h vr3, vr3, 4 4425*c0909341SAndroid Build Coastguard Worker vslli.h vr5, vr5, 4 4426*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 4427*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 16 4428*c0909341SAndroid Build Coastguard Worker vst vr4, a0, 32 4429*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 48 4430*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 64 4431*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4432*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_16w_lsx 4433*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4434*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_32w_lsx: 4435*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_64w_lsx: 4436*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_128w_lsx: 4437*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 4438*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 4439*c0909341SAndroid Build Coastguard Worker srli.w t7, a3, 4 4440*c0909341SAndroid Build Coastguard Worker slli.w t7, t7, 5 4441*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 4442*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv0_16_loop_lsx: 4443*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4444*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4445*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4446*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr2, vr0, 4 4447*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr1, 4 4448*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr0, vr0 4449*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr1, vr1 4450*c0909341SAndroid Build Coastguard Worker vslli.h vr0, vr0, 4 4451*c0909341SAndroid Build Coastguard Worker vslli.h vr1, vr1, 4 4452*c0909341SAndroid Build Coastguard Worker vst vr2, a0, 0 4453*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 16 4454*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t7 4455*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 0 4456*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 4457*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t7 4458*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4459*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv0_16_loop_lsx 4460*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 16 4461*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 16 4462*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 32 4463*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 32 4464*c0909341SAndroid Build Coastguard Worker addi.d a4, t5, 0 4465*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -16 4466*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()hv0_16_loop_lsx 4467*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4468*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_lsx: 4469*c0909341SAndroid Build Coastguard Worker bnez a6, .l_\lable\()hv_lsx //if(fh) && if (fv) 4470*c0909341SAndroid Build Coastguard Worker 4471*c0909341SAndroid Build Coastguard Worker andi t1, a7, 3 4472*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()h_idx_fh_lsx 4473*c0909341SAndroid Build Coastguard Worker andi t1, a7, 1 4474*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 4475*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_idx_fh_lsx: 4476*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 4477*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 4478*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, -1 4479*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 4480*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 4481*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fh's offset 4482*c0909341SAndroid Build Coastguard Worker vldrepl.d vr23, t1, 0 4483*c0909341SAndroid Build Coastguard Worker 4484*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, -3 4485*c0909341SAndroid Build Coastguard Worker clz.w t1, a3 4486*c0909341SAndroid Build Coastguard Worker li.w t5, 24 4487*c0909341SAndroid Build Coastguard Worker sub.w t1, t1, t5 4488*c0909341SAndroid Build Coastguard Worker la.local t5, .l_\lable\()prep_h_jtable_lsx 4489*c0909341SAndroid Build Coastguard Worker alsl.d t1, t1, t5, 1 4490*c0909341SAndroid Build Coastguard Worker ld.h t8, t1, 0 4491*c0909341SAndroid Build Coastguard Worker add.d t5, t5, t8 4492*c0909341SAndroid Build Coastguard Worker jirl $r0, t5, 0 4493*c0909341SAndroid Build Coastguard Worker 4494*c0909341SAndroid Build Coastguard Worker .align 3 4495*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_h_jtable_lsx: 4496*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_128w_lsx - .l_\lable\()prep_h_jtable_lsx 4497*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_64w_lsx - .l_\lable\()prep_h_jtable_lsx 4498*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_32w_lsx - .l_\lable\()prep_h_jtable_lsx 4499*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_16w_lsx - .l_\lable\()prep_h_jtable_lsx 4500*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_8w_lsx - .l_\lable\()prep_h_jtable_lsx 4501*c0909341SAndroid Build Coastguard Worker .hword .l_\lable\()h_4w_lsx - .l_\lable\()prep_h_jtable_lsx 4502*c0909341SAndroid Build Coastguard Worker 4503*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_4w_lsx: 4504*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, 2 4505*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 4506*c0909341SAndroid Build Coastguard Worker vld vr7, t7, 0 4507*c0909341SAndroid Build Coastguard Worker vbsrl.v vr23, vr23, 2 4508*c0909341SAndroid Build Coastguard Worker vreplvei.w vr23, vr23, 0 4509*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_4w_loop_lsx: 4510*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4511*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4512*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4513*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr0, vr0, vr7 4514*c0909341SAndroid Build Coastguard Worker vshuf.b vr1, vr1, vr1, vr7 4515*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr2, vr0, vr23 4516*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr3, vr1, vr23 4517*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr2, vr0, vr23 4518*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr3, vr1, vr23 4519*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr0, vr2, vr2 4520*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr1, vr3, vr3 4521*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr1, vr0, 2 4522*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 4523*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 4524*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -2 4525*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_4w_loop_lsx 4526*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4527*c0909341SAndroid Build Coastguard Worker 4528*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_8w_lsx: 4529*c0909341SAndroid Build Coastguard Worker vreplvei.w vr22, vr23, 0 //fh 4530*c0909341SAndroid Build Coastguard Worker vreplvei.w vr23, vr23, 1 4531*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 4532*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 4533*c0909341SAndroid Build Coastguard Worker vaddi.bu vr7, vr6, 4 4534*c0909341SAndroid Build Coastguard Worker vaddi.bu vr8, vr6, 8 4535*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_8w_loop_lsx: 4536*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4537*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4538*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4539*c0909341SAndroid Build Coastguard Worker PREP_H_8W vr0 4540*c0909341SAndroid Build Coastguard Worker PREP_H_8W vr1 4541*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 4542*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 4543*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 32 4544*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4545*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()h_8w_loop_lsx 4546*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4547*c0909341SAndroid Build Coastguard Worker 4548*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16w_lsx: 4549*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_32w_lsx: 4550*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_64w_lsx: 4551*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_128w_lsx: 4552*c0909341SAndroid Build Coastguard Worker vreplvei.w vr22, vr23, 0 //fh 4553*c0909341SAndroid Build Coastguard Worker vreplvei.w vr23, vr23, 1 4554*c0909341SAndroid Build Coastguard Worker la.local t7, subpel_h_shuf1 4555*c0909341SAndroid Build Coastguard Worker vld vr6, t7, 0 4556*c0909341SAndroid Build Coastguard Worker vaddi.bu vr7, vr6, 4 4557*c0909341SAndroid Build Coastguard Worker vaddi.bu vr8, vr6, 8 4558*c0909341SAndroid Build Coastguard Worker srli.w t7, a3, 4 4559*c0909341SAndroid Build Coastguard Worker slli.w t6, t7, 5 4560*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16w_loop0_lsx: 4561*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 //src 4562*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 //h 4563*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 4564*c0909341SAndroid Build Coastguard Worker.l_\lable\()h_16w_loop_lsx: 4565*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4566*c0909341SAndroid Build Coastguard Worker vld vr1, a1, 8 4567*c0909341SAndroid Build Coastguard Worker add.d a1, a1, a2 4568*c0909341SAndroid Build Coastguard Worker PREP_H_8W vr0 4569*c0909341SAndroid Build Coastguard Worker PREP_H_8W vr1 4570*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 0 4571*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 16 4572*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t6 4573*c0909341SAndroid Build Coastguard Worker addi.d t5, t5, -1 4574*c0909341SAndroid Build Coastguard Worker bnez t5, .l_\lable\()h_16w_loop_lsx 4575*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 16 4576*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 32 4577*c0909341SAndroid Build Coastguard Worker addi.w t7, t7, -1 4578*c0909341SAndroid Build Coastguard Worker bnez t7, .l_\lable\()h_16w_loop0_lsx 4579*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4580*c0909341SAndroid Build Coastguard Worker 4581*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_lsx: 4582*c0909341SAndroid Build Coastguard Worker andi t1, a7, 3 4583*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()hv_idx_fh_lsx 4584*c0909341SAndroid Build Coastguard Worker andi t1, a7, 1 4585*c0909341SAndroid Build Coastguard Worker addi.w t1, t1, 3 4586*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_idx_fh_lsx: 4587*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 4588*c0909341SAndroid Build Coastguard Worker mul.w t1, t1, t5 4589*c0909341SAndroid Build Coastguard Worker addi.w t5, a5, -1 4590*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 4591*c0909341SAndroid Build Coastguard Worker add.w t1, t1, t5 4592*c0909341SAndroid Build Coastguard Worker add.d t1, t6, t1 //fh's offset 4593*c0909341SAndroid Build Coastguard Worker vldrepl.d vr8, t1, 0 4594*c0909341SAndroid Build Coastguard Worker srli.w a7, a7, 2 4595*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()hv_idx_fv_lsx 4596*c0909341SAndroid Build Coastguard Worker andi a7, a7, 1 4597*c0909341SAndroid Build Coastguard Worker addi.w a7, a7, 3 4598*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_idx_fv_lsx: 4599*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 4600*c0909341SAndroid Build Coastguard Worker mul.w a7, a7, t5 4601*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 4602*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 4603*c0909341SAndroid Build Coastguard Worker add.w a7, a7, t5 4604*c0909341SAndroid Build Coastguard Worker add.d a7, t6, a7 //fv's offset 4605*c0909341SAndroid Build Coastguard Worker vldrepl.d vr9, a7, 0 4606*c0909341SAndroid Build Coastguard Worker vsllwil.h.b vr9, vr9, 0 4607*c0909341SAndroid Build Coastguard Worker 4608*c0909341SAndroid Build Coastguard Worker sub.d a1, a1, t3 4609*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, -3 4610*c0909341SAndroid Build Coastguard Worker beq a3, t0, .l_\lable\()hv_4w_lsx 4611*c0909341SAndroid Build Coastguard Worker b .l_\lable\()hv_8w_lsx 4612*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_4w_lsx: 4613*c0909341SAndroid Build Coastguard Worker addi.d a1, a1, 2 //ignore leading 0s 4614*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4615*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4616*c0909341SAndroid Build Coastguard Worker vldx vr2, a1, t2 4617*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4618*c0909341SAndroid Build Coastguard Worker vld vr3, a1, 0 4619*c0909341SAndroid Build Coastguard Worker vldx vr4, a1, a2 4620*c0909341SAndroid Build Coastguard Worker vldx vr5, a1, t2 4621*c0909341SAndroid Build Coastguard Worker vldx vr6, a1, t3 4622*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4623*c0909341SAndroid Build Coastguard Worker 4624*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf1 4625*c0909341SAndroid Build Coastguard Worker vld vr7, t1, 0 4626*c0909341SAndroid Build Coastguard Worker vbsrl.v vr8, vr8, 2 4627*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 4628*c0909341SAndroid Build Coastguard Worker 4629*c0909341SAndroid Build Coastguard Worker //fv 4630*c0909341SAndroid Build Coastguard Worker vreplvei.w vr17, vr9, 0 4631*c0909341SAndroid Build Coastguard Worker vreplvei.w vr18, vr9, 1 4632*c0909341SAndroid Build Coastguard Worker vreplvei.w vr19, vr9, 2 4633*c0909341SAndroid Build Coastguard Worker vreplvei.w vr20, vr9, 3 4634*c0909341SAndroid Build Coastguard Worker 4635*c0909341SAndroid Build Coastguard Worker //DAV1D_FILTER_8TAP_RND 4636*c0909341SAndroid Build Coastguard Worker vshuf.b vr0, vr0, vr0, vr7 4637*c0909341SAndroid Build Coastguard Worker vshuf.b vr1, vr1, vr1, vr7 4638*c0909341SAndroid Build Coastguard Worker vshuf.b vr2, vr2, vr2, vr7 4639*c0909341SAndroid Build Coastguard Worker vshuf.b vr3, vr3, vr3, vr7 4640*c0909341SAndroid Build Coastguard Worker vshuf.b vr4, vr4, vr4, vr7 4641*c0909341SAndroid Build Coastguard Worker vshuf.b vr5, vr5, vr5, vr7 4642*c0909341SAndroid Build Coastguard Worker vshuf.b vr6, vr6, vr6, vr7 4643*c0909341SAndroid Build Coastguard Worker 4644*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr10, vr0, vr8 4645*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr11, vr1, vr8 4646*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr2, vr8 4647*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr3, vr8 4648*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr4, vr8 4649*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr5, vr8 4650*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr16, vr6, vr8 4651*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr10, vr0, vr8 4652*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr11, vr1, vr8 4653*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr2, vr8 4654*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr3, vr8 4655*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr4, vr8 4656*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr5, vr8 4657*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr16, vr6, vr8 4658*c0909341SAndroid Build Coastguard Worker 4659*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr10, vr10, vr10 4660*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr11, vr11, vr11 4661*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 4662*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr13, vr13, vr13 4663*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr14, vr14, vr14 4664*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr15, vr15, vr15 4665*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr16, vr16, vr16 4666*c0909341SAndroid Build Coastguard Worker 4667*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr10, vr10, 2 //h0 4668*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr11, vr11, 2 //h1 4669*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr12, vr12, 2 //h2 4670*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr13, vr13, 2 //h3 4671*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr14, vr14, 2 //h4 4672*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr15, vr15, 2 //h5 4673*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr16, vr16, 2 //h6 4674*c0909341SAndroid Build Coastguard Worker 4675*c0909341SAndroid Build Coastguard Worker //h0 4676*c0909341SAndroid Build Coastguard Worker vilvl.h vr0, vr11, vr10 //01 4677*c0909341SAndroid Build Coastguard Worker vilvl.h vr1, vr13, vr12 //23 4678*c0909341SAndroid Build Coastguard Worker vilvl.h vr2, vr15, vr14 //45 4679*c0909341SAndroid Build Coastguard Worker //h1 4680*c0909341SAndroid Build Coastguard Worker vilvl.h vr4, vr12, vr11 //12 4681*c0909341SAndroid Build Coastguard Worker vilvl.h vr5, vr14, vr13 //34 4682*c0909341SAndroid Build Coastguard Worker vilvl.h vr6, vr16, vr15 //56 4683*c0909341SAndroid Build Coastguard Worker 4684*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_w4_loop_lsx: 4685*c0909341SAndroid Build Coastguard Worker vld vr9, a1, 0 4686*c0909341SAndroid Build Coastguard Worker vldx vr10, a1, a2 4687*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4688*c0909341SAndroid Build Coastguard Worker 4689*c0909341SAndroid Build Coastguard Worker //DAV1D_FILTER_8TAP_CLIP 4690*c0909341SAndroid Build Coastguard Worker vshuf.b vr9, vr9, vr9, vr7 4691*c0909341SAndroid Build Coastguard Worker vshuf.b vr10, vr10, vr10, vr7 4692*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr11, vr9, vr8 4693*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr10, vr8 4694*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr11, vr9, vr8 4695*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr10, vr8 4696*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr11, vr11, vr11 4697*c0909341SAndroid Build Coastguard Worker vhaddw.w.h vr12, vr12, vr12 4698*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr11, vr11, 2 //7h 4699*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr12, vr12, 2 //h8 4700*c0909341SAndroid Build Coastguard Worker vilvl.h vr3, vr11, vr16 //67 4701*c0909341SAndroid Build Coastguard Worker vilvl.h vr13, vr12, vr11 //78 4702*c0909341SAndroid Build Coastguard Worker 4703*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr9, vr0, vr17 4704*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr1, vr18 4705*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr2, vr19 4706*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr3, vr20 4707*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr0, vr17 4708*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr10, vr1, vr18 4709*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr2, vr19 4710*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr3, vr20 4711*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr9, vr10 4712*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr16, vr14 4713*c0909341SAndroid Build Coastguard Worker vadd.w vr16, vr16, vr15 4714*c0909341SAndroid Build Coastguard Worker 4715*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr9, vr4, vr17 4716*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr10, vr5, vr18 4717*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr6, vr19 4718*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr13, vr20 4719*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr9, vr4, vr17 4720*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr10, vr5, vr18 4721*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr6, vr19 4722*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr13, vr20 4723*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr9, vr10 4724*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr21, vr14 4725*c0909341SAndroid Build Coastguard Worker vadd.w vr21, vr21, vr15 4726*c0909341SAndroid Build Coastguard Worker 4727*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr21, vr16, 6 4728*c0909341SAndroid Build Coastguard Worker //cache 4729*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 4730*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 4731*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr3, 0 4732*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr5, 0 4733*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr6, 0 4734*c0909341SAndroid Build Coastguard Worker vaddi.hu vr6, vr13, 0 4735*c0909341SAndroid Build Coastguard Worker vaddi.hu vr16, vr12, 0 4736*c0909341SAndroid Build Coastguard Worker 4737*c0909341SAndroid Build Coastguard Worker vst vr21, a0, 0 4738*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 4739*c0909341SAndroid Build Coastguard Worker addi.d a4, a4, -2 4740*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()hv_w4_loop_lsx 4741*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4742*c0909341SAndroid Build Coastguard Worker 4743*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_8w_lsx: 4744*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_16w_lsx: 4745*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_32w_lsx: 4746*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_64w_lsx: 4747*c0909341SAndroid Build Coastguard Worker.l_\lable\()hv_128w_lsx: 4748*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, -8*8 4749*c0909341SAndroid Build Coastguard Worker fst.d f24, sp, 0 4750*c0909341SAndroid Build Coastguard Worker fst.d f25, sp, 8 4751*c0909341SAndroid Build Coastguard Worker fst.d f26, sp, 16 4752*c0909341SAndroid Build Coastguard Worker fst.d f27, sp, 24 4753*c0909341SAndroid Build Coastguard Worker fst.d f28, sp, 32 4754*c0909341SAndroid Build Coastguard Worker fst.d f29, sp, 40 4755*c0909341SAndroid Build Coastguard Worker fst.d f30, sp, 48 4756*c0909341SAndroid Build Coastguard Worker fst.d f31, sp, 56 4757*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 //src 4758*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 //h 4759*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 //dst 4760*c0909341SAndroid Build Coastguard Worker slli.w t6, a3, 1 4761*c0909341SAndroid Build Coastguard Worker la.local t1, subpel_h_shuf1 4762*c0909341SAndroid Build Coastguard Worker vld vr7, t1, 0 4763*c0909341SAndroid Build Coastguard Worker vaddi.bu vr11, vr7, 4 4764*c0909341SAndroid Build Coastguard Worker vaddi.bu vr12, vr7, 8 4765*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr8, 1 4766*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 4767*c0909341SAndroid Build Coastguard Worker vreplvei.w vr20, vr9, 1 4768*c0909341SAndroid Build Coastguard Worker vreplvei.w vr21, vr9, 2 4769*c0909341SAndroid Build Coastguard Worker vreplvei.w vr22, vr9, 3 4770*c0909341SAndroid Build Coastguard Worker vreplvei.w vr9, vr9, 0 4771*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_hv_8w_loop0_lsx: 4772*c0909341SAndroid Build Coastguard Worker vld vr0, a1, 0 4773*c0909341SAndroid Build Coastguard Worker vldx vr1, a1, a2 4774*c0909341SAndroid Build Coastguard Worker vldx vr2, a1, t2 4775*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4776*c0909341SAndroid Build Coastguard Worker vld vr3, a1, 0 4777*c0909341SAndroid Build Coastguard Worker vldx vr4, a1, a2 4778*c0909341SAndroid Build Coastguard Worker vldx vr5, a1, t2 4779*c0909341SAndroid Build Coastguard Worker vldx vr6, a1, t3 4780*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4781*c0909341SAndroid Build Coastguard Worker 4782*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr0 //h0 4783*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr1 //h1 4784*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr2 //h2 4785*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr3 //h3 4786*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr4 //h4 4787*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr5 //h5 4788*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr6 //h6 4789*c0909341SAndroid Build Coastguard Worker 4790*c0909341SAndroid Build Coastguard Worker //h0' low part 4791*c0909341SAndroid Build Coastguard Worker vilvl.h vr23, vr1, vr0 //01 4792*c0909341SAndroid Build Coastguard Worker vilvl.h vr24, vr3, vr2 //23 4793*c0909341SAndroid Build Coastguard Worker vilvl.h vr25, vr5, vr4 //45 4794*c0909341SAndroid Build Coastguard Worker //h0' high part 4795*c0909341SAndroid Build Coastguard Worker vilvh.h vr26, vr1, vr0 //01 4796*c0909341SAndroid Build Coastguard Worker vilvh.h vr27, vr3, vr2 //23 4797*c0909341SAndroid Build Coastguard Worker vilvh.h vr28, vr5, vr4 //45 4798*c0909341SAndroid Build Coastguard Worker 4799*c0909341SAndroid Build Coastguard Worker //h1' low part 4800*c0909341SAndroid Build Coastguard Worker vilvl.h vr29, vr2, vr1 //12 4801*c0909341SAndroid Build Coastguard Worker vilvl.h vr30, vr4, vr3 //34 4802*c0909341SAndroid Build Coastguard Worker vilvl.h vr31, vr6, vr5 //56 4803*c0909341SAndroid Build Coastguard Worker //h1' high part 4804*c0909341SAndroid Build Coastguard Worker vilvh.h vr0, vr2, vr1 //12 4805*c0909341SAndroid Build Coastguard Worker vilvh.h vr1, vr4, vr3 //34 4806*c0909341SAndroid Build Coastguard Worker vilvh.h vr2, vr6, vr5 //56 4807*c0909341SAndroid Build Coastguard Worker 4808*c0909341SAndroid Build Coastguard Worker.l_\lable\()prep_hv_8w_loop_lsx: 4809*c0909341SAndroid Build Coastguard Worker vld vr3, a1, 0 4810*c0909341SAndroid Build Coastguard Worker vldx vr4, a1, a2 4811*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4812*c0909341SAndroid Build Coastguard Worker 4813*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr3 //h7 4814*c0909341SAndroid Build Coastguard Worker FILTER_8TAP_8W vr4 //h8 4815*c0909341SAndroid Build Coastguard Worker 4816*c0909341SAndroid Build Coastguard Worker //h0' low part 4817*c0909341SAndroid Build Coastguard Worker vilvl.h vr16, vr3, vr6 //67 ~low 4818*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr13, vr23, vr9 4819*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr24, vr20 4820*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr25, vr21 4821*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr17, vr16, vr22 4822*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr13, vr23, vr9 4823*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr24, vr20 4824*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr25, vr21 4825*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr16, vr22 4826*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr14 4827*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr15 4828*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr17 4829*c0909341SAndroid Build Coastguard Worker //cache 4830*c0909341SAndroid Build Coastguard Worker vaddi.hu vr23, vr24, 0 4831*c0909341SAndroid Build Coastguard Worker vaddi.hu vr24, vr25, 0 4832*c0909341SAndroid Build Coastguard Worker vaddi.hu vr25, vr16, 0 4833*c0909341SAndroid Build Coastguard Worker 4834*c0909341SAndroid Build Coastguard Worker //h0' high part 4835*c0909341SAndroid Build Coastguard Worker vilvh.h vr17, vr3, vr6 //67 ~high 4836*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr26, vr9 4837*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr27, vr20 4838*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr28, vr21 4839*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr18, vr17, vr22 4840*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr26, vr9 4841*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr27, vr20 4842*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr28, vr21 4843*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr18, vr17, vr22 4844*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr15 4845*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr16 4846*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr18 4847*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr14, vr13, 6 4848*c0909341SAndroid Build Coastguard Worker vst vr14, a0, 0 4849*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t6 4850*c0909341SAndroid Build Coastguard Worker //cache 4851*c0909341SAndroid Build Coastguard Worker vaddi.hu vr26, vr27, 0 4852*c0909341SAndroid Build Coastguard Worker vaddi.hu vr27, vr28, 0 4853*c0909341SAndroid Build Coastguard Worker vaddi.hu vr28, vr17, 0 4854*c0909341SAndroid Build Coastguard Worker vaddi.hu vr6, vr4, 0 4855*c0909341SAndroid Build Coastguard Worker 4856*c0909341SAndroid Build Coastguard Worker vilvl.h vr5, vr4, vr3 //78 ~low 4857*c0909341SAndroid Build Coastguard Worker vilvh.h vr4, vr4, vr3 //78 ~high 4858*c0909341SAndroid Build Coastguard Worker 4859*c0909341SAndroid Build Coastguard Worker //h1' low part 4860*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr13, vr29, vr9 4861*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr30, vr20 4862*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr31, vr21 4863*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr5, vr22 4864*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr13, vr29, vr9 4865*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr30, vr20 4866*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr31, vr21 4867*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr5, vr22 4868*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr14 4869*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr15 4870*c0909341SAndroid Build Coastguard Worker vadd.w vr13, vr13, vr16 4871*c0909341SAndroid Build Coastguard Worker //cache 4872*c0909341SAndroid Build Coastguard Worker vaddi.hu vr29, vr30, 0 4873*c0909341SAndroid Build Coastguard Worker vaddi.hu vr30, vr31, 0 4874*c0909341SAndroid Build Coastguard Worker vaddi.hu vr31, vr5, 0 4875*c0909341SAndroid Build Coastguard Worker 4876*c0909341SAndroid Build Coastguard Worker //h1' high part 4877*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr14, vr0, vr9 4878*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr15, vr1, vr20 4879*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr16, vr2, vr21 4880*c0909341SAndroid Build Coastguard Worker vmulwev.w.h vr17, vr4, vr22 4881*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr14, vr0, vr9 4882*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr15, vr1, vr20 4883*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr16, vr2, vr21 4884*c0909341SAndroid Build Coastguard Worker vmaddwod.w.h vr17, vr4, vr22 4885*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr15 4886*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr16 4887*c0909341SAndroid Build Coastguard Worker vadd.w vr14, vr14, vr17 4888*c0909341SAndroid Build Coastguard Worker vssrarni.h.w vr14, vr13, 6 4889*c0909341SAndroid Build Coastguard Worker vst vr14, a0, 0 4890*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t6 4891*c0909341SAndroid Build Coastguard Worker //cache 4892*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 4893*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 4894*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr4, 0 4895*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -2 4896*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()prep_hv_8w_loop_lsx 4897*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 8 4898*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 8 4899*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 16 4900*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 16 4901*c0909341SAndroid Build Coastguard Worker addi.d a4, t5, 0 4902*c0909341SAndroid Build Coastguard Worker addi.w a3, a3, -8 4903*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()prep_hv_8w_loop0_lsx 4904*c0909341SAndroid Build Coastguard Worker fld.d f24, sp, 0 4905*c0909341SAndroid Build Coastguard Worker fld.d f25, sp, 8 4906*c0909341SAndroid Build Coastguard Worker fld.d f26, sp, 16 4907*c0909341SAndroid Build Coastguard Worker fld.d f27, sp, 24 4908*c0909341SAndroid Build Coastguard Worker fld.d f28, sp, 32 4909*c0909341SAndroid Build Coastguard Worker fld.d f29, sp, 40 4910*c0909341SAndroid Build Coastguard Worker fld.d f30, sp, 48 4911*c0909341SAndroid Build Coastguard Worker fld.d f31, sp, 56 4912*c0909341SAndroid Build Coastguard Worker addi.d sp, sp, 8*8 4913*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4914*c0909341SAndroid Build Coastguard Worker 4915*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_lsx: 4916*c0909341SAndroid Build Coastguard Worker srli.w a7, a7, 2 4917*c0909341SAndroid Build Coastguard Worker blt t0, a4, .l_\lable\()v_idx_fv_lsx 4918*c0909341SAndroid Build Coastguard Worker andi a7, a7, 1 4919*c0909341SAndroid Build Coastguard Worker addi.w a7, a7, 3 4920*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_idx_fv_lsx: 4921*c0909341SAndroid Build Coastguard Worker addi.w t5, zero, 120 4922*c0909341SAndroid Build Coastguard Worker mul.w a7, a7, t5 4923*c0909341SAndroid Build Coastguard Worker addi.w t5, a6, -1 4924*c0909341SAndroid Build Coastguard Worker slli.w t5, t5, 3 4925*c0909341SAndroid Build Coastguard Worker add.w a7, a7, t5 4926*c0909341SAndroid Build Coastguard Worker add.d a7, t6, a7 //fv's offset 4927*c0909341SAndroid Build Coastguard Worker vldrepl.d vr8, a7, 0 4928*c0909341SAndroid Build Coastguard Worker 4929*c0909341SAndroid Build Coastguard Worker vilvl.h vr8, vr8, vr8 4930*c0909341SAndroid Build Coastguard Worker vreplvei.w vr9, vr8, 1 4931*c0909341SAndroid Build Coastguard Worker vreplvei.w vr10, vr8, 2 4932*c0909341SAndroid Build Coastguard Worker vreplvei.w vr11, vr8, 3 4933*c0909341SAndroid Build Coastguard Worker vreplvei.w vr8, vr8, 0 4934*c0909341SAndroid Build Coastguard Worker 4935*c0909341SAndroid Build Coastguard Worker sub.d a1, a1, t3 4936*c0909341SAndroid Build Coastguard Worker beq a3, t0, .l_\lable\()v_4w_lsx 4937*c0909341SAndroid Build Coastguard Worker blt t0, a3, .l_\lable\()v_8w_lsx 4938*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_4w_lsx: 4939*c0909341SAndroid Build Coastguard Worker fld.s f0, a1, 0 4940*c0909341SAndroid Build Coastguard Worker fldx.s f1, a1, a2 4941*c0909341SAndroid Build Coastguard Worker fldx.s f2, a1, t2 4942*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4943*c0909341SAndroid Build Coastguard Worker fld.s f3, a1, 0 4944*c0909341SAndroid Build Coastguard Worker fldx.s f4, a1, a2 4945*c0909341SAndroid Build Coastguard Worker fldx.s f5, a1, t2 4946*c0909341SAndroid Build Coastguard Worker fldx.s f6, a1, t3 4947*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 4948*c0909341SAndroid Build Coastguard Worker 4949*c0909341SAndroid Build Coastguard Worker vilvl.w vr0, vr1, vr0 4950*c0909341SAndroid Build Coastguard Worker vilvl.w vr1, vr2, vr1 4951*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 //0 1 1 2 4952*c0909341SAndroid Build Coastguard Worker vilvl.w vr1, vr3, vr2 4953*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr4, vr3 4954*c0909341SAndroid Build Coastguard Worker vilvl.b vr1, vr2, vr1 //2 3 3 4 4955*c0909341SAndroid Build Coastguard Worker vilvl.w vr2, vr5, vr4 4956*c0909341SAndroid Build Coastguard Worker vilvl.w vr3, vr6, vr5 4957*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr3, vr2 //4 5 5 6 4958*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_4w_loop_lsx: 4959*c0909341SAndroid Build Coastguard Worker fld.s f7, a1, 0 4960*c0909341SAndroid Build Coastguard Worker 4961*c0909341SAndroid Build Coastguard Worker vilvl.w vr3, vr7, vr6 4962*c0909341SAndroid Build Coastguard Worker fldx.s f6, a1, a2 4963*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 4964*c0909341SAndroid Build Coastguard Worker vilvl.w vr4, vr6, vr7 4965*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr4, vr3 //6 7 7 8 4966*c0909341SAndroid Build Coastguard Worker 4967*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr12, vr0, vr8 4968*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr13, vr1, vr9 4969*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr2, vr10 4970*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr3, vr11 4971*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr12, vr0, vr8 4972*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr13, vr1, vr9 4973*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr2, vr10 4974*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr3, vr11 4975*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr1, 0 4976*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr2, 0 4977*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr3, 0 4978*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr13 4979*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr14 4980*c0909341SAndroid Build Coastguard Worker vadd.h vr12, vr12, vr15 4981*c0909341SAndroid Build Coastguard Worker 4982*c0909341SAndroid Build Coastguard Worker vsrari.h vr12, vr12, 2 4983*c0909341SAndroid Build Coastguard Worker vst vr12, a0, 0 4984*c0909341SAndroid Build Coastguard Worker addi.d a0, a0, 16 4985*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -2 4986*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()v_4w_loop_lsx 4987*c0909341SAndroid Build Coastguard Worker b .l_\lable\()end_pre_8tap_lsx 4988*c0909341SAndroid Build Coastguard Worker 4989*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_8w_lsx: 4990*c0909341SAndroid Build Coastguard Worker addi.d t0, a1, 0 4991*c0909341SAndroid Build Coastguard Worker addi.d t5, a4, 0 4992*c0909341SAndroid Build Coastguard Worker addi.d t8, a0, 0 4993*c0909341SAndroid Build Coastguard Worker slli.w t6, a3, 1 4994*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_8w_loop0_lsx: 4995*c0909341SAndroid Build Coastguard Worker fld.d f0, a1, 0 4996*c0909341SAndroid Build Coastguard Worker fldx.d f1, a1, a2 4997*c0909341SAndroid Build Coastguard Worker fldx.d f2, a1, t2 4998*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t3 4999*c0909341SAndroid Build Coastguard Worker fld.d f3, a1, 0 5000*c0909341SAndroid Build Coastguard Worker fldx.d f4, a1, a2 5001*c0909341SAndroid Build Coastguard Worker fldx.d f5, a1, t2 5002*c0909341SAndroid Build Coastguard Worker fldx.d f6, a1, t3 5003*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t4 5004*c0909341SAndroid Build Coastguard Worker 5005*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 //0 1 5006*c0909341SAndroid Build Coastguard Worker vilvl.b vr1, vr2, vr1 //1 2 5007*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr3, vr2 //2 3 5008*c0909341SAndroid Build Coastguard Worker vilvl.b vr3, vr4, vr3 //3 4 5009*c0909341SAndroid Build Coastguard Worker vilvl.b vr4, vr5, vr4 //4 5 5010*c0909341SAndroid Build Coastguard Worker vilvl.b vr5, vr6, vr5 //5 6 5011*c0909341SAndroid Build Coastguard Worker.l_\lable\()v_8w_loop_lsx: 5012*c0909341SAndroid Build Coastguard Worker fld.d f7, a1, 0 5013*c0909341SAndroid Build Coastguard Worker vilvl.b vr12, vr7, vr6 //6 7 5014*c0909341SAndroid Build Coastguard Worker fldx.d f6, a1, a2 5015*c0909341SAndroid Build Coastguard Worker add.d a1, a1, t2 5016*c0909341SAndroid Build Coastguard Worker vilvl.b vr13, vr6, vr7 //7 8 5017*c0909341SAndroid Build Coastguard Worker 5018*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr14, vr0, vr8 5019*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr15, vr1, vr8 5020*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr16, vr2, vr9 5021*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr17, vr3, vr9 5022*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr18, vr4, vr10 5023*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr19, vr5, vr10 5024*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr20, vr12, vr11 5025*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu.b vr21, vr13, vr11 5026*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr14, vr0, vr8 5027*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr15, vr1, vr8 5028*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr16, vr2, vr9 5029*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr17, vr3, vr9 5030*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr18, vr4, vr10 5031*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr19, vr5, vr10 5032*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr20, vr12, vr11 5033*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu.b vr21, vr13, vr11 5034*c0909341SAndroid Build Coastguard Worker 5035*c0909341SAndroid Build Coastguard Worker vaddi.hu vr0, vr2, 0 5036*c0909341SAndroid Build Coastguard Worker vaddi.hu vr1, vr3, 0 5037*c0909341SAndroid Build Coastguard Worker vaddi.hu vr2, vr4, 0 5038*c0909341SAndroid Build Coastguard Worker vaddi.hu vr3, vr5, 0 5039*c0909341SAndroid Build Coastguard Worker vaddi.hu vr4, vr12, 0 5040*c0909341SAndroid Build Coastguard Worker vaddi.hu vr5, vr13, 0 5041*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr16 5042*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr18 5043*c0909341SAndroid Build Coastguard Worker vadd.h vr14, vr14, vr20 5044*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr17 5045*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr19 5046*c0909341SAndroid Build Coastguard Worker vadd.h vr15, vr15, vr21 5047*c0909341SAndroid Build Coastguard Worker 5048*c0909341SAndroid Build Coastguard Worker vsrari.h vr14, vr14, 2 5049*c0909341SAndroid Build Coastguard Worker vsrari.h vr15, vr15, 2 5050*c0909341SAndroid Build Coastguard Worker vst vr14, a0, 0 5051*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t6 5052*c0909341SAndroid Build Coastguard Worker vst vr15, a0, 0 5053*c0909341SAndroid Build Coastguard Worker add.d a0, a0, t6 5054*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -2 5055*c0909341SAndroid Build Coastguard Worker bnez a4, .l_\lable\()v_8w_loop_lsx 5056*c0909341SAndroid Build Coastguard Worker addi.d a1, t0, 8 5057*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 8 5058*c0909341SAndroid Build Coastguard Worker addi.d a0, t8, 16 5059*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 16 5060*c0909341SAndroid Build Coastguard Worker addi.d a4, t5, 0 5061*c0909341SAndroid Build Coastguard Worker addi.d a3, a3, -8 5062*c0909341SAndroid Build Coastguard Worker bnez a3, .l_\lable\()v_8w_loop0_lsx 5063*c0909341SAndroid Build Coastguard Worker.l_\lable\()end_pre_8tap_lsx: 5064*c0909341SAndroid Build Coastguard Worker.endm 5065*c0909341SAndroid Build Coastguard Worker 5066*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_8bpc_lsx 5067*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 0 5068*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 0 5069*c0909341SAndroid Build Coastguard Workerendfunc 5070*c0909341SAndroid Build Coastguard Worker 5071*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_regular_8bpc_lsx 5072*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 1 5073*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 1 5074*c0909341SAndroid Build Coastguard Workerendfunc 5075*c0909341SAndroid Build Coastguard Worker 5076*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_regular_8bpc_lsx 5077*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 2 5078*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 2 5079*c0909341SAndroid Build Coastguard Workerendfunc 5080*c0909341SAndroid Build Coastguard Worker 5081*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_smooth_8bpc_lsx 5082*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 4 5083*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 4 5084*c0909341SAndroid Build Coastguard Workerendfunc 5085*c0909341SAndroid Build Coastguard Worker 5086*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_8bpc_lsx 5087*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 5 5088*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 5 5089*c0909341SAndroid Build Coastguard Workerendfunc 5090*c0909341SAndroid Build Coastguard Worker 5091*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_smooth_8bpc_lsx 5092*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 6 5093*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 6 5094*c0909341SAndroid Build Coastguard Workerendfunc 5095*c0909341SAndroid Build Coastguard Worker 5096*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_regular_sharp_8bpc_lsx 5097*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 8 5098*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 8 5099*c0909341SAndroid Build Coastguard Workerendfunc 5100*c0909341SAndroid Build Coastguard Worker 5101*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_smooth_sharp_8bpc_lsx 5102*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 9 5103*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 9 5104*c0909341SAndroid Build Coastguard Workerendfunc 5105*c0909341SAndroid Build Coastguard Worker 5106*c0909341SAndroid Build Coastguard Workerfunction prep_8tap_sharp_8bpc_lsx 5107*c0909341SAndroid Build Coastguard Worker addi.w a7, zero, 10 5108*c0909341SAndroid Build Coastguard Worker PREP_8TAP_8BPC_LSX 10 5109*c0909341SAndroid Build Coastguard Workerendfunc 5110*c0909341SAndroid Build Coastguard Worker 5111*c0909341SAndroid Build Coastguard Worker/* 5112*c0909341SAndroid Build Coastguard Worker * static void blend_lsx(pixel *dst, const ptrdiff_t dst_stride, const pixel *tmp, 5113*c0909341SAndroid Build Coastguard Worker const int w, int h, const uint8_t *mask) 5114*c0909341SAndroid Build Coastguard Worker */ 5115*c0909341SAndroid Build Coastguard Workerfunction blend_8bpc_lsx 5116*c0909341SAndroid Build Coastguard Worker addi.d t8, zero, 64 5117*c0909341SAndroid Build Coastguard Worker vreplgr2vr.b vr23, t8 5118*c0909341SAndroid Build Coastguard Worker 5119*c0909341SAndroid Build Coastguard Worker clz.w t0, a3 5120*c0909341SAndroid Build Coastguard Worker li.w t1, 26 5121*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 5122*c0909341SAndroid Build Coastguard Worker la.local t1, .BLEND_LSX_JRTABLE 5123*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 5124*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 // The jump addresses are relative to JRTABLE 5125*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 // Get absolute address 5126*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 5127*c0909341SAndroid Build Coastguard Worker 5128*c0909341SAndroid Build Coastguard Worker .align 3 5129*c0909341SAndroid Build Coastguard Worker.BLEND_LSX_JRTABLE: 5130*c0909341SAndroid Build Coastguard Worker .hword .BLEND_W32_LSX - .BLEND_LSX_JRTABLE 5131*c0909341SAndroid Build Coastguard Worker .hword .BLEND_W16_LSX - .BLEND_LSX_JRTABLE 5132*c0909341SAndroid Build Coastguard Worker .hword .BLEND_W8_LSX - .BLEND_LSX_JRTABLE 5133*c0909341SAndroid Build Coastguard Worker .hword .BLEND_W4_LSX - .BLEND_LSX_JRTABLE 5134*c0909341SAndroid Build Coastguard Worker 5135*c0909341SAndroid Build Coastguard Worker.BLEND_W4_LSX: 5136*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5137*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5138*c0909341SAndroid Build Coastguard Worker vld vr2, a5, 0 5139*c0909341SAndroid Build Coastguard Worker 5140*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 0 5141*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr2, 0 5142*c0909341SAndroid Build Coastguard Worker vmul.h vr1, vr1, vr4 //b*m 5143*c0909341SAndroid Build Coastguard Worker vsub.b vr3, vr23, vr2 5144*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 0 5145*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr3, 0 5146*c0909341SAndroid Build Coastguard Worker vmadd.h vr1, vr0, vr3 5147*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5148*c0909341SAndroid Build Coastguard Worker 5149*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 0 5150*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5151*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5152*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 4 5153*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, 4 5154*c0909341SAndroid Build Coastguard Worker 5155*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_W4_LSX 5156*c0909341SAndroid Build Coastguard Worker b .BLEND_END_LSX 5157*c0909341SAndroid Build Coastguard Worker.BLEND_W8_LSX: 5158*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5159*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5160*c0909341SAndroid Build Coastguard Worker vld vr2, a5, 0 5161*c0909341SAndroid Build Coastguard Worker 5162*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 0 5163*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr2, 0 5164*c0909341SAndroid Build Coastguard Worker vmul.h vr1, vr1, vr4 //b*m 5165*c0909341SAndroid Build Coastguard Worker vsub.b vr3, vr23, vr2 5166*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 0 5167*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr3, 0 5168*c0909341SAndroid Build Coastguard Worker vmadd.h vr1, vr0, vr3 5169*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5170*c0909341SAndroid Build Coastguard Worker 5171*c0909341SAndroid Build Coastguard Worker vstelm.d vr1, a0, 0, 0 5172*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5173*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5174*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 8 5175*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, 8 5176*c0909341SAndroid Build Coastguard Worker 5177*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_W8_LSX 5178*c0909341SAndroid Build Coastguard Worker b .BLEND_END_LSX 5179*c0909341SAndroid Build Coastguard Worker.BLEND_W16_LSX: 5180*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5181*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5182*c0909341SAndroid Build Coastguard Worker vld vr2, a5, 0 5183*c0909341SAndroid Build Coastguard Worker 5184*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr5, vr1 5185*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 0 5186*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr6, vr2 5187*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr2, 0 5188*c0909341SAndroid Build Coastguard Worker vmul.h vr1, vr1, vr4 //b*m 5189*c0909341SAndroid Build Coastguard Worker vmul.h vr5, vr5, vr6 //b*m 5190*c0909341SAndroid Build Coastguard Worker vsub.b vr3, vr23, vr2 5191*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr7, vr0 5192*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr8, vr3 5193*c0909341SAndroid Build Coastguard Worker vmadd.h vr5, vr7, vr8 5194*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 0 5195*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr3, 0 5196*c0909341SAndroid Build Coastguard Worker vmadd.h vr1, vr0, vr3 5197*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr1, 6 5198*c0909341SAndroid Build Coastguard Worker 5199*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 5200*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5201*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5202*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 5203*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, 16 5204*c0909341SAndroid Build Coastguard Worker 5205*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_W16_LSX 5206*c0909341SAndroid Build Coastguard Worker b .BLEND_END_LSX 5207*c0909341SAndroid Build Coastguard Worker.BLEND_W32_LSX: 5208*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5209*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5210*c0909341SAndroid Build Coastguard Worker vld vr2, a5, 0 5211*c0909341SAndroid Build Coastguard Worker 5212*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr5, vr1 5213*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 0 5214*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr6, vr2 5215*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr2, 0 5216*c0909341SAndroid Build Coastguard Worker vmul.h vr1, vr1, vr4 //b*m 5217*c0909341SAndroid Build Coastguard Worker vmul.h vr5, vr5, vr6 //b*m 5218*c0909341SAndroid Build Coastguard Worker vsub.b vr3, vr23, vr2 5219*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr7, vr0 5220*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr8, vr3 5221*c0909341SAndroid Build Coastguard Worker vmadd.h vr5, vr7, vr8 5222*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 0 5223*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr3, 0 5224*c0909341SAndroid Build Coastguard Worker vmadd.h vr1, vr0, vr3 5225*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr1, 6 5226*c0909341SAndroid Build Coastguard Worker 5227*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 5228*c0909341SAndroid Build Coastguard Worker 5229*c0909341SAndroid Build Coastguard Worker /* sencond */ 5230*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 16 5231*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 16 5232*c0909341SAndroid Build Coastguard Worker vld vr2, a5, 16 5233*c0909341SAndroid Build Coastguard Worker 5234*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr5, vr1 5235*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr1, vr1, 0 5236*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr6, vr2 5237*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr4, vr2, 0 5238*c0909341SAndroid Build Coastguard Worker vmul.h vr1, vr1, vr4 //b*m 5239*c0909341SAndroid Build Coastguard Worker vmul.h vr5, vr5, vr6 //b*m 5240*c0909341SAndroid Build Coastguard Worker vsub.b vr3, vr23, vr2 5241*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr7, vr0 5242*c0909341SAndroid Build Coastguard Worker vexth.hu.bu vr8, vr3 5243*c0909341SAndroid Build Coastguard Worker vmadd.h vr5, vr7, vr8 5244*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr0, vr0, 0 5245*c0909341SAndroid Build Coastguard Worker vsllwil.hu.bu vr3, vr3, 0 5246*c0909341SAndroid Build Coastguard Worker vmadd.h vr1, vr0, vr3 5247*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr1, 6 5248*c0909341SAndroid Build Coastguard Worker 5249*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 16 5250*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5251*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5252*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 5253*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, 32 5254*c0909341SAndroid Build Coastguard Worker 5255*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_W32_LSX 5256*c0909341SAndroid Build Coastguard Worker.BLEND_END_LSX: 5257*c0909341SAndroid Build Coastguard Worker 5258*c0909341SAndroid Build Coastguard Workerendfunc 5259*c0909341SAndroid Build Coastguard Worker 5260*c0909341SAndroid Build Coastguard Workerconst obmc_masks_la 5261*c0909341SAndroid Build Coastguard Worker/* Unused */ 5262*c0909341SAndroid Build Coastguard Worker.byte 0, 0, 0, 0 5263*c0909341SAndroid Build Coastguard Worker/* 2 */ 5264*c0909341SAndroid Build Coastguard Worker.byte 45, 19, 64, 0 5265*c0909341SAndroid Build Coastguard Worker/* 4 */ 5266*c0909341SAndroid Build Coastguard Worker.byte 39, 25, 50, 14, 59, 5, 64, 0 5267*c0909341SAndroid Build Coastguard Worker/* 8 */ 5268*c0909341SAndroid Build Coastguard Worker.byte 36, 28, 42, 22, 48, 16, 53, 11, 57, 7, 61, 3, 64, 0, 64, 0 5269*c0909341SAndroid Build Coastguard Worker/* 16 */ 5270*c0909341SAndroid Build Coastguard Worker.byte 34, 30, 37, 27, 40, 24, 43, 21, 46, 18, 49, 15, 52, 12, 54, 10 5271*c0909341SAndroid Build Coastguard Worker.byte 56, 8, 58, 6, 60, 4, 61, 3, 64, 0, 64, 0, 64, 0, 64, 0 5272*c0909341SAndroid Build Coastguard Worker/* 32 */ 5273*c0909341SAndroid Build Coastguard Worker.byte 33, 31, 35, 29, 36, 28, 38, 26, 40, 24, 41, 23, 43, 21, 44, 20 5274*c0909341SAndroid Build Coastguard Worker.byte 45, 19, 47, 17, 48, 16, 50, 14, 51, 13, 52, 12, 53, 11, 55, 9 5275*c0909341SAndroid Build Coastguard Worker.byte 56, 8, 57, 7, 58, 6, 59, 5, 60, 4, 60, 4, 61, 3, 62, 2 5276*c0909341SAndroid Build Coastguard Workerendconst 5277*c0909341SAndroid Build Coastguard Worker 5278*c0909341SAndroid Build Coastguard Worker/* 5279*c0909341SAndroid Build Coastguard Worker * static void blend_v_lsx(pixel *dst, const ptrdiff_t dst_stride, const pixel *tmp, 5280*c0909341SAndroid Build Coastguard Worker const int w, int h) 5281*c0909341SAndroid Build Coastguard Worker */ 5282*c0909341SAndroid Build Coastguard Workerfunction blend_v_8bpc_lsx 5283*c0909341SAndroid Build Coastguard Worker la.local t8, obmc_masks_la 5284*c0909341SAndroid Build Coastguard Worker 5285*c0909341SAndroid Build Coastguard Worker clz.w t0, a3 5286*c0909341SAndroid Build Coastguard Worker li.w t1, 26 5287*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 5288*c0909341SAndroid Build Coastguard Worker la.local t1, .BLEND_V_LSX_JRTABLE 5289*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 5290*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 // The jump addresses are relative to JRTABLE 5291*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 // Get absolute address 5292*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 5293*c0909341SAndroid Build Coastguard Worker 5294*c0909341SAndroid Build Coastguard Worker .align 3 5295*c0909341SAndroid Build Coastguard Worker.BLEND_V_LSX_JRTABLE: 5296*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W32_LSX - .BLEND_V_LSX_JRTABLE 5297*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W16_LSX - .BLEND_V_LSX_JRTABLE 5298*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W8_LSX - .BLEND_V_LSX_JRTABLE 5299*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W4_LSX - .BLEND_V_LSX_JRTABLE 5300*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W2_LSX - .BLEND_V_LSX_JRTABLE 5301*c0909341SAndroid Build Coastguard Worker .hword .BLEND_V_W2_LSX_1 - .BLEND_V_LSX_JRTABLE //Instructions must be 4-byte aligned 5302*c0909341SAndroid Build Coastguard Worker 5303*c0909341SAndroid Build Coastguard Worker.BLEND_V_W2_LSX: 5304*c0909341SAndroid Build Coastguard Worker ld.bu t6, t8, 4 5305*c0909341SAndroid Build Coastguard Worker ld.bu t7, t8, 5 5306*c0909341SAndroid Build Coastguard Worker 5307*c0909341SAndroid Build Coastguard Worker.BLEND_V_W2_LSX_1: 5308*c0909341SAndroid Build Coastguard Worker ld.bu t0, a0, 0 5309*c0909341SAndroid Build Coastguard Worker ld.bu t1, a2, 0 5310*c0909341SAndroid Build Coastguard Worker mul.d t0, t0, t6 5311*c0909341SAndroid Build Coastguard Worker mul.d t1, t1, t7 5312*c0909341SAndroid Build Coastguard Worker addi.d t0, t0, 32 5313*c0909341SAndroid Build Coastguard Worker add.d t0, t0, t1 5314*c0909341SAndroid Build Coastguard Worker srli.d t0, t0, 6 5315*c0909341SAndroid Build Coastguard Worker st.b t0, a0, 0 5316*c0909341SAndroid Build Coastguard Worker 5317*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5318*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5319*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 2 5320*c0909341SAndroid Build Coastguard Worker addi.d a5, a5, 2 5321*c0909341SAndroid Build Coastguard Worker 5322*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_V_W2_LSX_1 5323*c0909341SAndroid Build Coastguard Worker b .BLEND_V_END_LSX 5324*c0909341SAndroid Build Coastguard Worker 5325*c0909341SAndroid Build Coastguard Worker.BLEND_V_W4_LSX: 5326*c0909341SAndroid Build Coastguard Worker vld vr20, t8, 8 5327*c0909341SAndroid Build Coastguard Worker 5328*c0909341SAndroid Build Coastguard Worker.BLEND_V_W4_LSX_1: 5329*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5330*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5331*c0909341SAndroid Build Coastguard Worker 5332*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5333*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5334*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5335*c0909341SAndroid Build Coastguard Worker 5336*c0909341SAndroid Build Coastguard Worker vstelm.h vr1, a0, 0, 0 5337*c0909341SAndroid Build Coastguard Worker vstelm.b vr1, a0, 2, 2 5338*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5339*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5340*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 4 5341*c0909341SAndroid Build Coastguard Worker 5342*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_V_W4_LSX_1 5343*c0909341SAndroid Build Coastguard Worker b .BLEND_V_END_LSX 5344*c0909341SAndroid Build Coastguard Worker 5345*c0909341SAndroid Build Coastguard Worker.BLEND_V_W8_LSX: 5346*c0909341SAndroid Build Coastguard Worker vld vr20, t8, 16 5347*c0909341SAndroid Build Coastguard Worker 5348*c0909341SAndroid Build Coastguard Worker.BLEND_V_W8_LSX_1: 5349*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5350*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5351*c0909341SAndroid Build Coastguard Worker 5352*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5353*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5354*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5355*c0909341SAndroid Build Coastguard Worker 5356*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 0 5357*c0909341SAndroid Build Coastguard Worker vstelm.h vr1, a0, 4, 2 5358*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5359*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5360*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 8 5361*c0909341SAndroid Build Coastguard Worker 5362*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_V_W8_LSX_1 5363*c0909341SAndroid Build Coastguard Worker b .BLEND_V_END_LSX 5364*c0909341SAndroid Build Coastguard Worker 5365*c0909341SAndroid Build Coastguard Worker.BLEND_V_W16_LSX: 5366*c0909341SAndroid Build Coastguard Worker vld vr20, t8, 32 5367*c0909341SAndroid Build Coastguard Worker vld vr21, t8, 48 5368*c0909341SAndroid Build Coastguard Worker 5369*c0909341SAndroid Build Coastguard Worker.BLEND_V_W16_LSX_1: 5370*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5371*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5372*c0909341SAndroid Build Coastguard Worker 5373*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr1, vr0 5374*c0909341SAndroid Build Coastguard Worker vilvh.b vr3, vr1, vr0 5375*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr2, vr20 5376*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr3, vr21 5377*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr2, vr20 5378*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr3, vr21 5379*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5380*c0909341SAndroid Build Coastguard Worker 5381*c0909341SAndroid Build Coastguard Worker vstelm.d vr5, a0, 0, 0 5382*c0909341SAndroid Build Coastguard Worker vstelm.w vr5, a0, 8, 2 5383*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5384*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5385*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 5386*c0909341SAndroid Build Coastguard Worker 5387*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_V_W16_LSX_1 5388*c0909341SAndroid Build Coastguard Worker b .BLEND_V_END_LSX 5389*c0909341SAndroid Build Coastguard Worker 5390*c0909341SAndroid Build Coastguard Worker.BLEND_V_W32_LSX: 5391*c0909341SAndroid Build Coastguard Worker vld vr20, t8, 64 5392*c0909341SAndroid Build Coastguard Worker vld vr21, t8, 80 5393*c0909341SAndroid Build Coastguard Worker vld vr22, t8, 96 5394*c0909341SAndroid Build Coastguard Worker 5395*c0909341SAndroid Build Coastguard Worker.BLEND_V_W32_LSX_1: 5396*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5397*c0909341SAndroid Build Coastguard Worker vld vr1, a0, 16 5398*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 0 5399*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 16 5400*c0909341SAndroid Build Coastguard Worker 5401*c0909341SAndroid Build Coastguard Worker vilvl.b vr4, vr2, vr0 5402*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr7, vr4, vr20 5403*c0909341SAndroid Build Coastguard Worker vilvh.b vr5, vr2, vr0 5404*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr8, vr5, vr21 5405*c0909341SAndroid Build Coastguard Worker vilvl.b vr6, vr3, vr1 5406*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr9, vr6, vr22 5407*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr7, vr4, vr20 5408*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr8, vr5, vr21 5409*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr9, vr6, vr22 5410*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr8, vr7, 6 5411*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr9, vr9, 6 5412*c0909341SAndroid Build Coastguard Worker 5413*c0909341SAndroid Build Coastguard Worker vst vr8, a0, 0 5414*c0909341SAndroid Build Coastguard Worker vstelm.d vr9, a0, 16, 0 5415*c0909341SAndroid Build Coastguard Worker addi.w a4, a4, -1 5416*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5417*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 5418*c0909341SAndroid Build Coastguard Worker 5419*c0909341SAndroid Build Coastguard Worker blt zero, a4, .BLEND_V_W32_LSX_1 5420*c0909341SAndroid Build Coastguard Worker 5421*c0909341SAndroid Build Coastguard Worker.BLEND_V_END_LSX: 5422*c0909341SAndroid Build Coastguard Worker 5423*c0909341SAndroid Build Coastguard Workerendfunc 5424*c0909341SAndroid Build Coastguard Worker 5425*c0909341SAndroid Build Coastguard Worker/* 5426*c0909341SAndroid Build Coastguard Worker * static void blend_h_lsx(pixel *dst, const ptrdiff_t dst_stride, const pixel *tmp, 5427*c0909341SAndroid Build Coastguard Worker const int w, int h) 5428*c0909341SAndroid Build Coastguard Worker */ 5429*c0909341SAndroid Build Coastguard Workerfunction blend_h_8bpc_lsx 5430*c0909341SAndroid Build Coastguard Worker la.local t8, obmc_masks_la 5431*c0909341SAndroid Build Coastguard Worker alsl.d t8, a4, t8, 1 5432*c0909341SAndroid Build Coastguard Worker srli.d t0, a4, 1 5433*c0909341SAndroid Build Coastguard Worker srli.d t1, a4, 2 5434*c0909341SAndroid Build Coastguard Worker add.d a4, t0, t1 // h = (h * 3) >> 2; 5435*c0909341SAndroid Build Coastguard Worker slli.d a4, a4, 1 5436*c0909341SAndroid Build Coastguard Worker add.d a4, a4, t8 5437*c0909341SAndroid Build Coastguard Worker 5438*c0909341SAndroid Build Coastguard Worker clz.w t0, a3 5439*c0909341SAndroid Build Coastguard Worker li.w t1, 24 5440*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 5441*c0909341SAndroid Build Coastguard Worker la.local t1, .BLEND_H_LSX_JRTABLE 5442*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 5443*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 // The jump addresses are relative to JRTABLE 5444*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 // Get absolute address 5445*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 5446*c0909341SAndroid Build Coastguard Worker 5447*c0909341SAndroid Build Coastguard Worker .align 3 5448*c0909341SAndroid Build Coastguard Worker.BLEND_H_LSX_JRTABLE: 5449*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W128_LSX - .BLEND_H_LSX_JRTABLE 5450*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W64_LSX - .BLEND_H_LSX_JRTABLE 5451*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W32_LSX - .BLEND_H_LSX_JRTABLE 5452*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W16_LSX - .BLEND_H_LSX_JRTABLE 5453*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W8_LSX - .BLEND_H_LSX_JRTABLE 5454*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W4_LSX - .BLEND_H_LSX_JRTABLE 5455*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W2_LSX - .BLEND_H_LSX_JRTABLE 5456*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_END_LSX - .BLEND_H_LSX_JRTABLE //Instructions must be 4-byte aligned 5457*c0909341SAndroid Build Coastguard Worker 5458*c0909341SAndroid Build Coastguard Worker.BLEND_H_W2_LSX: 5459*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5460*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5461*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5462*c0909341SAndroid Build Coastguard Worker 5463*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5464*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5465*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5466*c0909341SAndroid Build Coastguard Worker 5467*c0909341SAndroid Build Coastguard Worker vstelm.h vr1, a0, 0, 0 5468*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5469*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5470*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 2 5471*c0909341SAndroid Build Coastguard Worker 5472*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W2_LSX 5473*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5474*c0909341SAndroid Build Coastguard Worker 5475*c0909341SAndroid Build Coastguard Worker.BLEND_H_W4_LSX: 5476*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5477*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5478*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5479*c0909341SAndroid Build Coastguard Worker 5480*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5481*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5482*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5483*c0909341SAndroid Build Coastguard Worker 5484*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 0 5485*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5486*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5487*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 4 5488*c0909341SAndroid Build Coastguard Worker 5489*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W4_LSX 5490*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5491*c0909341SAndroid Build Coastguard Worker 5492*c0909341SAndroid Build Coastguard Worker.BLEND_H_W8_LSX: 5493*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5494*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5495*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5496*c0909341SAndroid Build Coastguard Worker 5497*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5498*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5499*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5500*c0909341SAndroid Build Coastguard Worker 5501*c0909341SAndroid Build Coastguard Worker vstelm.d vr1, a0, 0, 0 5502*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5503*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5504*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 8 5505*c0909341SAndroid Build Coastguard Worker 5506*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W8_LSX 5507*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5508*c0909341SAndroid Build Coastguard Worker 5509*c0909341SAndroid Build Coastguard Worker.BLEND_H_W16_LSX: 5510*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5511*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5512*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5513*c0909341SAndroid Build Coastguard Worker 5514*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr1, vr0 5515*c0909341SAndroid Build Coastguard Worker vilvh.b vr3, vr1, vr0 5516*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr2, vr20 5517*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr3, vr20 5518*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr2, vr20 5519*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr3, vr20 5520*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5521*c0909341SAndroid Build Coastguard Worker 5522*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 5523*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5524*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5525*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 5526*c0909341SAndroid Build Coastguard Worker 5527*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W16_LSX 5528*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5529*c0909341SAndroid Build Coastguard Worker 5530*c0909341SAndroid Build Coastguard Worker.BLEND_H_W32_LSX: 5531*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5532*c0909341SAndroid Build Coastguard Worker 5533*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5534*c0909341SAndroid Build Coastguard Worker vld vr1, a0, 16 5535*c0909341SAndroid Build Coastguard Worker vld vr2, a2, 0 5536*c0909341SAndroid Build Coastguard Worker vld vr3, a2, 16 5537*c0909341SAndroid Build Coastguard Worker 5538*c0909341SAndroid Build Coastguard Worker vilvl.b vr4, vr2, vr0 5539*c0909341SAndroid Build Coastguard Worker vilvh.b vr5, vr2, vr0 5540*c0909341SAndroid Build Coastguard Worker vilvl.b vr6, vr3, vr1 5541*c0909341SAndroid Build Coastguard Worker vilvh.b vr3, vr3, vr1 5542*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr7, vr4, vr20 5543*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr8, vr5, vr20 5544*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr9, vr6, vr20 5545*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr0, vr3, vr20 5546*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr7, vr4, vr20 5547*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr8, vr5, vr20 5548*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr9, vr6, vr20 5549*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr0, vr3, vr20 5550*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr8, vr7, 6 5551*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr0, vr9, 6 5552*c0909341SAndroid Build Coastguard Worker 5553*c0909341SAndroid Build Coastguard Worker vst vr8, a0, 0 5554*c0909341SAndroid Build Coastguard Worker vst vr0, a0, 16 5555*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5556*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5557*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 5558*c0909341SAndroid Build Coastguard Worker 5559*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W32_LSX 5560*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5561*c0909341SAndroid Build Coastguard Worker 5562*c0909341SAndroid Build Coastguard Worker.BLEND_H_W64_LSX: 5563*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5564*c0909341SAndroid Build Coastguard Worker 5565*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5566*c0909341SAndroid Build Coastguard Worker vld vr1, a0, 16 5567*c0909341SAndroid Build Coastguard Worker vld vr2, a0, 32 5568*c0909341SAndroid Build Coastguard Worker vld vr3, a0, 48 5569*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 0 5570*c0909341SAndroid Build Coastguard Worker vld vr5, a2, 16 5571*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 32 5572*c0909341SAndroid Build Coastguard Worker vld vr7, a2, 48 5573*c0909341SAndroid Build Coastguard Worker 5574*c0909341SAndroid Build Coastguard Worker vilvl.b vr8, vr4, vr0 5575*c0909341SAndroid Build Coastguard Worker vilvh.b vr9, vr4, vr0 5576*c0909341SAndroid Build Coastguard Worker vilvl.b vr10, vr5, vr1 5577*c0909341SAndroid Build Coastguard Worker vilvh.b vr11, vr5, vr1 5578*c0909341SAndroid Build Coastguard Worker vilvl.b vr12, vr6, vr2 5579*c0909341SAndroid Build Coastguard Worker vilvh.b vr13, vr6, vr2 5580*c0909341SAndroid Build Coastguard Worker vilvl.b vr14, vr7, vr3 5581*c0909341SAndroid Build Coastguard Worker vilvh.b vr15, vr7, vr3 5582*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr0, vr8, vr20 5583*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr1, vr9, vr20 5584*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr2, vr10, vr20 5585*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr3, vr11, vr20 5586*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr12, vr20 5587*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr13, vr20 5588*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr6, vr14, vr20 5589*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr7, vr15, vr20 5590*c0909341SAndroid Build Coastguard Worker 5591*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr0, vr8, vr20 5592*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr1, vr9, vr20 5593*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr2, vr10, vr20 5594*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr3, vr11, vr20 5595*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr12, vr20 5596*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr13, vr20 5597*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr6, vr14, vr20 5598*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr7, vr15, vr20 5599*c0909341SAndroid Build Coastguard Worker 5600*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr0, 6 5601*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr3, vr2, 6 5602*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5603*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr7, vr6, 6 5604*c0909341SAndroid Build Coastguard Worker 5605*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 5606*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 16 5607*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 32 5608*c0909341SAndroid Build Coastguard Worker vst vr7, a0, 48 5609*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5610*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5611*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 5612*c0909341SAndroid Build Coastguard Worker 5613*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W64_LSX 5614*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5615*c0909341SAndroid Build Coastguard Worker 5616*c0909341SAndroid Build Coastguard Worker.BLEND_H_W128_LSX: 5617*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5618*c0909341SAndroid Build Coastguard Worker 5619*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5620*c0909341SAndroid Build Coastguard Worker vld vr1, a0, 16 5621*c0909341SAndroid Build Coastguard Worker vld vr2, a0, 32 5622*c0909341SAndroid Build Coastguard Worker vld vr3, a0, 48 5623*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 0 5624*c0909341SAndroid Build Coastguard Worker vld vr5, a2, 16 5625*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 32 5626*c0909341SAndroid Build Coastguard Worker vld vr7, a2, 48 5627*c0909341SAndroid Build Coastguard Worker 5628*c0909341SAndroid Build Coastguard Worker vilvl.b vr8, vr4, vr0 5629*c0909341SAndroid Build Coastguard Worker vilvh.b vr9, vr4, vr0 5630*c0909341SAndroid Build Coastguard Worker vilvl.b vr10, vr5, vr1 5631*c0909341SAndroid Build Coastguard Worker vilvh.b vr11, vr5, vr1 5632*c0909341SAndroid Build Coastguard Worker vilvl.b vr12, vr6, vr2 5633*c0909341SAndroid Build Coastguard Worker vilvh.b vr13, vr6, vr2 5634*c0909341SAndroid Build Coastguard Worker vilvl.b vr14, vr7, vr3 5635*c0909341SAndroid Build Coastguard Worker vilvh.b vr15, vr7, vr3 5636*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr0, vr8, vr20 5637*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr1, vr9, vr20 5638*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr2, vr10, vr20 5639*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr3, vr11, vr20 5640*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr12, vr20 5641*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr13, vr20 5642*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr6, vr14, vr20 5643*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr7, vr15, vr20 5644*c0909341SAndroid Build Coastguard Worker 5645*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr0, vr8, vr20 5646*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr1, vr9, vr20 5647*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr2, vr10, vr20 5648*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr3, vr11, vr20 5649*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr12, vr20 5650*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr13, vr20 5651*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr6, vr14, vr20 5652*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr7, vr15, vr20 5653*c0909341SAndroid Build Coastguard Worker 5654*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr0, 6 5655*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr3, vr2, 6 5656*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5657*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr7, vr6, 6 5658*c0909341SAndroid Build Coastguard Worker 5659*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 0 5660*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 16 5661*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 32 5662*c0909341SAndroid Build Coastguard Worker vst vr7, a0, 48 5663*c0909341SAndroid Build Coastguard Worker 5664*c0909341SAndroid Build Coastguard Worker /* second */ 5665*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 64 5666*c0909341SAndroid Build Coastguard Worker vld vr1, a0, 80 5667*c0909341SAndroid Build Coastguard Worker vld vr2, a0, 96 5668*c0909341SAndroid Build Coastguard Worker vld vr3, a0, 112 5669*c0909341SAndroid Build Coastguard Worker vld vr4, a2, 64 5670*c0909341SAndroid Build Coastguard Worker vld vr5, a2, 80 5671*c0909341SAndroid Build Coastguard Worker vld vr6, a2, 96 5672*c0909341SAndroid Build Coastguard Worker vld vr7, a2, 112 5673*c0909341SAndroid Build Coastguard Worker 5674*c0909341SAndroid Build Coastguard Worker vilvl.b vr8, vr4, vr0 5675*c0909341SAndroid Build Coastguard Worker vilvh.b vr9, vr4, vr0 5676*c0909341SAndroid Build Coastguard Worker vilvl.b vr10, vr5, vr1 5677*c0909341SAndroid Build Coastguard Worker vilvh.b vr11, vr5, vr1 5678*c0909341SAndroid Build Coastguard Worker vilvl.b vr12, vr6, vr2 5679*c0909341SAndroid Build Coastguard Worker vilvh.b vr13, vr6, vr2 5680*c0909341SAndroid Build Coastguard Worker vilvl.b vr14, vr7, vr3 5681*c0909341SAndroid Build Coastguard Worker vilvh.b vr15, vr7, vr3 5682*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr0, vr8, vr20 5683*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr1, vr9, vr20 5684*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr2, vr10, vr20 5685*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr3, vr11, vr20 5686*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr12, vr20 5687*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr13, vr20 5688*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr6, vr14, vr20 5689*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr7, vr15, vr20 5690*c0909341SAndroid Build Coastguard Worker 5691*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr0, vr8, vr20 5692*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr1, vr9, vr20 5693*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr2, vr10, vr20 5694*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr3, vr11, vr20 5695*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr12, vr20 5696*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr13, vr20 5697*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr6, vr14, vr20 5698*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr7, vr15, vr20 5699*c0909341SAndroid Build Coastguard Worker 5700*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr0, 6 5701*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr3, vr2, 6 5702*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5703*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr7, vr6, 6 5704*c0909341SAndroid Build Coastguard Worker 5705*c0909341SAndroid Build Coastguard Worker vst vr1, a0, 64 5706*c0909341SAndroid Build Coastguard Worker vst vr3, a0, 80 5707*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 96 5708*c0909341SAndroid Build Coastguard Worker vst vr7, a0, 112 5709*c0909341SAndroid Build Coastguard Worker 5710*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5711*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5712*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 128 5713*c0909341SAndroid Build Coastguard Worker 5714*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W128_LSX 5715*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5716*c0909341SAndroid Build Coastguard Worker 5717*c0909341SAndroid Build Coastguard Worker.BLEND_H_END_LSX: 5718*c0909341SAndroid Build Coastguard Worker 5719*c0909341SAndroid Build Coastguard Workerendfunc 5720*c0909341SAndroid Build Coastguard Worker 5721*c0909341SAndroid Build Coastguard Worker/* 5722*c0909341SAndroid Build Coastguard Worker * static void blend_h_lsx(pixel *dst, const ptrdiff_t dst_stride, const pixel *tmp, 5723*c0909341SAndroid Build Coastguard Worker const int w, int h) 5724*c0909341SAndroid Build Coastguard Worker */ 5725*c0909341SAndroid Build Coastguard Workerfunction blend_h_8bpc_lasx 5726*c0909341SAndroid Build Coastguard Worker la.local t8, obmc_masks_la 5727*c0909341SAndroid Build Coastguard Worker alsl.d t8, a4, t8, 1 5728*c0909341SAndroid Build Coastguard Worker srli.d t0, a4, 1 5729*c0909341SAndroid Build Coastguard Worker srli.d t1, a4, 2 5730*c0909341SAndroid Build Coastguard Worker add.d a4, t0, t1 // h = (h * 3) >> 2; 5731*c0909341SAndroid Build Coastguard Worker slli.d a4, a4, 1 5732*c0909341SAndroid Build Coastguard Worker add.d a4, a4, t8 5733*c0909341SAndroid Build Coastguard Worker 5734*c0909341SAndroid Build Coastguard Worker clz.w t0, a3 5735*c0909341SAndroid Build Coastguard Worker li.w t1, 24 5736*c0909341SAndroid Build Coastguard Worker sub.w t0, t0, t1 5737*c0909341SAndroid Build Coastguard Worker la.local t1, .BLEND_H_LASX_JRTABLE 5738*c0909341SAndroid Build Coastguard Worker alsl.d t0, t0, t1, 1 5739*c0909341SAndroid Build Coastguard Worker ld.h t2, t0, 0 // The jump addresses are relative to JRTABLE 5740*c0909341SAndroid Build Coastguard Worker add.d t1, t1, t2 // Get absolute address 5741*c0909341SAndroid Build Coastguard Worker jirl $r0, t1, 0 5742*c0909341SAndroid Build Coastguard Worker 5743*c0909341SAndroid Build Coastguard Worker .align 3 5744*c0909341SAndroid Build Coastguard Worker.BLEND_H_LASX_JRTABLE: 5745*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W128_LASX - .BLEND_H_LASX_JRTABLE 5746*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W64_LASX - .BLEND_H_LASX_JRTABLE 5747*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W32_LASX - .BLEND_H_LASX_JRTABLE 5748*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W16_LASX - .BLEND_H_LASX_JRTABLE 5749*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W8_LASX - .BLEND_H_LASX_JRTABLE 5750*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W4_LASX - .BLEND_H_LASX_JRTABLE 5751*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_W2_LASX - .BLEND_H_LASX_JRTABLE 5752*c0909341SAndroid Build Coastguard Worker .hword .BLEND_H_END_LASX - .BLEND_H_LASX_JRTABLE //Instructions must be 4-byte aligned 5753*c0909341SAndroid Build Coastguard Worker 5754*c0909341SAndroid Build Coastguard Worker.BLEND_H_W2_LASX: 5755*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5756*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5757*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5758*c0909341SAndroid Build Coastguard Worker 5759*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5760*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5761*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5762*c0909341SAndroid Build Coastguard Worker 5763*c0909341SAndroid Build Coastguard Worker vstelm.h vr1, a0, 0, 0 5764*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5765*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5766*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 2 5767*c0909341SAndroid Build Coastguard Worker 5768*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W2_LASX 5769*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5770*c0909341SAndroid Build Coastguard Worker 5771*c0909341SAndroid Build Coastguard Worker.BLEND_H_W4_LASX: 5772*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5773*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5774*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5775*c0909341SAndroid Build Coastguard Worker 5776*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5777*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5778*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5779*c0909341SAndroid Build Coastguard Worker 5780*c0909341SAndroid Build Coastguard Worker vstelm.w vr1, a0, 0, 0 5781*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5782*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5783*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 4 5784*c0909341SAndroid Build Coastguard Worker 5785*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W4_LASX 5786*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5787*c0909341SAndroid Build Coastguard Worker 5788*c0909341SAndroid Build Coastguard Worker.BLEND_H_W8_LASX: 5789*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5790*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5791*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5792*c0909341SAndroid Build Coastguard Worker 5793*c0909341SAndroid Build Coastguard Worker vilvl.b vr0, vr1, vr0 5794*c0909341SAndroid Build Coastguard Worker vdp2.h.bu vr1, vr0, vr20 5795*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr1, vr1, 6 5796*c0909341SAndroid Build Coastguard Worker 5797*c0909341SAndroid Build Coastguard Worker vstelm.d vr1, a0, 0, 0 5798*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5799*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5800*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 8 5801*c0909341SAndroid Build Coastguard Worker 5802*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W8_LASX 5803*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5804*c0909341SAndroid Build Coastguard Worker 5805*c0909341SAndroid Build Coastguard Worker.BLEND_H_W16_LASX: 5806*c0909341SAndroid Build Coastguard Worker vldrepl.h vr20, t8, 0 5807*c0909341SAndroid Build Coastguard Worker vld vr0, a0, 0 5808*c0909341SAndroid Build Coastguard Worker vld vr1, a2, 0 5809*c0909341SAndroid Build Coastguard Worker 5810*c0909341SAndroid Build Coastguard Worker vilvl.b vr2, vr1, vr0 5811*c0909341SAndroid Build Coastguard Worker vilvh.b vr3, vr1, vr0 5812*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr4, vr2, vr20 5813*c0909341SAndroid Build Coastguard Worker vmulwev.h.bu vr5, vr3, vr20 5814*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr4, vr2, vr20 5815*c0909341SAndroid Build Coastguard Worker vmaddwod.h.bu vr5, vr3, vr20 5816*c0909341SAndroid Build Coastguard Worker vssrarni.bu.h vr5, vr4, 6 5817*c0909341SAndroid Build Coastguard Worker 5818*c0909341SAndroid Build Coastguard Worker vst vr5, a0, 0 5819*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5820*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5821*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 16 5822*c0909341SAndroid Build Coastguard Worker 5823*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W16_LSX 5824*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LSX 5825*c0909341SAndroid Build Coastguard Worker 5826*c0909341SAndroid Build Coastguard Worker.BLEND_H_W32_LASX: 5827*c0909341SAndroid Build Coastguard Worker xvldrepl.h xr20, t8, 0 5828*c0909341SAndroid Build Coastguard Worker 5829*c0909341SAndroid Build Coastguard Worker xvld xr0, a0, 0 5830*c0909341SAndroid Build Coastguard Worker xvld xr1, a2, 0 5831*c0909341SAndroid Build Coastguard Worker 5832*c0909341SAndroid Build Coastguard Worker xvilvl.b xr2, xr1, xr0 5833*c0909341SAndroid Build Coastguard Worker xvilvh.b xr3, xr1, xr0 5834*c0909341SAndroid Build Coastguard Worker 5835*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr4, xr2, xr20 5836*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr5, xr3, xr20 5837*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr4, xr2, xr20 5838*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr5, xr3, xr20 5839*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr5, xr4, 6 5840*c0909341SAndroid Build Coastguard Worker 5841*c0909341SAndroid Build Coastguard Worker xvst xr5, a0, 0 5842*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5843*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5844*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 32 5845*c0909341SAndroid Build Coastguard Worker 5846*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W32_LASX 5847*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5848*c0909341SAndroid Build Coastguard Worker 5849*c0909341SAndroid Build Coastguard Worker.BLEND_H_W64_LASX: 5850*c0909341SAndroid Build Coastguard Worker xvldrepl.h xr20, t8, 0 5851*c0909341SAndroid Build Coastguard Worker 5852*c0909341SAndroid Build Coastguard Worker xvld xr0, a0, 0 5853*c0909341SAndroid Build Coastguard Worker xvld xr1, a0, 32 5854*c0909341SAndroid Build Coastguard Worker xvld xr2, a2, 0 5855*c0909341SAndroid Build Coastguard Worker xvld xr3, a2, 32 5856*c0909341SAndroid Build Coastguard Worker 5857*c0909341SAndroid Build Coastguard Worker xvilvl.b xr4, xr2, xr0 5858*c0909341SAndroid Build Coastguard Worker xvilvh.b xr5, xr2, xr0 5859*c0909341SAndroid Build Coastguard Worker xvilvl.b xr6, xr3, xr1 5860*c0909341SAndroid Build Coastguard Worker xvilvh.b xr7, xr3, xr1 5861*c0909341SAndroid Build Coastguard Worker 5862*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr0, xr4, xr20 5863*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr1, xr5, xr20 5864*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr2, xr6, xr20 5865*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr3, xr7, xr20 5866*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr0, xr4, xr20 5867*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr1, xr5, xr20 5868*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr2, xr6, xr20 5869*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr3, xr7, xr20 5870*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr1, xr0, 6 5871*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr3, xr2, 6 5872*c0909341SAndroid Build Coastguard Worker 5873*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 0 5874*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 32 5875*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5876*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5877*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 64 5878*c0909341SAndroid Build Coastguard Worker 5879*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W64_LASX 5880*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5881*c0909341SAndroid Build Coastguard Worker 5882*c0909341SAndroid Build Coastguard Worker.BLEND_H_W128_LASX: 5883*c0909341SAndroid Build Coastguard Worker xvldrepl.h xr20, t8, 0 5884*c0909341SAndroid Build Coastguard Worker 5885*c0909341SAndroid Build Coastguard Worker xvld xr0, a0, 0 5886*c0909341SAndroid Build Coastguard Worker xvld xr1, a0, 32 5887*c0909341SAndroid Build Coastguard Worker xvld xr2, a0, 64 5888*c0909341SAndroid Build Coastguard Worker xvld xr3, a0, 96 5889*c0909341SAndroid Build Coastguard Worker xvld xr4, a2, 0 5890*c0909341SAndroid Build Coastguard Worker xvld xr5, a2, 32 5891*c0909341SAndroid Build Coastguard Worker xvld xr6, a2, 64 5892*c0909341SAndroid Build Coastguard Worker xvld xr7, a2, 96 5893*c0909341SAndroid Build Coastguard Worker 5894*c0909341SAndroid Build Coastguard Worker xvilvl.b xr8, xr4, xr0 5895*c0909341SAndroid Build Coastguard Worker xvilvh.b xr9, xr4, xr0 5896*c0909341SAndroid Build Coastguard Worker xvilvl.b xr10, xr5, xr1 5897*c0909341SAndroid Build Coastguard Worker xvilvh.b xr11, xr5, xr1 5898*c0909341SAndroid Build Coastguard Worker xvilvl.b xr12, xr6, xr2 5899*c0909341SAndroid Build Coastguard Worker xvilvh.b xr13, xr6, xr2 5900*c0909341SAndroid Build Coastguard Worker xvilvl.b xr14, xr7, xr3 5901*c0909341SAndroid Build Coastguard Worker xvilvh.b xr15, xr7, xr3 5902*c0909341SAndroid Build Coastguard Worker 5903*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr0, xr8, xr20 5904*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr1, xr9, xr20 5905*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr2, xr10, xr20 5906*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr3, xr11, xr20 5907*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr4, xr12, xr20 5908*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr5, xr13, xr20 5909*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr6, xr14, xr20 5910*c0909341SAndroid Build Coastguard Worker xvmulwev.h.bu xr7, xr15, xr20 5911*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr0, xr8, xr20 5912*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr1, xr9, xr20 5913*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr2, xr10, xr20 5914*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr3, xr11, xr20 5915*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr4, xr12, xr20 5916*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr5, xr13, xr20 5917*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr6, xr14, xr20 5918*c0909341SAndroid Build Coastguard Worker xvmaddwod.h.bu xr7, xr15, xr20 5919*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr1, xr0, 6 5920*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr3, xr2, 6 5921*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr5, xr4, 6 5922*c0909341SAndroid Build Coastguard Worker xvssrarni.bu.h xr7, xr6, 6 5923*c0909341SAndroid Build Coastguard Worker 5924*c0909341SAndroid Build Coastguard Worker xvst xr1, a0, 0 5925*c0909341SAndroid Build Coastguard Worker xvst xr3, a0, 32 5926*c0909341SAndroid Build Coastguard Worker xvst xr5, a0, 64 5927*c0909341SAndroid Build Coastguard Worker xvst xr7, a0, 96 5928*c0909341SAndroid Build Coastguard Worker addi.d t8, t8, 2 5929*c0909341SAndroid Build Coastguard Worker add.d a0, a0, a1 5930*c0909341SAndroid Build Coastguard Worker addi.d a2, a2, 128 5931*c0909341SAndroid Build Coastguard Worker 5932*c0909341SAndroid Build Coastguard Worker blt t8, a4, .BLEND_H_W128_LASX 5933*c0909341SAndroid Build Coastguard Worker b .BLEND_H_END_LASX 5934*c0909341SAndroid Build Coastguard Worker 5935*c0909341SAndroid Build Coastguard Worker.BLEND_H_END_LASX: 5936*c0909341SAndroid Build Coastguard Worker 5937*c0909341SAndroid Build Coastguard Workerendfunc 5938*c0909341SAndroid Build Coastguard Worker 5939*c0909341SAndroid Build Coastguard Worker/* 5940*c0909341SAndroid Build Coastguard Worker * a1=16 | a2=8 | a3=4 5941*c0909341SAndroid Build Coastguard Worker * temp reg: a4 5942*c0909341SAndroid Build Coastguard Worker */ 5943*c0909341SAndroid Build Coastguard Worker.macro PIXEL_COPY_LSX _dst, _src, _size 5944*c0909341SAndroid Build Coastguard Worker blt \_size, a1, 8f 5945*c0909341SAndroid Build Coastguard Worker16: 5946*c0909341SAndroid Build Coastguard Worker vld vr0, \_src, 0 5947*c0909341SAndroid Build Coastguard Worker vst vr0, \_dst, 0 5948*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -16 5949*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 16 5950*c0909341SAndroid Build Coastguard Worker addi.d \_src, \_src, 16 5951*c0909341SAndroid Build Coastguard Worker blt a1, \_size, 16b 5952*c0909341SAndroid Build Coastguard Worker8: 5953*c0909341SAndroid Build Coastguard Worker blt \_size, a2, 14f 5954*c0909341SAndroid Build Coastguard Worker ld.d a4, \_src, 0 5955*c0909341SAndroid Build Coastguard Worker st.d a4, \_dst, 0 5956*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -8 5957*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 8 5958*c0909341SAndroid Build Coastguard Worker addi.d \_src, \_src, 8 5959*c0909341SAndroid Build Coastguard Worker14: 5960*c0909341SAndroid Build Coastguard Worker blt \_size, a3, 11f 5961*c0909341SAndroid Build Coastguard Worker ld.w a4, \_src, 0 5962*c0909341SAndroid Build Coastguard Worker st.w a4, \_dst, 0 5963*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -4 5964*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 4 5965*c0909341SAndroid Build Coastguard Worker addi.d \_src, \_src, 4 5966*c0909341SAndroid Build Coastguard Worker11: 5967*c0909341SAndroid Build Coastguard Worker beqz \_size, 110f 5968*c0909341SAndroid Build Coastguard Worker111: 5969*c0909341SAndroid Build Coastguard Worker ld.b a4, \_src, 0 5970*c0909341SAndroid Build Coastguard Worker st.b a4, \_dst, 0 5971*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -1 5972*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 1 5973*c0909341SAndroid Build Coastguard Worker addi.d \_src, \_src, 1 5974*c0909341SAndroid Build Coastguard Worker bnez \_size, 111b 5975*c0909341SAndroid Build Coastguard Worker110: 5976*c0909341SAndroid Build Coastguard Worker.endm 5977*c0909341SAndroid Build Coastguard Worker 5978*c0909341SAndroid Build Coastguard Worker/* 5979*c0909341SAndroid Build Coastguard Worker * a1=16 | a2=8 | a3=4 5980*c0909341SAndroid Build Coastguard Worker */ 5981*c0909341SAndroid Build Coastguard Worker.macro PIXEL_SET_LSX _dst, _vsrc, _size 5982*c0909341SAndroid Build Coastguard Worker blt \_size, a1, 8f 5983*c0909341SAndroid Build Coastguard Worker16: 5984*c0909341SAndroid Build Coastguard Worker vst \_vsrc, \_dst, 0 5985*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -16 5986*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 16 5987*c0909341SAndroid Build Coastguard Worker blt a1, \_size, 16b 5988*c0909341SAndroid Build Coastguard Worker8: 5989*c0909341SAndroid Build Coastguard Worker blt \_size, a2, 14f 5990*c0909341SAndroid Build Coastguard Worker vstelm.d \_vsrc, \_dst, 0, 0 5991*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -8 5992*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 8 5993*c0909341SAndroid Build Coastguard Worker14: 5994*c0909341SAndroid Build Coastguard Worker blt \_size, a3, 11f 5995*c0909341SAndroid Build Coastguard Worker vstelm.w \_vsrc, \_dst, 0, 0 5996*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -4 5997*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 4 5998*c0909341SAndroid Build Coastguard Worker11: 5999*c0909341SAndroid Build Coastguard Worker beqz \_size, 110f 6000*c0909341SAndroid Build Coastguard Worker111: 6001*c0909341SAndroid Build Coastguard Worker vstelm.b \_vsrc, \_dst, 0, 0 6002*c0909341SAndroid Build Coastguard Worker addi.d \_size, \_size, -1 6003*c0909341SAndroid Build Coastguard Worker addi.d \_dst, \_dst, 1 6004*c0909341SAndroid Build Coastguard Worker bnez \_size, 111b 6005*c0909341SAndroid Build Coastguard Worker110: 6006*c0909341SAndroid Build Coastguard Worker.endm 6007*c0909341SAndroid Build Coastguard Worker 6008*c0909341SAndroid Build Coastguard Worker/* 6009*c0909341SAndroid Build Coastguard Worker * temp reg: a4 a5 t2 t3 vr0 6010*c0909341SAndroid Build Coastguard Worker */ 6011*c0909341SAndroid Build Coastguard Worker.macro DEGE_LOOP need_left, need_right 6012*c0909341SAndroid Build Coastguard Worker0: 6013*c0909341SAndroid Build Coastguard Worker addi.d t2, t6, 0 // dst 6014*c0909341SAndroid Build Coastguard Worker addi.d t3, t7, 0 // src 6015*c0909341SAndroid Build Coastguard Worker.if \need_left 6016*c0909341SAndroid Build Coastguard Worker vldrepl.b vr0, t3, 0 6017*c0909341SAndroid Build Coastguard Worker addi.d a5, t0, 0 6018*c0909341SAndroid Build Coastguard Worker PIXEL_SET_LSX t2, vr0, a5 6019*c0909341SAndroid Build Coastguard Worker.endif 6020*c0909341SAndroid Build Coastguard Worker 6021*c0909341SAndroid Build Coastguard Worker addi.d a5, t4, 0 6022*c0909341SAndroid Build Coastguard Worker PIXEL_COPY_LSX t2, t3, a5 6023*c0909341SAndroid Build Coastguard Worker 6024*c0909341SAndroid Build Coastguard Worker.if \need_right 6025*c0909341SAndroid Build Coastguard Worker vldrepl.b vr0, t3, -1 6026*c0909341SAndroid Build Coastguard Worker addi.d a5, t1, 0 6027*c0909341SAndroid Build Coastguard Worker PIXEL_SET_LSX t2, vr0, a5 6028*c0909341SAndroid Build Coastguard Worker.endif 6029*c0909341SAndroid Build Coastguard Worker 6030*c0909341SAndroid Build Coastguard Worker addi.d t5, t5, -1 6031*c0909341SAndroid Build Coastguard Worker add.d t7, t7, t8 6032*c0909341SAndroid Build Coastguard Worker add.d t6, t6, a7 6033*c0909341SAndroid Build Coastguard Worker bnez t5, 0b 6034*c0909341SAndroid Build Coastguard Worker.endm 6035*c0909341SAndroid Build Coastguard Worker 6036*c0909341SAndroid Build Coastguard Worker/* 6037*c0909341SAndroid Build Coastguard Worker * static void emu_edge_c(const intptr_t bw, const intptr_t bh, 6038*c0909341SAndroid Build Coastguard Worker * const intptr_t iw, const intptr_t ih, 6039*c0909341SAndroid Build Coastguard Worker * const intptr_t x, const intptr_t y, 6040*c0909341SAndroid Build Coastguard Worker * pixel *dst, const ptrdiff_t dst_stride, 6041*c0909341SAndroid Build Coastguard Worker * const pixel *ref, const ptrdiff_t ref_stride) 6042*c0909341SAndroid Build Coastguard Worker */ 6043*c0909341SAndroid Build Coastguard Workerfunction emu_edge_8bpc_lsx 6044*c0909341SAndroid Build Coastguard Worker vxor.v vr23, vr23, vr23 // zero 6045*c0909341SAndroid Build Coastguard Worker addi.d t0, a3, -1 // ih - 1 6046*c0909341SAndroid Build Coastguard Worker addi.d t1, a2, -1 // iw - 1 6047*c0909341SAndroid Build Coastguard Worker vreplgr2vr.w vr22, t0 6048*c0909341SAndroid Build Coastguard Worker vinsgr2vr.w vr22, t1, 1 6049*c0909341SAndroid Build Coastguard Worker vreplgr2vr.w vr0, a5 6050*c0909341SAndroid Build Coastguard Worker vinsgr2vr.w vr0, a4, 1 // [0] - h | [1] - w 6051*c0909341SAndroid Build Coastguard Worker 6052*c0909341SAndroid Build Coastguard Worker vclip.w vr2, vr0, vr23, vr22 6053*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t0, vr2, 0 6054*c0909341SAndroid Build Coastguard Worker ld.d t2, sp, 0 6055*c0909341SAndroid Build Coastguard Worker ld.d t8, sp, 8 // ref_stride 6056*c0909341SAndroid Build Coastguard Worker mul.w t0, t0, t8 6057*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t1, vr2, 1 6058*c0909341SAndroid Build Coastguard Worker add.d t2, t2, t1 6059*c0909341SAndroid Build Coastguard Worker add.d t7, t0, t2 // ref 6060*c0909341SAndroid Build Coastguard Worker 6061*c0909341SAndroid Build Coastguard Worker addi.d t0, a0, -1 // bw - 1 6062*c0909341SAndroid Build Coastguard Worker addi.d t1, a1, -1 // bh - 1 6063*c0909341SAndroid Build Coastguard Worker vreplgr2vr.w vr21, t0 6064*c0909341SAndroid Build Coastguard Worker vreplgr2vr.w vr22, t1 6065*c0909341SAndroid Build Coastguard Worker vilvl.d vr21, vr22, vr21 6066*c0909341SAndroid Build Coastguard Worker sub.d t2, zero, a4 // -x 6067*c0909341SAndroid Build Coastguard Worker add.d t3, a0, a4 6068*c0909341SAndroid Build Coastguard Worker sub.d t3, t3, a2 // x + bw - iw 6069*c0909341SAndroid Build Coastguard Worker sub.d t4, zero, a5 // -y 6070*c0909341SAndroid Build Coastguard Worker add.d t5, a1, a5 6071*c0909341SAndroid Build Coastguard Worker sub.d t5, t5, a3 // y + bh - ih 6072*c0909341SAndroid Build Coastguard Worker vreplgr2vr.w vr0, t2 6073*c0909341SAndroid Build Coastguard Worker vinsgr2vr.w vr0, t3, 1 6074*c0909341SAndroid Build Coastguard Worker vinsgr2vr.w vr0, t4, 2 6075*c0909341SAndroid Build Coastguard Worker vinsgr2vr.w vr0, t5, 3 6076*c0909341SAndroid Build Coastguard Worker vclip.w vr2, vr0, vr23, vr21 6077*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t0, vr2, 0 // left_ext 6078*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t1, vr2, 1 // right_ext 6079*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t2, vr2, 2 // top_ext 6080*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t3, vr2, 3 // bottom_ext 6081*c0909341SAndroid Build Coastguard Worker 6082*c0909341SAndroid Build Coastguard Worker mul.w t6, t2, a7 6083*c0909341SAndroid Build Coastguard Worker add.d t4, t0, t1 6084*c0909341SAndroid Build Coastguard Worker add.d t5, t2, t3 6085*c0909341SAndroid Build Coastguard Worker sub.d t4, a0, t4 // center_w 6086*c0909341SAndroid Build Coastguard Worker sub.d t5, a1, t5 // center_h 6087*c0909341SAndroid Build Coastguard Worker 6088*c0909341SAndroid Build Coastguard Worker addi.d a1, zero, 16 6089*c0909341SAndroid Build Coastguard Worker addi.d a2, zero, 8 6090*c0909341SAndroid Build Coastguard Worker addi.d a3, zero, 4 6091*c0909341SAndroid Build Coastguard Worker add.d t6, t6, a6 // blk 6092*c0909341SAndroid Build Coastguard Worker 6093*c0909341SAndroid Build Coastguard Worker beqz t0, 2f 6094*c0909341SAndroid Build Coastguard Worker // need_left 6095*c0909341SAndroid Build Coastguard Worker beqz t1, 3f 6096*c0909341SAndroid Build Coastguard Worker // need_left + need_right 6097*c0909341SAndroid Build Coastguard Worker DEGE_LOOP 1, 1 6098*c0909341SAndroid Build Coastguard Worker b 5f 6099*c0909341SAndroid Build Coastguard Worker 6100*c0909341SAndroid Build Coastguard Worker2: 6101*c0909341SAndroid Build Coastguard Worker // !need_left 6102*c0909341SAndroid Build Coastguard Worker beqz t1, 4f 6103*c0909341SAndroid Build Coastguard Worker // !need_left + need_right 6104*c0909341SAndroid Build Coastguard Worker DEGE_LOOP 0, 1 6105*c0909341SAndroid Build Coastguard Worker b 5f 6106*c0909341SAndroid Build Coastguard Worker 6107*c0909341SAndroid Build Coastguard Worker3: 6108*c0909341SAndroid Build Coastguard Worker // need_left + !need_right 6109*c0909341SAndroid Build Coastguard Worker DEGE_LOOP 1, 0 6110*c0909341SAndroid Build Coastguard Worker b 5f 6111*c0909341SAndroid Build Coastguard Worker 6112*c0909341SAndroid Build Coastguard Worker4: 6113*c0909341SAndroid Build Coastguard Worker // !need_left + !need_right 6114*c0909341SAndroid Build Coastguard Worker DEGE_LOOP 0, 0 6115*c0909341SAndroid Build Coastguard Worker 6116*c0909341SAndroid Build Coastguard Worker5: 6117*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t2, vr2, 2 // top_ext 6118*c0909341SAndroid Build Coastguard Worker vpickve2gr.w t3, vr2, 3 // bottom_ext 6119*c0909341SAndroid Build Coastguard Worker sub.d t7, a7, a0 // dst_stride - bw 6120*c0909341SAndroid Build Coastguard Worker mul.w t8, t2, a7 6121*c0909341SAndroid Build Coastguard Worker 6122*c0909341SAndroid Build Coastguard Worker beqz t3, 2f 6123*c0909341SAndroid Build Coastguard Worker // need_bottom 6124*c0909341SAndroid Build Coastguard Worker sub.d t0, t6, a7 // &dst[-PXSTRIDE(dst_stride)] 6125*c0909341SAndroid Build Coastguard Worker1: 6126*c0909341SAndroid Build Coastguard Worker addi.d t1, t0, 0 6127*c0909341SAndroid Build Coastguard Worker addi.d a5, a0, 0 6128*c0909341SAndroid Build Coastguard Worker PIXEL_COPY_LSX t6, t1, a5 6129*c0909341SAndroid Build Coastguard Worker add.d t6, t6, t7 6130*c0909341SAndroid Build Coastguard Worker addi.d t3, t3, -1 6131*c0909341SAndroid Build Coastguard Worker bnez t3, 1b 6132*c0909341SAndroid Build Coastguard Worker2: 6133*c0909341SAndroid Build Coastguard Worker beqz t2, 3f 6134*c0909341SAndroid Build Coastguard Worker // need_top 6135*c0909341SAndroid Build Coastguard Worker add.d t8, t8, a6 // blk 6136*c0909341SAndroid Build Coastguard Worker1: 6137*c0909341SAndroid Build Coastguard Worker addi.d t1, t8, 0 6138*c0909341SAndroid Build Coastguard Worker addi.d a5, a0, 0 6139*c0909341SAndroid Build Coastguard Worker PIXEL_COPY_LSX a6, t1, a5 6140*c0909341SAndroid Build Coastguard Worker add.d a6, a6, t7 6141*c0909341SAndroid Build Coastguard Worker addi.d t2, t2, -1 6142*c0909341SAndroid Build Coastguard Worker bnez t2, 1b 6143*c0909341SAndroid Build Coastguard Worker3: 6144*c0909341SAndroid Build Coastguard Worker 6145*c0909341SAndroid Build Coastguard Workerendfunc 6146