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