1*c0909341SAndroid Build Coastguard Worker/****************************************************************************** 2*c0909341SAndroid Build Coastguard Worker * Copyright © 2018, VideoLAN and dav1d authors 3*c0909341SAndroid Build Coastguard Worker * Copyright © 2023, Nathan Egge 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/riscv/asm.S" 29*c0909341SAndroid Build Coastguard Worker 30*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_4x4_rvv, export=1, ext=v 31*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 32*c0909341SAndroid Build Coastguard Worker 33*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 34*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 35*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 36*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 37*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 38*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 39*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 40*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 41*c0909341SAndroid Build Coastguard Worker 42*c0909341SAndroid Build Coastguard Worker jalr t0, a4 43*c0909341SAndroid Build Coastguard Worker 44*c0909341SAndroid Build Coastguard Worker vmv.v.x v4, zero 45*c0909341SAndroid Build Coastguard Worker 46*c0909341SAndroid Build Coastguard Worker vsseg4e16.v v0, (a2) 47*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 48*c0909341SAndroid Build Coastguard Worker vse16.v v4, (a2) 49*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 50*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 51*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 52*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 53*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 54*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 55*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 56*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 57*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 58*c0909341SAndroid Build Coastguard Worker 59*c0909341SAndroid Build Coastguard Worker jalr t0, a5 60*c0909341SAndroid Build Coastguard Worker 61*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 62*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 4 63*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 4 64*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 4 65*c0909341SAndroid Build Coastguard Worker 66*c0909341SAndroid Build Coastguard Workeritx_4x4_end: 67*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 68*c0909341SAndroid Build Coastguard Worker vle8.v v4, (a0) 69*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 70*c0909341SAndroid Build Coastguard Worker vle8.v v5, (t0) 71*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 72*c0909341SAndroid Build Coastguard Worker vle8.v v6, (t0) 73*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 74*c0909341SAndroid Build Coastguard Worker vle8.v v7, (t0) 75*c0909341SAndroid Build Coastguard Worker 76*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v4 77*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v5 78*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v6 79*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v7 80*c0909341SAndroid Build Coastguard Worker 81*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, mf2, ta, ma 82*c0909341SAndroid Build Coastguard Worker vmax.vx v0, v0, zero 83*c0909341SAndroid Build Coastguard Worker vmax.vx v1, v1, zero 84*c0909341SAndroid Build Coastguard Worker vmax.vx v2, v2, zero 85*c0909341SAndroid Build Coastguard Worker vmax.vx v3, v3, zero 86*c0909341SAndroid Build Coastguard Worker 87*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 88*c0909341SAndroid Build Coastguard Worker 89*c0909341SAndroid Build Coastguard Worker vnclipu.wi v4, v0, 0 90*c0909341SAndroid Build Coastguard Worker vnclipu.wi v5, v1, 0 91*c0909341SAndroid Build Coastguard Worker vnclipu.wi v6, v2, 0 92*c0909341SAndroid Build Coastguard Worker vnclipu.wi v7, v3, 0 93*c0909341SAndroid Build Coastguard Worker 94*c0909341SAndroid Build Coastguard Worker vse8.v v4, (a0) 95*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 96*c0909341SAndroid Build Coastguard Worker vse8.v v5, (a0) 97*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 98*c0909341SAndroid Build Coastguard Worker vse8.v v6, (a0) 99*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 100*c0909341SAndroid Build Coastguard Worker vse8.v v7, (a0) 101*c0909341SAndroid Build Coastguard Worker 102*c0909341SAndroid Build Coastguard Worker ret 103*c0909341SAndroid Build Coastguard Workerendfunc 104*c0909341SAndroid Build Coastguard Worker 105*c0909341SAndroid Build Coastguard Workerfunction inv_identity_e16_x4_rvv, export=1, ext=v 106*c0909341SAndroid Build Coastguard Worker li t1, (5793-4096)*8 107*c0909341SAndroid Build Coastguard Worker vsmul.vx v4, v0, t1 108*c0909341SAndroid Build Coastguard Worker vsmul.vx v5, v1, t1 109*c0909341SAndroid Build Coastguard Worker vsmul.vx v6, v2, t1 110*c0909341SAndroid Build Coastguard Worker vsmul.vx v7, v3, t1 111*c0909341SAndroid Build Coastguard Worker 112*c0909341SAndroid Build Coastguard Worker vsadd.vv v0, v0, v4 113*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v1, v5 114*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v2, v6 115*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v3, v7 116*c0909341SAndroid Build Coastguard Worker 117*c0909341SAndroid Build Coastguard Worker jr t0 118*c0909341SAndroid Build Coastguard Workerendfunc 119*c0909341SAndroid Build Coastguard Worker 120*c0909341SAndroid Build Coastguard Worker.macro iwht_4 121*c0909341SAndroid Build Coastguard Worker vadd.vv v0, v0, v1 122*c0909341SAndroid Build Coastguard Worker vsub.vv v5, v2, v3 123*c0909341SAndroid Build Coastguard Worker vsub.vv v4, v0, v5 124*c0909341SAndroid Build Coastguard Worker vsra.vi v4, v4, 1 125*c0909341SAndroid Build Coastguard Worker vsub.vv v2, v4, v1 126*c0909341SAndroid Build Coastguard Worker vsub.vv v1, v4, v3 127*c0909341SAndroid Build Coastguard Worker vadd.vv v3, v5, v2 128*c0909341SAndroid Build Coastguard Worker vsub.vv v0, v0, v1 129*c0909341SAndroid Build Coastguard Worker.endm 130*c0909341SAndroid Build Coastguard Worker 131*c0909341SAndroid Build Coastguard Worker.macro idct_4 o0, o1, o2, o3 132*c0909341SAndroid Build Coastguard Worker li t1, 2896 133*c0909341SAndroid Build Coastguard Worker li t2, 1567 134*c0909341SAndroid Build Coastguard Worker li t3, 3784 135*c0909341SAndroid Build Coastguard Worker 136*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, \o0, t1 137*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, \o0, t1 138*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t1, \o2 139*c0909341SAndroid Build Coastguard Worker neg t1, t1 140*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t1, \o2 141*c0909341SAndroid Build Coastguard Worker 142*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, \o1, t3 143*c0909341SAndroid Build Coastguard Worker neg t3, t3 144*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, \o1, t2 145*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t2, \o3 146*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t3, \o3 147*c0909341SAndroid Build Coastguard Worker 148*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 149*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 150*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 151*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 152*c0909341SAndroid Build Coastguard Worker 153*c0909341SAndroid Build Coastguard Worker vsadd.vv \o0, v16, v20 154*c0909341SAndroid Build Coastguard Worker vsadd.vv \o1, v18, v22 155*c0909341SAndroid Build Coastguard Worker vssub.vv \o2, v18, v22 156*c0909341SAndroid Build Coastguard Worker vssub.vv \o3, v16, v20 157*c0909341SAndroid Build Coastguard Worker.endm 158*c0909341SAndroid Build Coastguard Worker 159*c0909341SAndroid Build Coastguard Worker.macro iadst_4 o0, o1, o2, o3, lm2, lm 160*c0909341SAndroid Build Coastguard Worker li t1, 1321 161*c0909341SAndroid Build Coastguard Worker li t2, 3803 162*c0909341SAndroid Build Coastguard Worker li t3, 2482 163*c0909341SAndroid Build Coastguard Worker 164*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v0, t1 165*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v0, t3 166*c0909341SAndroid Build Coastguard Worker neg t1, t1 167*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v2 168*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t1, v2 169*c0909341SAndroid Build Coastguard Worker neg t2, t2 170*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t3, v3 171*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t2, v3 172*c0909341SAndroid Build Coastguard Worker 173*c0909341SAndroid Build Coastguard Worker vwsub.vv v20, v0, v2 174*c0909341SAndroid Build Coastguard Worker vwadd.wv v20, v20, v3 175*c0909341SAndroid Build Coastguard Worker 176*c0909341SAndroid Build Coastguard Worker li t1, 3344 177*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v1, t1 178*c0909341SAndroid Build Coastguard Worker 179*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e32, \lm2, ta, ma 180*c0909341SAndroid Build Coastguard Worker 181*c0909341SAndroid Build Coastguard Worker vmul.vx v20, v20, t1 182*c0909341SAndroid Build Coastguard Worker 183*c0909341SAndroid Build Coastguard Worker vadd.vv v24, v16, v18 184*c0909341SAndroid Build Coastguard Worker vadd.vv v16, v16, v22 185*c0909341SAndroid Build Coastguard Worker vadd.vv v18, v18, v22 186*c0909341SAndroid Build Coastguard Worker vsub.vv v22, v24, v22 187*c0909341SAndroid Build Coastguard Worker 188*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, \lm, ta, ma 189*c0909341SAndroid Build Coastguard Worker 190*c0909341SAndroid Build Coastguard Worker vnclip.wi \o0, v16, 12 191*c0909341SAndroid Build Coastguard Worker vnclip.wi \o1, v18, 12 192*c0909341SAndroid Build Coastguard Worker vnclip.wi \o2, v20, 12 193*c0909341SAndroid Build Coastguard Worker vnclip.wi \o3, v22, 12 194*c0909341SAndroid Build Coastguard Worker.endm 195*c0909341SAndroid Build Coastguard Worker 196*c0909341SAndroid Build Coastguard Workerfunction inv_dct_e16_x4_rvv, export=1, ext=v 197*c0909341SAndroid Build Coastguard Worker idct_4 v0, v1, v2, v3 198*c0909341SAndroid Build Coastguard Worker jr t0 199*c0909341SAndroid Build Coastguard Workerendfunc 200*c0909341SAndroid Build Coastguard Worker 201*c0909341SAndroid Build Coastguard Workerfunction inv_adst_e16_x4_rvv, export=1, ext=v 202*c0909341SAndroid Build Coastguard Worker iadst_4 v0, v1, v2, v3, m1, mf2 203*c0909341SAndroid Build Coastguard Worker jr t0 204*c0909341SAndroid Build Coastguard Workerendfunc 205*c0909341SAndroid Build Coastguard Worker 206*c0909341SAndroid Build Coastguard Workerfunction inv_flipadst_e16_x4_rvv, export=1, ext=v 207*c0909341SAndroid Build Coastguard Worker iadst_4 v3, v2, v1, v0, m1, mf2 208*c0909341SAndroid Build Coastguard Worker jr t0 209*c0909341SAndroid Build Coastguard Workerendfunc 210*c0909341SAndroid Build Coastguard Worker 211*c0909341SAndroid Build Coastguard Workerfunction inv_adst_e16_x4w_rvv, export=1, ext=v 212*c0909341SAndroid Build Coastguard Worker iadst_4 v0, v1, v2, v3, m2, m1 213*c0909341SAndroid Build Coastguard Worker jr t0 214*c0909341SAndroid Build Coastguard Workerendfunc 215*c0909341SAndroid Build Coastguard Worker 216*c0909341SAndroid Build Coastguard Workerfunction inv_flipadst_e16_x4w_rvv, export=1, ext=v 217*c0909341SAndroid Build Coastguard Worker iadst_4 v3, v2, v1, v0, m2, m1 218*c0909341SAndroid Build Coastguard Worker jr t0 219*c0909341SAndroid Build Coastguard Workerendfunc 220*c0909341SAndroid Build Coastguard Worker 221*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_wht_wht_4x4_8bpc_rvv, export=1, ext=v 222*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 223*c0909341SAndroid Build Coastguard Worker 224*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 225*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 226*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 227*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 228*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 229*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 230*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 231*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 232*c0909341SAndroid Build Coastguard Worker 233*c0909341SAndroid Build Coastguard Worker vsra.vi v0, v0, 2 234*c0909341SAndroid Build Coastguard Worker vsra.vi v1, v1, 2 235*c0909341SAndroid Build Coastguard Worker vsra.vi v2, v2, 2 236*c0909341SAndroid Build Coastguard Worker vsra.vi v3, v3, 2 237*c0909341SAndroid Build Coastguard Worker 238*c0909341SAndroid Build Coastguard Worker iwht_4 239*c0909341SAndroid Build Coastguard Worker 240*c0909341SAndroid Build Coastguard Worker vmv.v.x v4, zero 241*c0909341SAndroid Build Coastguard Worker 242*c0909341SAndroid Build Coastguard Worker vsseg4e16.v v0, (a2) 243*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 244*c0909341SAndroid Build Coastguard Worker vse16.v v4, (a2) 245*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 246*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 247*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 248*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 249*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 250*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 251*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 252*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 253*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 254*c0909341SAndroid Build Coastguard Worker 255*c0909341SAndroid Build Coastguard Worker iwht_4 256*c0909341SAndroid Build Coastguard Worker 257*c0909341SAndroid Build Coastguard Worker j itx_4x4_end 258*c0909341SAndroid Build Coastguard Workerendfunc 259*c0909341SAndroid Build Coastguard Worker 260*c0909341SAndroid Build Coastguard Worker.macro def_fn_4x4 txfm1, txfm2 261*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_4x4_8bpc_rvv, export=1, ext=v 262*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 263*c0909341SAndroid Build Coastguard Worker beqz a3, 1f 264*c0909341SAndroid Build Coastguard Worker.endif 265*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x4_rvv 266*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x4_rvv 267*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_4x4_rvv 268*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 269*c0909341SAndroid Build Coastguard Worker1: 270*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 271*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 272*c0909341SAndroid Build Coastguard Worker ld t2, (a2) 273*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 274*c0909341SAndroid Build Coastguard Worker vmv.v.x v0, t2 275*c0909341SAndroid Build Coastguard Worker vsmul.vx v0, v0, t1 276*c0909341SAndroid Build Coastguard Worker sd x0, (a2) 277*c0909341SAndroid Build Coastguard Worker vsmul.vx v0, v0, t1 278*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 279*c0909341SAndroid Build Coastguard Worker vmv.v.v v1, v0 280*c0909341SAndroid Build Coastguard Worker vmv.v.v v2, v0 281*c0909341SAndroid Build Coastguard Worker vmv.v.v v3, v0 282*c0909341SAndroid Build Coastguard Worker j itx_4x4_end 283*c0909341SAndroid Build Coastguard Worker.endif 284*c0909341SAndroid Build Coastguard Workerendfunc 285*c0909341SAndroid Build Coastguard Worker.endm 286*c0909341SAndroid Build Coastguard Worker 287*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 dct, dct 288*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 identity, identity 289*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 dct, adst 290*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 dct, flipadst 291*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 dct, identity 292*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 adst, dct 293*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 adst, adst 294*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 adst, flipadst 295*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 flipadst, dct 296*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 flipadst, adst 297*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 flipadst, flipadst 298*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 identity, dct 299*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 adst, identity 300*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 flipadst, identity 301*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 identity, adst 302*c0909341SAndroid Build Coastguard Workerdef_fn_4x4 identity, flipadst 303*c0909341SAndroid Build Coastguard Worker 304*c0909341SAndroid Build Coastguard Worker.macro def_fn_8x8_base variant 305*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_\variant\()add_8x8_rvv, export=1, ext=v 306*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 307*c0909341SAndroid Build Coastguard Worker 308*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 309*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 310*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 311*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 312*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 313*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 314*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 315*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 316*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 317*c0909341SAndroid Build Coastguard Worker vle16.v v4, (t0) 318*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 319*c0909341SAndroid Build Coastguard Worker vle16.v v5, (t0) 320*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 321*c0909341SAndroid Build Coastguard Worker vle16.v v6, (t0) 322*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 323*c0909341SAndroid Build Coastguard Worker vle16.v v7, (t0) 324*c0909341SAndroid Build Coastguard Worker 325*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 326*c0909341SAndroid Build Coastguard Worker // The identity vsadd.vv and downshift vssra.vi 1 cancel out 327*c0909341SAndroid Build Coastguard Worker 328*c0909341SAndroid Build Coastguard Worker j L(itx_8x8_epilog) 329*c0909341SAndroid Build Coastguard Worker.else 330*c0909341SAndroid Build Coastguard Worker jalr t0, a4 331*c0909341SAndroid Build Coastguard Worker 332*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 1 333*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 1 334*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 1 335*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 1 336*c0909341SAndroid Build Coastguard Worker vssra.vi v4, v4, 1 337*c0909341SAndroid Build Coastguard Worker vssra.vi v5, v5, 1 338*c0909341SAndroid Build Coastguard Worker vssra.vi v6, v6, 1 339*c0909341SAndroid Build Coastguard Worker vssra.vi v7, v7, 1 340*c0909341SAndroid Build Coastguard Worker 341*c0909341SAndroid Build Coastguard WorkerL(itx_8x8_epilog): 342*c0909341SAndroid Build Coastguard Worker vsseg8e16.v v0, (a2) 343*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 344*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 345*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 346*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 347*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 348*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 349*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 350*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 351*c0909341SAndroid Build Coastguard Worker vle16.v v4, (t0) 352*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 353*c0909341SAndroid Build Coastguard Worker vle16.v v5, (t0) 354*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 355*c0909341SAndroid Build Coastguard Worker vle16.v v6, (t0) 356*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 357*c0909341SAndroid Build Coastguard Worker vle16.v v7, (t0) 358*c0909341SAndroid Build Coastguard Worker 359*c0909341SAndroid Build Coastguard Worker jalr t0, a5 360*c0909341SAndroid Build Coastguard Worker 361*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 362*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 4 363*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 4 364*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 4 365*c0909341SAndroid Build Coastguard Worker vssra.vi v4, v4, 4 366*c0909341SAndroid Build Coastguard Worker vssra.vi v5, v5, 4 367*c0909341SAndroid Build Coastguard Worker vssra.vi v6, v6, 4 368*c0909341SAndroid Build Coastguard Worker vssra.vi v7, v7, 4 369*c0909341SAndroid Build Coastguard Worker 370*c0909341SAndroid Build Coastguard Worker li t1, 64 371*c0909341SAndroid Build Coastguard Worker vsetvli zero, t1, e16, m8, ta, ma 372*c0909341SAndroid Build Coastguard Worker vmv.v.x v8, zero 373*c0909341SAndroid Build Coastguard Worker vse16.v v8, (a2) 374*c0909341SAndroid Build Coastguard Worker 375*c0909341SAndroid Build Coastguard Workeritx_8x8_end: 376*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e8, mf2, ta, ma 377*c0909341SAndroid Build Coastguard Worker vle8.v v8, (a0) 378*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 379*c0909341SAndroid Build Coastguard Worker vle8.v v9, (t0) 380*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 381*c0909341SAndroid Build Coastguard Worker vle8.v v10, (t0) 382*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 383*c0909341SAndroid Build Coastguard Worker vle8.v v11, (t0) 384*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 385*c0909341SAndroid Build Coastguard Worker vle8.v v12, (t0) 386*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 387*c0909341SAndroid Build Coastguard Worker vle8.v v13, (t0) 388*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 389*c0909341SAndroid Build Coastguard Worker vle8.v v14, (t0) 390*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 391*c0909341SAndroid Build Coastguard Worker vle8.v v15, (t0) 392*c0909341SAndroid Build Coastguard Worker 393*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v8 394*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v9 395*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v10 396*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v11 397*c0909341SAndroid Build Coastguard Worker vwaddu.wv v4, v4, v12 398*c0909341SAndroid Build Coastguard Worker vwaddu.wv v5, v5, v13 399*c0909341SAndroid Build Coastguard Worker vwaddu.wv v6, v6, v14 400*c0909341SAndroid Build Coastguard Worker vwaddu.wv v7, v7, v15 401*c0909341SAndroid Build Coastguard Worker 402*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m1, ta, ma 403*c0909341SAndroid Build Coastguard Worker vmax.vx v0, v0, zero 404*c0909341SAndroid Build Coastguard Worker vmax.vx v1, v1, zero 405*c0909341SAndroid Build Coastguard Worker vmax.vx v2, v2, zero 406*c0909341SAndroid Build Coastguard Worker vmax.vx v3, v3, zero 407*c0909341SAndroid Build Coastguard Worker vmax.vx v4, v4, zero 408*c0909341SAndroid Build Coastguard Worker vmax.vx v5, v5, zero 409*c0909341SAndroid Build Coastguard Worker vmax.vx v6, v6, zero 410*c0909341SAndroid Build Coastguard Worker vmax.vx v7, v7, zero 411*c0909341SAndroid Build Coastguard Worker 412*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 413*c0909341SAndroid Build Coastguard Worker 414*c0909341SAndroid Build Coastguard Worker vnclipu.wi v8, v0, 0 415*c0909341SAndroid Build Coastguard Worker vnclipu.wi v9, v1, 0 416*c0909341SAndroid Build Coastguard Worker vnclipu.wi v10, v2, 0 417*c0909341SAndroid Build Coastguard Worker vnclipu.wi v11, v3, 0 418*c0909341SAndroid Build Coastguard Worker vnclipu.wi v12, v4, 0 419*c0909341SAndroid Build Coastguard Worker vnclipu.wi v13, v5, 0 420*c0909341SAndroid Build Coastguard Worker vnclipu.wi v14, v6, 0 421*c0909341SAndroid Build Coastguard Worker vnclipu.wi v15, v7, 0 422*c0909341SAndroid Build Coastguard Worker 423*c0909341SAndroid Build Coastguard Worker vse8.v v8, (a0) 424*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 425*c0909341SAndroid Build Coastguard Worker vse8.v v9, (a0) 426*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 427*c0909341SAndroid Build Coastguard Worker vse8.v v10, (a0) 428*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 429*c0909341SAndroid Build Coastguard Worker vse8.v v11, (a0) 430*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 431*c0909341SAndroid Build Coastguard Worker vse8.v v12, (a0) 432*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 433*c0909341SAndroid Build Coastguard Worker vse8.v v13, (a0) 434*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 435*c0909341SAndroid Build Coastguard Worker vse8.v v14, (a0) 436*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 437*c0909341SAndroid Build Coastguard Worker vse8.v v15, (a0) 438*c0909341SAndroid Build Coastguard Worker 439*c0909341SAndroid Build Coastguard Worker ret 440*c0909341SAndroid Build Coastguard Worker.endif 441*c0909341SAndroid Build Coastguard Workerendfunc 442*c0909341SAndroid Build Coastguard Worker.endm 443*c0909341SAndroid Build Coastguard Worker 444*c0909341SAndroid Build Coastguard Workerdef_fn_8x8_base identity_ 445*c0909341SAndroid Build Coastguard Workerdef_fn_8x8_base 446*c0909341SAndroid Build Coastguard Worker 447*c0909341SAndroid Build Coastguard Workerfunction inv_identity_e16_x8_rvv, export=1, ext=v 448*c0909341SAndroid Build Coastguard Worker vsadd.vv v0, v0, v0 449*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v1, v1 450*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v2, v2 451*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v3, v3 452*c0909341SAndroid Build Coastguard Worker vsadd.vv v4, v4, v4 453*c0909341SAndroid Build Coastguard Worker vsadd.vv v5, v5, v5 454*c0909341SAndroid Build Coastguard Worker vsadd.vv v6, v6, v6 455*c0909341SAndroid Build Coastguard Worker vsadd.vv v7, v7, v7 456*c0909341SAndroid Build Coastguard Worker 457*c0909341SAndroid Build Coastguard Worker jr t0 458*c0909341SAndroid Build Coastguard Workerendfunc 459*c0909341SAndroid Build Coastguard Worker 460*c0909341SAndroid Build Coastguard Worker.macro idct_8 o0, o1, o2, o3, o4, o5, o6, o7 461*c0909341SAndroid Build Coastguard Worker idct_4 \o0, \o2, \o4, \o6 462*c0909341SAndroid Build Coastguard Worker 463*c0909341SAndroid Build Coastguard Worker li t1, 799 464*c0909341SAndroid Build Coastguard Worker li t2, 4017 465*c0909341SAndroid Build Coastguard Worker li t3, 3406 466*c0909341SAndroid Build Coastguard Worker li t4, 2276 467*c0909341SAndroid Build Coastguard Worker 468*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, \o1, t2 469*c0909341SAndroid Build Coastguard Worker neg t2, t2 470*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, \o1, t1 471*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t1, \o7 472*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, \o7 473*c0909341SAndroid Build Coastguard Worker 474*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, \o5, t4 475*c0909341SAndroid Build Coastguard Worker neg t4, t4 476*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, \o5, t3 477*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t3, \o3 478*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t4, \o3 479*c0909341SAndroid Build Coastguard Worker 480*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 481*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 482*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 483*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 484*c0909341SAndroid Build Coastguard Worker 485*c0909341SAndroid Build Coastguard Worker vssub.vv \o7, v22, v20 486*c0909341SAndroid Build Coastguard Worker vsadd.vv v22, v22, v20 487*c0909341SAndroid Build Coastguard Worker vssub.vv \o1, v16, v18 488*c0909341SAndroid Build Coastguard Worker vsadd.vv v16, v16, v18 489*c0909341SAndroid Build Coastguard Worker 490*c0909341SAndroid Build Coastguard Worker li t2, 2896 491*c0909341SAndroid Build Coastguard Worker 492*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, \o7, t2 493*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, \o7, t2 494*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t2, \o1 495*c0909341SAndroid Build Coastguard Worker neg t2, t2 496*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t2, \o1 497*c0909341SAndroid Build Coastguard Worker 498*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 499*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 500*c0909341SAndroid Build Coastguard Worker 501*c0909341SAndroid Build Coastguard Worker vssub.vv \o7, \o0, v22 502*c0909341SAndroid Build Coastguard Worker vsadd.vv \o0, \o0, v22 503*c0909341SAndroid Build Coastguard Worker vssub.vv v17, \o2, v20 504*c0909341SAndroid Build Coastguard Worker vsadd.vv \o1, \o2, v20 505*c0909341SAndroid Build Coastguard Worker vssub.vv \o5, \o4, v18 506*c0909341SAndroid Build Coastguard Worker vsadd.vv \o2, \o4, v18 507*c0909341SAndroid Build Coastguard Worker vssub.vv \o4, \o6, v16 508*c0909341SAndroid Build Coastguard Worker vsadd.vv \o3, \o6, v16 509*c0909341SAndroid Build Coastguard Worker vmv.v.v \o6, v17 510*c0909341SAndroid Build Coastguard Worker.endm 511*c0909341SAndroid Build Coastguard Worker 512*c0909341SAndroid Build Coastguard Worker.macro iadst_8 o0, o1, o2, o3, o4, o5, o6, o7 513*c0909341SAndroid Build Coastguard Worker li t1, 4076 514*c0909341SAndroid Build Coastguard Worker li t2, 401 515*c0909341SAndroid Build Coastguard Worker li t3, 3612 516*c0909341SAndroid Build Coastguard Worker li t4, 1931 517*c0909341SAndroid Build Coastguard Worker li t5, 2598 518*c0909341SAndroid Build Coastguard Worker li t6, 3166 519*c0909341SAndroid Build Coastguard Worker 520*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v7, t1 521*c0909341SAndroid Build Coastguard Worker neg t1, t1 522*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v7, t2 523*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v0 524*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t1, v0 525*c0909341SAndroid Build Coastguard Worker 526*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v5, t3 527*c0909341SAndroid Build Coastguard Worker neg t3, t3 528*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v5, t4 529*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t4, v2 530*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t3, v2 531*c0909341SAndroid Build Coastguard Worker 532*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v3, t5 533*c0909341SAndroid Build Coastguard Worker neg t5, t5 534*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v3, t6 535*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t6, v4 536*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t5, v4 537*c0909341SAndroid Build Coastguard Worker 538*c0909341SAndroid Build Coastguard Worker li t2, 1189 539*c0909341SAndroid Build Coastguard Worker li t3, 3920 540*c0909341SAndroid Build Coastguard Worker li t4, 1567 541*c0909341SAndroid Build Coastguard Worker li t5, 3784 542*c0909341SAndroid Build Coastguard Worker li t6, 2896 543*c0909341SAndroid Build Coastguard Worker 544*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v1, t2 545*c0909341SAndroid Build Coastguard Worker neg t2, t2 546*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v1, t3 547*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v6 548*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t2, v6 549*c0909341SAndroid Build Coastguard Worker 550*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 551*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 552*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 553*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 554*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 555*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 556*c0909341SAndroid Build Coastguard Worker vnclip.wi v28, v28, 12 557*c0909341SAndroid Build Coastguard Worker vnclip.wi v30, v30, 12 558*c0909341SAndroid Build Coastguard Worker 559*c0909341SAndroid Build Coastguard Worker vssub.vv v4, v16, v24 560*c0909341SAndroid Build Coastguard Worker vsadd.vv v16, v16, v24 561*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v18, v26 562*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v20, v28 563*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v22, v30 564*c0909341SAndroid Build Coastguard Worker vssub.vv v5, v18, v26 565*c0909341SAndroid Build Coastguard Worker vssub.vv v6, v20, v28 566*c0909341SAndroid Build Coastguard Worker vssub.vv v30, v22, v30 567*c0909341SAndroid Build Coastguard Worker 568*c0909341SAndroid Build Coastguard Worker vsadd.vv \o0, v16, v2 569*c0909341SAndroid Build Coastguard Worker vsadd.vv \o7, v1, v3 570*c0909341SAndroid Build Coastguard Worker vssub.vv v2, v16, v2 571*c0909341SAndroid Build Coastguard Worker vssub.vv v3, v1, v3 572*c0909341SAndroid Build Coastguard Worker 573*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v4, t5 574*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v4, t4 575*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v30, t5 576*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v30, t4 577*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t4, v5 578*c0909341SAndroid Build Coastguard Worker neg t4, t4 579*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t5, v6 580*c0909341SAndroid Build Coastguard Worker neg t5, t5 581*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t4, v6 582*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t5, v5 583*c0909341SAndroid Build Coastguard Worker 584*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 585*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 586*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 587*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 588*c0909341SAndroid Build Coastguard Worker 589*c0909341SAndroid Build Coastguard Worker vsadd.vv \o1, v16, v20 590*c0909341SAndroid Build Coastguard Worker vsadd.vv \o6, v18, v22 591*c0909341SAndroid Build Coastguard Worker vssub.vv v16, v16, v20 592*c0909341SAndroid Build Coastguard Worker vssub.vv v17, v18, v22 593*c0909341SAndroid Build Coastguard Worker 594*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v2, t6 595*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v2, t6 596*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v16, t6 597*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v16, t6 598*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t6, v3 599*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t6, v17 600*c0909341SAndroid Build Coastguard Worker neg t6, t6 601*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t6, v3 602*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t6, v17 603*c0909341SAndroid Build Coastguard Worker 604*c0909341SAndroid Build Coastguard Worker vnclip.wi \o3, v18, 12 605*c0909341SAndroid Build Coastguard Worker vnclip.wi \o4, v20, 12 606*c0909341SAndroid Build Coastguard Worker vnclip.wi \o2, v22, 12 607*c0909341SAndroid Build Coastguard Worker vnclip.wi \o5, v24, 12 608*c0909341SAndroid Build Coastguard Worker 609*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 610*c0909341SAndroid Build Coastguard Worker vssub.vv \o1, v16, \o1 611*c0909341SAndroid Build Coastguard Worker vssub.vv \o3, v16, \o3 612*c0909341SAndroid Build Coastguard Worker vssub.vv \o5, v16, \o5 613*c0909341SAndroid Build Coastguard Worker vssub.vv \o7, v16, \o7 614*c0909341SAndroid Build Coastguard Worker.endm 615*c0909341SAndroid Build Coastguard Worker 616*c0909341SAndroid Build Coastguard Workerfunction inv_dct_e16_x8_rvv, export=1, ext=v 617*c0909341SAndroid Build Coastguard Worker idct_8 v0, v1, v2, v3, v4, v5, v6, v7 618*c0909341SAndroid Build Coastguard Worker jr t0 619*c0909341SAndroid Build Coastguard Workerendfunc 620*c0909341SAndroid Build Coastguard Worker 621*c0909341SAndroid Build Coastguard Workerfunction inv_adst_e16_x8_rvv, export=1, ext=v 622*c0909341SAndroid Build Coastguard Worker iadst_8 v0, v1, v2, v3, v4, v5, v6, v7 623*c0909341SAndroid Build Coastguard Worker jr t0 624*c0909341SAndroid Build Coastguard Workerendfunc 625*c0909341SAndroid Build Coastguard Worker 626*c0909341SAndroid Build Coastguard Workerfunction inv_flipadst_e16_x8_rvv, export=1, ext=v 627*c0909341SAndroid Build Coastguard Worker iadst_8 v7, v6, v5, v4, v3, v2, v1, v0 628*c0909341SAndroid Build Coastguard Worker jr t0 629*c0909341SAndroid Build Coastguard Workerendfunc 630*c0909341SAndroid Build Coastguard Worker 631*c0909341SAndroid Build Coastguard Worker.macro def_fn_8x8 txfm1, txfm2 632*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_8x8_8bpc_rvv, export=1, ext=v 633*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 634*c0909341SAndroid Build Coastguard Worker beqz a3, 1f 635*c0909341SAndroid Build Coastguard Worker.endif 636*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x8_rvv 637*c0909341SAndroid Build Coastguard Worker.ifc \txfm1, identity 638*c0909341SAndroid Build Coastguard Worker j inv_txfm_identity_add_8x8_rvv 639*c0909341SAndroid Build Coastguard Worker.else 640*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x8_rvv 641*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_8x8_rvv 642*c0909341SAndroid Build Coastguard Worker.endif 643*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 644*c0909341SAndroid Build Coastguard Worker1: 645*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 646*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 647*c0909341SAndroid Build Coastguard Worker ld t2, (a2) 648*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 649*c0909341SAndroid Build Coastguard Worker vmv.v.x v0, t2 650*c0909341SAndroid Build Coastguard Worker vsmul.vx v0, v0, t1 651*c0909341SAndroid Build Coastguard Worker sd x0, (a2) 652*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 1 653*c0909341SAndroid Build Coastguard Worker vsmul.vx v0, v0, t1 654*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 655*c0909341SAndroid Build Coastguard Worker vmv.v.v v1, v0 656*c0909341SAndroid Build Coastguard Worker vmv.v.v v2, v0 657*c0909341SAndroid Build Coastguard Worker vmv.v.v v3, v0 658*c0909341SAndroid Build Coastguard Worker vmv.v.v v4, v0 659*c0909341SAndroid Build Coastguard Worker vmv.v.v v5, v0 660*c0909341SAndroid Build Coastguard Worker vmv.v.v v6, v0 661*c0909341SAndroid Build Coastguard Worker vmv.v.v v7, v0 662*c0909341SAndroid Build Coastguard Worker j itx_8x8_end 663*c0909341SAndroid Build Coastguard Worker.endif 664*c0909341SAndroid Build Coastguard Workerendfunc 665*c0909341SAndroid Build Coastguard Worker.endm 666*c0909341SAndroid Build Coastguard Worker 667*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 dct, dct 668*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 identity, identity 669*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 dct, adst 670*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 dct, flipadst 671*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 dct, identity 672*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 adst, dct 673*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 adst, adst 674*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 adst, flipadst 675*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 flipadst, dct 676*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 flipadst, adst 677*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 flipadst, flipadst 678*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 identity, dct 679*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 adst, identity 680*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 flipadst, identity 681*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 identity, adst 682*c0909341SAndroid Build Coastguard Workerdef_fn_8x8 identity, flipadst 683*c0909341SAndroid Build Coastguard Worker 684*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_4x8_rvv, export=1, ext=v 685*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 686*c0909341SAndroid Build Coastguard Worker 687*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 688*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 689*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 690*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 691*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 692*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 693*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 694*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 695*c0909341SAndroid Build Coastguard Worker 696*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 697*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3 698*c0909341SAndroid Build Coastguard Worker vsmul.vx v\i, v\i, t1 699*c0909341SAndroid Build Coastguard Worker.endr 700*c0909341SAndroid Build Coastguard Worker 701*c0909341SAndroid Build Coastguard Worker jalr t0, a4 702*c0909341SAndroid Build Coastguard Worker 703*c0909341SAndroid Build Coastguard Worker vsseg4e16.v v0, (a2) 704*c0909341SAndroid Build Coastguard Worker 705*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 706*c0909341SAndroid Build Coastguard Worker vmv.v.x v8, zero 707*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 708*c0909341SAndroid Build Coastguard Worker vse16.v v8, (a2) 709*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7 710*c0909341SAndroid Build Coastguard Worker addi a2, a2, 8 711*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (a2) 712*c0909341SAndroid Build Coastguard Worker vse16.v v8, (a2) 713*c0909341SAndroid Build Coastguard Worker.endr 714*c0909341SAndroid Build Coastguard Worker 715*c0909341SAndroid Build Coastguard Worker jalr t0, a5 716*c0909341SAndroid Build Coastguard Worker 717*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 718*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 4 719*c0909341SAndroid Build Coastguard Worker.endr 720*c0909341SAndroid Build Coastguard Worker 721*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 722*c0909341SAndroid Build Coastguard Worker vle8.v v8, (a0) 723*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 724*c0909341SAndroid Build Coastguard Worker vle8.v v9, (t0) 725*c0909341SAndroid Build Coastguard Worker.irp i, 10, 11, 12, 13, 14, 15 726*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 727*c0909341SAndroid Build Coastguard Worker vle8.v v\i, (t0) 728*c0909341SAndroid Build Coastguard Worker.endr 729*c0909341SAndroid Build Coastguard Worker 730*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v8 731*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v9 732*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v10 733*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v11 734*c0909341SAndroid Build Coastguard Worker vwaddu.wv v4, v4, v12 735*c0909341SAndroid Build Coastguard Worker vwaddu.wv v5, v5, v13 736*c0909341SAndroid Build Coastguard Worker vwaddu.wv v6, v6, v14 737*c0909341SAndroid Build Coastguard Worker vwaddu.wv v7, v7, v15 738*c0909341SAndroid Build Coastguard Worker 739*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, mf2, ta, ma 740*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 741*c0909341SAndroid Build Coastguard Worker vmax.vx v\i, v\i, zero 742*c0909341SAndroid Build Coastguard Worker.endr 743*c0909341SAndroid Build Coastguard Worker 744*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 745*c0909341SAndroid Build Coastguard Worker 746*c0909341SAndroid Build Coastguard Worker vnclipu.wi v8, v0, 0 747*c0909341SAndroid Build Coastguard Worker vnclipu.wi v9, v1, 0 748*c0909341SAndroid Build Coastguard Worker vnclipu.wi v10, v2, 0 749*c0909341SAndroid Build Coastguard Worker vnclipu.wi v11, v3, 0 750*c0909341SAndroid Build Coastguard Worker vnclipu.wi v12, v4, 0 751*c0909341SAndroid Build Coastguard Worker vnclipu.wi v13, v5, 0 752*c0909341SAndroid Build Coastguard Worker vnclipu.wi v14, v6, 0 753*c0909341SAndroid Build Coastguard Worker vnclipu.wi v15, v7, 0 754*c0909341SAndroid Build Coastguard Worker 755*c0909341SAndroid Build Coastguard Worker vse8.v v8, (a0) 756*c0909341SAndroid Build Coastguard Worker.irp i, 9, 10, 11, 12, 13, 14, 15 757*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 758*c0909341SAndroid Build Coastguard Worker vse8.v v\i, (a0) 759*c0909341SAndroid Build Coastguard Worker.endr 760*c0909341SAndroid Build Coastguard Worker 761*c0909341SAndroid Build Coastguard Worker ret 762*c0909341SAndroid Build Coastguard Workerendfunc 763*c0909341SAndroid Build Coastguard Worker 764*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_8x4_rvv, export=1, ext=v 765*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 766*c0909341SAndroid Build Coastguard Worker 767*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 768*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 769*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 770*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 771*c0909341SAndroid Build Coastguard Worker.irp i, 2, 3, 4, 5, 6, 7 772*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 773*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 774*c0909341SAndroid Build Coastguard Worker.endr 775*c0909341SAndroid Build Coastguard Worker 776*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 777*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 778*c0909341SAndroid Build Coastguard Worker vsmul.vx v\i, v\i, t1 779*c0909341SAndroid Build Coastguard Worker.endr 780*c0909341SAndroid Build Coastguard Worker 781*c0909341SAndroid Build Coastguard Worker jalr t0, a4 782*c0909341SAndroid Build Coastguard Worker 783*c0909341SAndroid Build Coastguard Worker vsseg8e16.v v0, (a2) 784*c0909341SAndroid Build Coastguard Worker 785*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 786*c0909341SAndroid Build Coastguard Worker vmv.v.x v4, zero 787*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 788*c0909341SAndroid Build Coastguard Worker vse16.v v4, (a2) 789*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3 790*c0909341SAndroid Build Coastguard Worker addi a2, a2, 16 791*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (a2) 792*c0909341SAndroid Build Coastguard Worker vse16.v v4, (a2) 793*c0909341SAndroid Build Coastguard Worker.endr 794*c0909341SAndroid Build Coastguard Worker 795*c0909341SAndroid Build Coastguard Worker jalr t0, a5 796*c0909341SAndroid Build Coastguard Worker 797*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 798*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 4 799*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 4 800*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 4 801*c0909341SAndroid Build Coastguard Worker 802*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 803*c0909341SAndroid Build Coastguard Worker vle8.v v4, (a0) 804*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 805*c0909341SAndroid Build Coastguard Worker vle8.v v5, (t0) 806*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 807*c0909341SAndroid Build Coastguard Worker vle8.v v6, (t0) 808*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 809*c0909341SAndroid Build Coastguard Worker vle8.v v7, (t0) 810*c0909341SAndroid Build Coastguard Worker 811*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v4 812*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v5 813*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v6 814*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v7 815*c0909341SAndroid Build Coastguard Worker 816*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m1, ta, ma 817*c0909341SAndroid Build Coastguard Worker vmax.vx v0, v0, zero 818*c0909341SAndroid Build Coastguard Worker vmax.vx v1, v1, zero 819*c0909341SAndroid Build Coastguard Worker vmax.vx v2, v2, zero 820*c0909341SAndroid Build Coastguard Worker vmax.vx v3, v3, zero 821*c0909341SAndroid Build Coastguard Worker 822*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 823*c0909341SAndroid Build Coastguard Worker 824*c0909341SAndroid Build Coastguard Worker vnclipu.wi v4, v0, 0 825*c0909341SAndroid Build Coastguard Worker vnclipu.wi v5, v1, 0 826*c0909341SAndroid Build Coastguard Worker vnclipu.wi v6, v2, 0 827*c0909341SAndroid Build Coastguard Worker vnclipu.wi v7, v3, 0 828*c0909341SAndroid Build Coastguard Worker 829*c0909341SAndroid Build Coastguard Worker vse8.v v4, (a0) 830*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 831*c0909341SAndroid Build Coastguard Worker vse8.v v5, (a0) 832*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 833*c0909341SAndroid Build Coastguard Worker vse8.v v6, (a0) 834*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 835*c0909341SAndroid Build Coastguard Worker vse8.v v7, (a0) 836*c0909341SAndroid Build Coastguard Worker 837*c0909341SAndroid Build Coastguard Worker ret 838*c0909341SAndroid Build Coastguard Workerendfunc 839*c0909341SAndroid Build Coastguard Worker 840*c0909341SAndroid Build Coastguard Worker/* Define symbols added in .if statement */ 841*c0909341SAndroid Build Coastguard Worker.equ dct, 1 842*c0909341SAndroid Build Coastguard Worker.equ identity, 2 843*c0909341SAndroid Build Coastguard Worker.equ adst, 3 844*c0909341SAndroid Build Coastguard Worker.equ flipadst, 4 845*c0909341SAndroid Build Coastguard Worker 846*c0909341SAndroid Build Coastguard Worker.macro def_fn_48 w, h, txfm1, txfm2 847*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_\w\()x\h\()_8bpc_rvv, export=1 848*c0909341SAndroid Build Coastguard Worker.if \w == 4 && (\txfm1 == adst || \txfm1 == flipadst) 849*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x\w\()w_rvv 850*c0909341SAndroid Build Coastguard Worker.else 851*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x\w\()_rvv 852*c0909341SAndroid Build Coastguard Worker.endif 853*c0909341SAndroid Build Coastguard Worker.if \h == 4 && (\txfm2 == adst || \txfm2 == flipadst) 854*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x\h\()w_rvv 855*c0909341SAndroid Build Coastguard Worker.else 856*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x\h\()_rvv 857*c0909341SAndroid Build Coastguard Worker.endif 858*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_\w\()x\h\()_rvv 859*c0909341SAndroid Build Coastguard Workerendfunc 860*c0909341SAndroid Build Coastguard Worker.endm 861*c0909341SAndroid Build Coastguard Worker 862*c0909341SAndroid Build Coastguard Worker.macro def_fns_48 w, h 863*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, dct, dct 864*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, identity, identity 865*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, dct, adst 866*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, dct, flipadst 867*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, dct, identity 868*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, adst, dct 869*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, adst, adst 870*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, adst, flipadst 871*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, flipadst, dct 872*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, flipadst, adst 873*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, flipadst, flipadst 874*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, identity, dct 875*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, adst, identity 876*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, flipadst, identity 877*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, identity, adst 878*c0909341SAndroid Build Coastguard Workerdef_fn_48 \w, \h, identity, flipadst 879*c0909341SAndroid Build Coastguard Worker.endm 880*c0909341SAndroid Build Coastguard Worker 881*c0909341SAndroid Build Coastguard Workerdef_fns_48 4, 8 882*c0909341SAndroid Build Coastguard Workerdef_fns_48 8, 4 883*c0909341SAndroid Build Coastguard Worker 884*c0909341SAndroid Build Coastguard Workerfunction inv_identity_e16_x16_rvv, export=1, ext=v 885*c0909341SAndroid Build Coastguard Worker li t1, 2*(5793-4096)*8 886*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 887*c0909341SAndroid Build Coastguard Worker vsmul.vx v16, v\i, t1 888*c0909341SAndroid Build Coastguard Worker vsadd.vv v\i, v\i, v\i 889*c0909341SAndroid Build Coastguard Worker vsadd.vv v\i, v\i, v16 890*c0909341SAndroid Build Coastguard Worker.endr 891*c0909341SAndroid Build Coastguard Worker jr t0 892*c0909341SAndroid Build Coastguard Workerendfunc 893*c0909341SAndroid Build Coastguard Worker 894*c0909341SAndroid Build Coastguard Workerfunction inv_dct_e16_x16_rvv, export=1, ext=v 895*c0909341SAndroid Build Coastguard Worker idct_8 v0, v2, v4, v6, v8, v10, v12, v14 896*c0909341SAndroid Build Coastguard Worker 897*c0909341SAndroid Build Coastguard Worker li t1, 401 898*c0909341SAndroid Build Coastguard Worker li t2, 4076 899*c0909341SAndroid Build Coastguard Worker li t3, 3166 900*c0909341SAndroid Build Coastguard Worker li t4, 2598 901*c0909341SAndroid Build Coastguard Worker 902*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v1, t2 903*c0909341SAndroid Build Coastguard Worker neg t2, t2 904*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v1, t1 905*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t1, v15 906*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v15 907*c0909341SAndroid Build Coastguard Worker 908*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v9, t4 909*c0909341SAndroid Build Coastguard Worker neg t4, t4 910*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v9, t3 911*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v7 912*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t4, v7 913*c0909341SAndroid Build Coastguard Worker 914*c0909341SAndroid Build Coastguard Worker li t1, 1931 915*c0909341SAndroid Build Coastguard Worker li t2, 3612 916*c0909341SAndroid Build Coastguard Worker li t3, 3920 917*c0909341SAndroid Build Coastguard Worker li t4, 1189 918*c0909341SAndroid Build Coastguard Worker 919*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v5, t2 920*c0909341SAndroid Build Coastguard Worker neg t2, t2 921*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v5, t1 922*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t1, v11 923*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t2, v11 924*c0909341SAndroid Build Coastguard Worker 925*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v13, t4 926*c0909341SAndroid Build Coastguard Worker neg t4, t4 927*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v13, t3 928*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t3, v3 929*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t4, v3 930*c0909341SAndroid Build Coastguard Worker 931*c0909341SAndroid Build Coastguard Worker li t2, 2896 932*c0909341SAndroid Build Coastguard Worker li t3, 1567 933*c0909341SAndroid Build Coastguard Worker li t4, 3784 934*c0909341SAndroid Build Coastguard Worker 935*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 936*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 937*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 938*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 939*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 940*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 941*c0909341SAndroid Build Coastguard Worker vnclip.wi v28, v28, 12 942*c0909341SAndroid Build Coastguard Worker vnclip.wi v30, v30, 12 943*c0909341SAndroid Build Coastguard Worker 944*c0909341SAndroid Build Coastguard Worker vssub.vv v3, v16, v18 945*c0909341SAndroid Build Coastguard Worker vsadd.vv v16, v16, v18 946*c0909341SAndroid Build Coastguard Worker vssub.vv v5, v22, v20 947*c0909341SAndroid Build Coastguard Worker vsadd.vv v22, v22, v20 948*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v24, v26 949*c0909341SAndroid Build Coastguard Worker vsadd.vv v24, v24, v26 950*c0909341SAndroid Build Coastguard Worker vssub.vv v13, v30, v28 951*c0909341SAndroid Build Coastguard Worker vsadd.vv v30, v30, v28 952*c0909341SAndroid Build Coastguard Worker 953*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v13, t4 954*c0909341SAndroid Build Coastguard Worker neg t4, t4 955*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v13, t3 956*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v11, t3 957*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v3 958*c0909341SAndroid Build Coastguard Worker neg t3, t3 959*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v11, t4 960*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t4, v3 961*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t3, v5 962*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t4, v5 963*c0909341SAndroid Build Coastguard Worker 964*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 965*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 966*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 967*c0909341SAndroid Build Coastguard Worker vnclip.wi v28, v28, 12 968*c0909341SAndroid Build Coastguard Worker 969*c0909341SAndroid Build Coastguard Worker vssub.vv v5, v18, v20 970*c0909341SAndroid Build Coastguard Worker vsadd.vv v18, v18, v20 971*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v28, v26 972*c0909341SAndroid Build Coastguard Worker vsadd.vv v28, v28, v26 973*c0909341SAndroid Build Coastguard Worker 974*c0909341SAndroid Build Coastguard Worker vssub.vv v7, v16, v22 975*c0909341SAndroid Build Coastguard Worker vsadd.vv v16, v16, v22 976*c0909341SAndroid Build Coastguard Worker vssub.vv v9, v30, v24 977*c0909341SAndroid Build Coastguard Worker vsadd.vv v30, v30, v24 978*c0909341SAndroid Build Coastguard Worker 979*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v11, t2 980*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v9, t2 981*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v9, t2 982*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v11, t2 983*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t2, v7 984*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t2, v5 985*c0909341SAndroid Build Coastguard Worker neg t2, t2 986*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t2, v5 987*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t2, v7 988*c0909341SAndroid Build Coastguard Worker 989*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 990*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 991*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 992*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 993*c0909341SAndroid Build Coastguard Worker 994*c0909341SAndroid Build Coastguard Worker vssub.vv v15, v0, v30 995*c0909341SAndroid Build Coastguard Worker vsadd.vv v0, v0, v30 996*c0909341SAndroid Build Coastguard Worker vssub.vv v17, v2, v28 997*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v2, v28 998*c0909341SAndroid Build Coastguard Worker vssub.vv v13, v4, v26 999*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v4, v26 1000*c0909341SAndroid Build Coastguard Worker vssub.vv v19, v6, v24 1001*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v6, v24 1002*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v8, v22 1003*c0909341SAndroid Build Coastguard Worker vsadd.vv v4, v8, v22 1004*c0909341SAndroid Build Coastguard Worker vsadd.vv v5, v10, v20 1005*c0909341SAndroid Build Coastguard Worker vssub.vv v10, v10, v20 1006*c0909341SAndroid Build Coastguard Worker vssub.vv v9, v12, v18 1007*c0909341SAndroid Build Coastguard Worker vsadd.vv v6, v12, v18 1008*c0909341SAndroid Build Coastguard Worker vssub.vv v8, v14, v16 1009*c0909341SAndroid Build Coastguard Worker vsadd.vv v7, v14, v16 1010*c0909341SAndroid Build Coastguard Worker vmv.v.v v14, v17 1011*c0909341SAndroid Build Coastguard Worker vmv.v.v v12, v19 1012*c0909341SAndroid Build Coastguard Worker 1013*c0909341SAndroid Build Coastguard Worker jr t0 1014*c0909341SAndroid Build Coastguard Workerendfunc 1015*c0909341SAndroid Build Coastguard Worker 1016*c0909341SAndroid Build Coastguard Worker.macro iadst_16 o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15 1017*c0909341SAndroid Build Coastguard Worker li t1, 4091 1018*c0909341SAndroid Build Coastguard Worker li t2, 201 1019*c0909341SAndroid Build Coastguard Worker li t3, 3973 1020*c0909341SAndroid Build Coastguard Worker li t4, 995 1021*c0909341SAndroid Build Coastguard Worker 1022*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v15, t1 1023*c0909341SAndroid Build Coastguard Worker neg t1, t1 1024*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v15, t2 1025*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v0 1026*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t1, v0 1027*c0909341SAndroid Build Coastguard Worker 1028*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v13, t3 1029*c0909341SAndroid Build Coastguard Worker neg t3, t3 1030*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v13, t4 1031*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t4, v2 1032*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t3, v2 1033*c0909341SAndroid Build Coastguard Worker 1034*c0909341SAndroid Build Coastguard Worker li t1, 3703 1035*c0909341SAndroid Build Coastguard Worker li t2, 1751 1036*c0909341SAndroid Build Coastguard Worker li t3, 3290 1037*c0909341SAndroid Build Coastguard Worker li t4, 2440 1038*c0909341SAndroid Build Coastguard Worker 1039*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v11, t1 1040*c0909341SAndroid Build Coastguard Worker neg t1, t1 1041*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v11, t2 1042*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t2, v4 1043*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t1, v4 1044*c0909341SAndroid Build Coastguard Worker 1045*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v9, t3 1046*c0909341SAndroid Build Coastguard Worker neg t3, t3 1047*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v9, t4 1048*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t4, v6 1049*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t3, v6 1050*c0909341SAndroid Build Coastguard Worker 1051*c0909341SAndroid Build Coastguard Worker vnclip.wi v0, v16, 12 1052*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 1053*c0909341SAndroid Build Coastguard Worker vnclip.wi v2, v20, 12 1054*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 1055*c0909341SAndroid Build Coastguard Worker vnclip.wi v4, v24, 12 1056*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 1057*c0909341SAndroid Build Coastguard Worker vnclip.wi v6, v28, 12 1058*c0909341SAndroid Build Coastguard Worker vnclip.wi v30, v30, 12 1059*c0909341SAndroid Build Coastguard Worker 1060*c0909341SAndroid Build Coastguard Worker li t1, 2751 1061*c0909341SAndroid Build Coastguard Worker li t2, 3035 1062*c0909341SAndroid Build Coastguard Worker li t3, 2106 1063*c0909341SAndroid Build Coastguard Worker li t4, 3513 1064*c0909341SAndroid Build Coastguard Worker 1065*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v7, t1 1066*c0909341SAndroid Build Coastguard Worker neg t1, t1 1067*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v7, t2 1068*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v8 1069*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t1, v8 1070*c0909341SAndroid Build Coastguard Worker 1071*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v5, t3 1072*c0909341SAndroid Build Coastguard Worker neg t3, t3 1073*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v5, t4 1074*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t4, v10 1075*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v10 1076*c0909341SAndroid Build Coastguard Worker 1077*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 1078*c0909341SAndroid Build Coastguard Worker vnclip.wi v9, v20, 12 1079*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 1080*c0909341SAndroid Build Coastguard Worker vnclip.wi v11, v28, 12 1081*c0909341SAndroid Build Coastguard Worker 1082*c0909341SAndroid Build Coastguard Worker vssub.vv v8, v0, v16 1083*c0909341SAndroid Build Coastguard Worker vsadd.vv v0, v0, v16 1084*c0909341SAndroid Build Coastguard Worker vssub.vv v10, v2, v24 1085*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v2, v24 1086*c0909341SAndroid Build Coastguard Worker 1087*c0909341SAndroid Build Coastguard Worker li t1, 1380 1088*c0909341SAndroid Build Coastguard Worker li t2, 3857 1089*c0909341SAndroid Build Coastguard Worker li t3, 601 1090*c0909341SAndroid Build Coastguard Worker li t4, 4052 1091*c0909341SAndroid Build Coastguard Worker 1092*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v3, t1 1093*c0909341SAndroid Build Coastguard Worker neg t1, t1 1094*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v3, t2 1095*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v12 1096*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t1, v12 1097*c0909341SAndroid Build Coastguard Worker 1098*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v1, t3 1099*c0909341SAndroid Build Coastguard Worker neg t3, t3 1100*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v1, t4 1101*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t4, v14 1102*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v14 1103*c0909341SAndroid Build Coastguard Worker 1104*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 1105*c0909341SAndroid Build Coastguard Worker vnclip.wi v13, v20, 12 1106*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 1107*c0909341SAndroid Build Coastguard Worker vnclip.wi v15, v28, 12 1108*c0909341SAndroid Build Coastguard Worker 1109*c0909341SAndroid Build Coastguard Worker vssub.vv v12, v4, v16 1110*c0909341SAndroid Build Coastguard Worker vsadd.vv v16, v4, v16 1111*c0909341SAndroid Build Coastguard Worker vssub.vv v14, v6, v24 1112*c0909341SAndroid Build Coastguard Worker vsadd.vv v20, v6, v24 1113*c0909341SAndroid Build Coastguard Worker 1114*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v18, v9 1115*c0909341SAndroid Build Coastguard Worker vssub.vv v9, v18, v9 1116*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v22, v11 1117*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v22, v11 1118*c0909341SAndroid Build Coastguard Worker vsadd.vv v18, v26, v13 1119*c0909341SAndroid Build Coastguard Worker vssub.vv v13, v26, v13 1120*c0909341SAndroid Build Coastguard Worker vsadd.vv v22, v30, v15 1121*c0909341SAndroid Build Coastguard Worker vssub.vv v15, v30, v15 1122*c0909341SAndroid Build Coastguard Worker 1123*c0909341SAndroid Build Coastguard Worker vssub.vv v4, v0, v16 1124*c0909341SAndroid Build Coastguard Worker vsadd.vv v0, v0, v16 1125*c0909341SAndroid Build Coastguard Worker vssub.vv v5, v1, v18 1126*c0909341SAndroid Build Coastguard Worker vsadd.vv v1, v1, v18 1127*c0909341SAndroid Build Coastguard Worker vssub.vv v6, v2, v20 1128*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v2, v20 1129*c0909341SAndroid Build Coastguard Worker vssub.vv v7, v3, v22 1130*c0909341SAndroid Build Coastguard Worker vsadd.vv v3, v3, v22 1131*c0909341SAndroid Build Coastguard Worker 1132*c0909341SAndroid Build Coastguard Worker li t1, 799 1133*c0909341SAndroid Build Coastguard Worker li t2, 4017 1134*c0909341SAndroid Build Coastguard Worker li t3, 3406 1135*c0909341SAndroid Build Coastguard Worker li t4, 2276 1136*c0909341SAndroid Build Coastguard Worker 1137*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v8, t2 1138*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v8, t1 1139*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v10, t4 1140*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v10, t3 1141*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v13, t2 1142*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v13, t1 1143*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v15, t4 1144*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v15, t3 1145*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t1, v9 1146*c0909341SAndroid Build Coastguard Worker neg t1, t1 1147*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t3, v11 1148*c0909341SAndroid Build Coastguard Worker neg t3, t3 1149*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t2, v12 1150*c0909341SAndroid Build Coastguard Worker neg t2, t2 1151*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t4, v14 1152*c0909341SAndroid Build Coastguard Worker neg t4, t4 1153*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t2, v9 1154*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t4, v11 1155*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t1, v12 1156*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v14 1157*c0909341SAndroid Build Coastguard Worker 1158*c0909341SAndroid Build Coastguard Worker li t2, 2896 1159*c0909341SAndroid Build Coastguard Worker li t3, 1567 1160*c0909341SAndroid Build Coastguard Worker li t4, 3784 1161*c0909341SAndroid Build Coastguard Worker 1162*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 1163*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 1164*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 1165*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 1166*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 1167*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 1168*c0909341SAndroid Build Coastguard Worker vnclip.wi v28, v28, 12 1169*c0909341SAndroid Build Coastguard Worker vnclip.wi v30, v30, 12 1170*c0909341SAndroid Build Coastguard Worker 1171*c0909341SAndroid Build Coastguard Worker vsadd.vv v8, v16, v24 1172*c0909341SAndroid Build Coastguard Worker vsadd.vv v9, v18, v26 1173*c0909341SAndroid Build Coastguard Worker vsadd.vv v10, v20, v28 1174*c0909341SAndroid Build Coastguard Worker vsadd.vv v11, v22, v30 1175*c0909341SAndroid Build Coastguard Worker vssub.vv v12, v16, v24 1176*c0909341SAndroid Build Coastguard Worker vssub.vv v13, v18, v26 1177*c0909341SAndroid Build Coastguard Worker vssub.vv v14, v20, v28 1178*c0909341SAndroid Build Coastguard Worker vssub.vv v15, v22, v30 1179*c0909341SAndroid Build Coastguard Worker 1180*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v4, t4 1181*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v4, t3 1182*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v7, t4 1183*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v7, t3 1184*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v12, t4 1185*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v12, t3 1186*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v15, t4 1187*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v15, t3 1188*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t3, v5 1189*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t4, v6 1190*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t3, v13 1191*c0909341SAndroid Build Coastguard Worker neg t3, t3 1192*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t4, v14 1193*c0909341SAndroid Build Coastguard Worker neg t4, t4 1194*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t3, v6 1195*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t3, v14 1196*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t4, v5 1197*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t4, v13 1198*c0909341SAndroid Build Coastguard Worker 1199*c0909341SAndroid Build Coastguard Worker vnclip.wi v16, v16, 12 1200*c0909341SAndroid Build Coastguard Worker vnclip.wi v18, v18, 12 1201*c0909341SAndroid Build Coastguard Worker vnclip.wi v20, v20, 12 1202*c0909341SAndroid Build Coastguard Worker vnclip.wi v22, v22, 12 1203*c0909341SAndroid Build Coastguard Worker vnclip.wi v24, v24, 12 1204*c0909341SAndroid Build Coastguard Worker vnclip.wi v26, v26, 12 1205*c0909341SAndroid Build Coastguard Worker vnclip.wi v28, v28, 12 1206*c0909341SAndroid Build Coastguard Worker vnclip.wi v30, v30, 12 1207*c0909341SAndroid Build Coastguard Worker 1208*c0909341SAndroid Build Coastguard Worker.ifc \o0, v0 1209*c0909341SAndroid Build Coastguard Worker vsadd.vv \o14, v9, v11 1210*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v9, v11 1211*c0909341SAndroid Build Coastguard Worker vssub.vv v9, v1, v3 1212*c0909341SAndroid Build Coastguard Worker vsadd.vv \o15, v1, v3 1213*c0909341SAndroid Build Coastguard Worker vsadd.vv \o1, v8, v10 1214*c0909341SAndroid Build Coastguard Worker vssub.vv v10, v8, v10 1215*c0909341SAndroid Build Coastguard Worker vssub.vv v8, v0, v2 1216*c0909341SAndroid Build Coastguard Worker vsadd.vv \o0, v0, v2 1217*c0909341SAndroid Build Coastguard Worker.else 1218*c0909341SAndroid Build Coastguard Worker vsadd.vv \o1, v8, v10 1219*c0909341SAndroid Build Coastguard Worker vssub.vv v10, v8, v10 1220*c0909341SAndroid Build Coastguard Worker vssub.vv v8, v0, v2 1221*c0909341SAndroid Build Coastguard Worker vsadd.vv \o0, v0, v2 1222*c0909341SAndroid Build Coastguard Worker vsadd.vv v2, v9, v11 1223*c0909341SAndroid Build Coastguard Worker vssub.vv v11, v9, v11 1224*c0909341SAndroid Build Coastguard Worker vssub.vv v9, v1, v3 1225*c0909341SAndroid Build Coastguard Worker vsadd.vv \o15, v1, v3 1226*c0909341SAndroid Build Coastguard Worker vmv.v.v \o14, v2 1227*c0909341SAndroid Build Coastguard Worker.endif 1228*c0909341SAndroid Build Coastguard Worker 1229*c0909341SAndroid Build Coastguard Worker vsadd.vv \o3, v16, v20 1230*c0909341SAndroid Build Coastguard Worker vssub.vv v6, v16, v20 1231*c0909341SAndroid Build Coastguard Worker vsadd.vv \o12, v18, v22 1232*c0909341SAndroid Build Coastguard Worker vssub.vv v7, v18, v22 1233*c0909341SAndroid Build Coastguard Worker vsadd.vv \o2, v24, v28 1234*c0909341SAndroid Build Coastguard Worker vssub.vv v24, v24, v28 1235*c0909341SAndroid Build Coastguard Worker vsadd.vv \o13, v26, v30 1236*c0909341SAndroid Build Coastguard Worker vssub.vv v26, v26, v30 1237*c0909341SAndroid Build Coastguard Worker 1238*c0909341SAndroid Build Coastguard Worker neg t3, t2 1239*c0909341SAndroid Build Coastguard Worker 1240*c0909341SAndroid Build Coastguard Worker vwmul.vx v28, v24, t2 1241*c0909341SAndroid Build Coastguard Worker vwmul.vx v30, v24, t2 1242*c0909341SAndroid Build Coastguard Worker vwmacc.vx v28, t2, v26 1243*c0909341SAndroid Build Coastguard Worker vwmacc.vx v30, t3, v26 1244*c0909341SAndroid Build Coastguard Worker 1245*c0909341SAndroid Build Coastguard Worker vwmul.vx v24, v10, t2 1246*c0909341SAndroid Build Coastguard Worker vwmul.vx v26, v10, t2 1247*c0909341SAndroid Build Coastguard Worker vwmacc.vx v24, t2, v11 1248*c0909341SAndroid Build Coastguard Worker vwmacc.vx v26, t3, v11 1249*c0909341SAndroid Build Coastguard Worker 1250*c0909341SAndroid Build Coastguard Worker vwmul.vx v20, v6, t2 1251*c0909341SAndroid Build Coastguard Worker vwmul.vx v22, v6, t2 1252*c0909341SAndroid Build Coastguard Worker vwmacc.vx v20, t2, v7 1253*c0909341SAndroid Build Coastguard Worker vwmacc.vx v22, t3, v7 1254*c0909341SAndroid Build Coastguard Worker 1255*c0909341SAndroid Build Coastguard Worker vwmul.vx v16, v8, t2 1256*c0909341SAndroid Build Coastguard Worker vwmul.vx v18, v8, t2 1257*c0909341SAndroid Build Coastguard Worker vwmacc.vx v16, t2, v9 1258*c0909341SAndroid Build Coastguard Worker vwmacc.vx v18, t3, v9 1259*c0909341SAndroid Build Coastguard Worker 1260*c0909341SAndroid Build Coastguard Worker vnclip.wi \o7, v16, 12 1261*c0909341SAndroid Build Coastguard Worker vnclip.wi \o8, v18, 12 1262*c0909341SAndroid Build Coastguard Worker vnclip.wi \o4, v20, 12 1263*c0909341SAndroid Build Coastguard Worker vnclip.wi \o11, v22, 12 1264*c0909341SAndroid Build Coastguard Worker vnclip.wi \o6, v24, 12 1265*c0909341SAndroid Build Coastguard Worker vnclip.wi \o9, v26, 12 1266*c0909341SAndroid Build Coastguard Worker vnclip.wi \o5, v28, 12 1267*c0909341SAndroid Build Coastguard Worker vnclip.wi \o10, v30, 12 1268*c0909341SAndroid Build Coastguard Worker 1269*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 1270*c0909341SAndroid Build Coastguard Worker vssub.vv \o1, v16, \o1 1271*c0909341SAndroid Build Coastguard Worker vssub.vv \o3, v16, \o3 1272*c0909341SAndroid Build Coastguard Worker vssub.vv \o5, v16, \o5 1273*c0909341SAndroid Build Coastguard Worker vssub.vv \o7, v16, \o7 1274*c0909341SAndroid Build Coastguard Worker vssub.vv \o9, v16, \o9 1275*c0909341SAndroid Build Coastguard Worker vssub.vv \o11, v16, \o11 1276*c0909341SAndroid Build Coastguard Worker vssub.vv \o13, v16, \o13 1277*c0909341SAndroid Build Coastguard Worker vssub.vv \o15, v16, \o15 1278*c0909341SAndroid Build Coastguard Worker.endm 1279*c0909341SAndroid Build Coastguard Worker 1280*c0909341SAndroid Build Coastguard Workerfunction inv_adst_e16_x16_rvv, export=1, ext=v 1281*c0909341SAndroid Build Coastguard Worker iadst_16 v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 1282*c0909341SAndroid Build Coastguard Worker jr t0 1283*c0909341SAndroid Build Coastguard Workerendfunc 1284*c0909341SAndroid Build Coastguard Worker 1285*c0909341SAndroid Build Coastguard Workerfunction inv_flipadst_e16_x16_rvv, export=1, ext=v 1286*c0909341SAndroid Build Coastguard Worker iadst_16 v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1, v0 1287*c0909341SAndroid Build Coastguard Worker jr t0 1288*c0909341SAndroid Build Coastguard Workerendfunc 1289*c0909341SAndroid Build Coastguard Worker 1290*c0909341SAndroid Build Coastguard Worker.macro def_horz_16 variant 1291*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_horz\variant\()_16x8_rvv, export=1, ext=v 1292*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 1293*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t4) 1294*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t4) 1295*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1296*c0909341SAndroid Build Coastguard Worker add t4, t4, t6 1297*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t4) 1298*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t4) 1299*c0909341SAndroid Build Coastguard Worker.endr 1300*c0909341SAndroid Build Coastguard Worker.ifc \variant, _identity 1301*c0909341SAndroid Build Coastguard Worker li t1, 2*(5793-4096)*8 1302*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1303*c0909341SAndroid Build Coastguard Worker vsmul.vx v16, v\i, t1 1304*c0909341SAndroid Build Coastguard Worker vsra.vi v16, v16, 1 1305*c0909341SAndroid Build Coastguard Worker vaadd.vv v\i, v\i, v16 1306*c0909341SAndroid Build Coastguard Worker.endr 1307*c0909341SAndroid Build Coastguard Worker j L(horz_16x8_epilog) 1308*c0909341SAndroid Build Coastguard Worker.else 1309*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1310*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1311*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 2 1312*c0909341SAndroid Build Coastguard Worker.endr 1313*c0909341SAndroid Build Coastguard WorkerL(horz_16x8_epilog): 1314*c0909341SAndroid Build Coastguard Worker vsse16.v v0, (t5), t6 1315*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1316*c0909341SAndroid Build Coastguard Worker addi t5, t5, 2 1317*c0909341SAndroid Build Coastguard Worker vsse16.v v\i, (t5), t6 1318*c0909341SAndroid Build Coastguard Worker.endr 1319*c0909341SAndroid Build Coastguard Worker jr a7 1320*c0909341SAndroid Build Coastguard Worker.endif 1321*c0909341SAndroid Build Coastguard Workerendfunc 1322*c0909341SAndroid Build Coastguard Worker.endm 1323*c0909341SAndroid Build Coastguard Worker 1324*c0909341SAndroid Build Coastguard Workerdef_horz_16 _identity 1325*c0909341SAndroid Build Coastguard Workerdef_horz_16 1326*c0909341SAndroid Build Coastguard Worker 1327*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_vert_8x16_rvv, export=1, ext=v 1328*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1329*c0909341SAndroid Build Coastguard Worker 1330*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t4) 1331*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1332*c0909341SAndroid Build Coastguard Worker add t4, t4, t6 1333*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t4) 1334*c0909341SAndroid Build Coastguard Worker.endr 1335*c0909341SAndroid Build Coastguard Worker 1336*c0909341SAndroid Build Coastguard Worker jalr t0, a5 1337*c0909341SAndroid Build Coastguard Worker 1338*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1339*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 4 1340*c0909341SAndroid Build Coastguard Worker.endr 1341*c0909341SAndroid Build Coastguard Worker 1342*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e8, mf2, ta, ma 1343*c0909341SAndroid Build Coastguard Worker 1344*c0909341SAndroid Build Coastguard Worker vle8.v v16, (t5) 1345*c0909341SAndroid Build Coastguard Worker add t0, t5, a1 1346*c0909341SAndroid Build Coastguard Worker vle8.v v17, (t0) 1347*c0909341SAndroid Build Coastguard Worker.irp i, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 1348*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1349*c0909341SAndroid Build Coastguard Worker vle8.v v\i, (t0) 1350*c0909341SAndroid Build Coastguard Worker.endr 1351*c0909341SAndroid Build Coastguard Worker 1352*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v16 1353*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v17 1354*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v18 1355*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v19 1356*c0909341SAndroid Build Coastguard Worker vwaddu.wv v4, v4, v20 1357*c0909341SAndroid Build Coastguard Worker vwaddu.wv v5, v5, v21 1358*c0909341SAndroid Build Coastguard Worker vwaddu.wv v6, v6, v22 1359*c0909341SAndroid Build Coastguard Worker vwaddu.wv v7, v7, v23 1360*c0909341SAndroid Build Coastguard Worker vwaddu.wv v8, v8, v24 1361*c0909341SAndroid Build Coastguard Worker vwaddu.wv v9, v9, v25 1362*c0909341SAndroid Build Coastguard Worker vwaddu.wv v10, v10, v26 1363*c0909341SAndroid Build Coastguard Worker vwaddu.wv v11, v11, v27 1364*c0909341SAndroid Build Coastguard Worker vwaddu.wv v12, v12, v28 1365*c0909341SAndroid Build Coastguard Worker vwaddu.wv v13, v13, v29 1366*c0909341SAndroid Build Coastguard Worker vwaddu.wv v14, v14, v30 1367*c0909341SAndroid Build Coastguard Worker vwaddu.wv v15, v15, v31 1368*c0909341SAndroid Build Coastguard Worker 1369*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m1, ta, ma 1370*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1371*c0909341SAndroid Build Coastguard Worker vmax.vx v\i, v\i, zero 1372*c0909341SAndroid Build Coastguard Worker.endr 1373*c0909341SAndroid Build Coastguard Worker 1374*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 1375*c0909341SAndroid Build Coastguard Worker vnclipu.wi v16, v0, 0 1376*c0909341SAndroid Build Coastguard Worker vnclipu.wi v17, v1, 0 1377*c0909341SAndroid Build Coastguard Worker vnclipu.wi v18, v2, 0 1378*c0909341SAndroid Build Coastguard Worker vnclipu.wi v19, v3, 0 1379*c0909341SAndroid Build Coastguard Worker vnclipu.wi v20, v4, 0 1380*c0909341SAndroid Build Coastguard Worker vnclipu.wi v21, v5, 0 1381*c0909341SAndroid Build Coastguard Worker vnclipu.wi v22, v6, 0 1382*c0909341SAndroid Build Coastguard Worker vnclipu.wi v23, v7, 0 1383*c0909341SAndroid Build Coastguard Worker vnclipu.wi v24, v8, 0 1384*c0909341SAndroid Build Coastguard Worker vnclipu.wi v25, v9, 0 1385*c0909341SAndroid Build Coastguard Worker vnclipu.wi v26, v10, 0 1386*c0909341SAndroid Build Coastguard Worker vnclipu.wi v27, v11, 0 1387*c0909341SAndroid Build Coastguard Worker vnclipu.wi v28, v12, 0 1388*c0909341SAndroid Build Coastguard Worker vnclipu.wi v29, v13, 0 1389*c0909341SAndroid Build Coastguard Worker vnclipu.wi v30, v14, 0 1390*c0909341SAndroid Build Coastguard Worker vnclipu.wi v31, v15, 0 1391*c0909341SAndroid Build Coastguard Worker 1392*c0909341SAndroid Build Coastguard Worker vse8.v v16, (t5) 1393*c0909341SAndroid Build Coastguard Worker.irp i, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 1394*c0909341SAndroid Build Coastguard Worker add t5, t5, a1 1395*c0909341SAndroid Build Coastguard Worker vse8.v v\i, (t5) 1396*c0909341SAndroid Build Coastguard Worker.endr 1397*c0909341SAndroid Build Coastguard Worker 1398*c0909341SAndroid Build Coastguard Worker jr a7 1399*c0909341SAndroid Build Coastguard Workerendfunc 1400*c0909341SAndroid Build Coastguard Worker 1401*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_16x16_rvv, export=1, ext=v 1402*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1403*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1404*c0909341SAndroid Build Coastguard Worker addi sp, sp, -16*32 1405*c0909341SAndroid Build Coastguard Worker.irp i, 8, 0 1406*c0909341SAndroid Build Coastguard Worker addi t4, a2, \i*2 1407*c0909341SAndroid Build Coastguard Worker addi t5, sp, \i*16*2 1408*c0909341SAndroid Build Coastguard Worker.if \i == 8 1409*c0909341SAndroid Build Coastguard Worker blt a3, a7, 1f 1410*c0909341SAndroid Build Coastguard Worker.endif 1411*c0909341SAndroid Build Coastguard Worker li t6, 16*2 1412*c0909341SAndroid Build Coastguard Worker jalr a7, a6 1413*c0909341SAndroid Build Coastguard Worker.if \i == 8 1414*c0909341SAndroid Build Coastguard Worker j 2f 1415*c0909341SAndroid Build Coastguard Worker1: 1416*c0909341SAndroid Build Coastguard Worker li t1, 64 1417*c0909341SAndroid Build Coastguard Worker vsetvli zero, t1, e16, m8, ta, ma 1418*c0909341SAndroid Build Coastguard Worker vmv.v.x v0, zero 1419*c0909341SAndroid Build Coastguard Worker vse16.v v0, (t5) 1420*c0909341SAndroid Build Coastguard Worker addi t5, t5, 128 1421*c0909341SAndroid Build Coastguard Worker vse16.v v0, (t5) 1422*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1423*c0909341SAndroid Build Coastguard Worker2: 1424*c0909341SAndroid Build Coastguard Worker.endif 1425*c0909341SAndroid Build Coastguard Worker.endr 1426*c0909341SAndroid Build Coastguard Worker.irp i, 0, 8 1427*c0909341SAndroid Build Coastguard Worker addi t4, sp, \i*2 1428*c0909341SAndroid Build Coastguard Worker addi t5, a0, \i 1429*c0909341SAndroid Build Coastguard Worker li t6, 16*2 1430*c0909341SAndroid Build Coastguard Worker jal a7, inv_txfm_add_vert_8x16_rvv 1431*c0909341SAndroid Build Coastguard Worker.endr 1432*c0909341SAndroid Build Coastguard Worker addi sp, sp, 16*32 1433*c0909341SAndroid Build Coastguard Worker ret 1434*c0909341SAndroid Build Coastguard Workerendfunc 1435*c0909341SAndroid Build Coastguard Worker 1436*c0909341SAndroid Build Coastguard Worker.macro def_fn_16x16 txfm1, txfm2, eob_half 1437*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_16x16_8bpc_rvv, export=1, ext=v 1438*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 1439*c0909341SAndroid Build Coastguard Worker beqz a3, 1f 1440*c0909341SAndroid Build Coastguard Worker.endif 1441*c0909341SAndroid Build Coastguard Worker.ifc \txfm1, identity 1442*c0909341SAndroid Build Coastguard Worker la a6, inv_txfm_horz_identity_16x8_rvv 1443*c0909341SAndroid Build Coastguard Worker.else 1444*c0909341SAndroid Build Coastguard Worker la a6, inv_txfm_horz_16x8_rvv 1445*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x16_rvv 1446*c0909341SAndroid Build Coastguard Worker.endif 1447*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x16_rvv 1448*c0909341SAndroid Build Coastguard Worker li a7, \eob_half 1449*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_16x16_rvv 1450*c0909341SAndroid Build Coastguard Worker.ifc \txfm1\()_\txfm2, dct_dct 1451*c0909341SAndroid Build Coastguard Worker1: 1452*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1453*c0909341SAndroid Build Coastguard Worker vsetivli zero, 16, e16, m2, ta, ma 1454*c0909341SAndroid Build Coastguard Worker lh t2, (a2) 1455*c0909341SAndroid Build Coastguard Worker li t3, 2896*8 1456*c0909341SAndroid Build Coastguard Worker li t4, 1<<14 1457*c0909341SAndroid Build Coastguard Worker li t5, 0xFFFF 1458*c0909341SAndroid Build Coastguard Worker li t6, -0x10000 1459*c0909341SAndroid Build Coastguard Worker 1460*c0909341SAndroid Build Coastguard Worker sh x0, (a2) 1461*c0909341SAndroid Build Coastguard Worker 1462*c0909341SAndroid Build Coastguard Worker mul t2, t2, t3 1463*c0909341SAndroid Build Coastguard Worker add t2, t2, t4 1464*c0909341SAndroid Build Coastguard Worker srai t2, t2, 15 1465*c0909341SAndroid Build Coastguard Worker ble t2, t5, 3f 1466*c0909341SAndroid Build Coastguard Worker mv t2, t5 1467*c0909341SAndroid Build Coastguard Worker3: 1468*c0909341SAndroid Build Coastguard Worker ble t6, t2, 4f 1469*c0909341SAndroid Build Coastguard Worker mv t2, t6 1470*c0909341SAndroid Build Coastguard Worker4: 1471*c0909341SAndroid Build Coastguard Worker addi t2, t2, 2 1472*c0909341SAndroid Build Coastguard Worker srai t2, t2, 2 1473*c0909341SAndroid Build Coastguard Worker mul t2, t2, t3 1474*c0909341SAndroid Build Coastguard Worker add t2, t2, t4 1475*c0909341SAndroid Build Coastguard Worker srai t2, t2, 15 1476*c0909341SAndroid Build Coastguard Worker ble t2, t5, 5f 1477*c0909341SAndroid Build Coastguard Worker mv t2, t5 1478*c0909341SAndroid Build Coastguard Worker5: 1479*c0909341SAndroid Build Coastguard Worker ble t6, t2, 6f 1480*c0909341SAndroid Build Coastguard Worker mv t2, t6 1481*c0909341SAndroid Build Coastguard Worker6: 1482*c0909341SAndroid Build Coastguard Worker addi t2, t2, 8 1483*c0909341SAndroid Build Coastguard Worker srai t2, t2, 4 1484*c0909341SAndroid Build Coastguard Worker vmv.v.x v24, t2 1485*c0909341SAndroid Build Coastguard Worker 1486*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, m1, ta, ma 1487*c0909341SAndroid Build Coastguard Worker add t2, a1, a1 1488*c0909341SAndroid Build Coastguard Worker li t3, 16 1489*c0909341SAndroid Build Coastguard Worker2: 1490*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 1491*c0909341SAndroid Build Coastguard Worker vle8.v v16, (a0) 1492*c0909341SAndroid Build Coastguard Worker vle8.v v17, (t0) 1493*c0909341SAndroid Build Coastguard Worker 1494*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v24, v16 1495*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v24, v17 1496*c0909341SAndroid Build Coastguard Worker 1497*c0909341SAndroid Build Coastguard Worker addi t3, t3, -2 # loop counter 1498*c0909341SAndroid Build Coastguard Worker 1499*c0909341SAndroid Build Coastguard Worker 1500*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m2, ta, ma 1501*c0909341SAndroid Build Coastguard Worker.irp i, 0, 2 1502*c0909341SAndroid Build Coastguard Worker vmax.vx v\i, v\i, zero 1503*c0909341SAndroid Build Coastguard Worker.endr 1504*c0909341SAndroid Build Coastguard Worker 1505*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, m1, ta, ma 1506*c0909341SAndroid Build Coastguard Worker 1507*c0909341SAndroid Build Coastguard Worker vnclipu.wi v16, v0, 0 1508*c0909341SAndroid Build Coastguard Worker vnclipu.wi v17, v2, 0 1509*c0909341SAndroid Build Coastguard Worker 1510*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 1511*c0909341SAndroid Build Coastguard Worker vse8.v v16, (a0) 1512*c0909341SAndroid Build Coastguard Worker add a0, a0, t2 1513*c0909341SAndroid Build Coastguard Worker vse8.v v17, (t0) 1514*c0909341SAndroid Build Coastguard Worker 1515*c0909341SAndroid Build Coastguard Worker bnez t3, 2b 1516*c0909341SAndroid Build Coastguard Worker 1517*c0909341SAndroid Build Coastguard Worker ret 1518*c0909341SAndroid Build Coastguard Worker.endif 1519*c0909341SAndroid Build Coastguard Workerendfunc 1520*c0909341SAndroid Build Coastguard Worker.endm 1521*c0909341SAndroid Build Coastguard Worker 1522*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 dct, dct, 36 1523*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 identity, identity, 36 1524*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 dct, adst, 36 1525*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 dct, flipadst, 36 1526*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 dct, identity, 8 1527*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 adst, dct, 36 1528*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 adst, adst, 36 1529*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 adst, flipadst, 36 1530*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 flipadst, dct, 36 1531*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 flipadst, adst, 36 1532*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 flipadst, flipadst, 36 1533*c0909341SAndroid Build Coastguard Workerdef_fn_16x16 identity, dct, 8 1534*c0909341SAndroid Build Coastguard Worker 1535*c0909341SAndroid Build Coastguard Worker.macro def_fn_416_base variant 1536*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_\variant\()add_4x16_rvv, export=1, ext=v 1537*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1538*c0909341SAndroid Build Coastguard Worker 1539*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1540*c0909341SAndroid Build Coastguard Worker 1541*c0909341SAndroid Build Coastguard Worker blt a3, a6, 1f 1542*c0909341SAndroid Build Coastguard Worker 1543*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 1544*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t0) 1545*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1546*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1547*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1548*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 1549*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1550*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 1551*c0909341SAndroid Build Coastguard Worker 1552*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1553*c0909341SAndroid Build Coastguard Worker li t1, (5793-4096)*8 1554*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v0, t1 1555*c0909341SAndroid Build Coastguard Worker vaadd.vv v4, v0, v8 1556*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v1, t1 1557*c0909341SAndroid Build Coastguard Worker vaadd.vv v5, v1, v8 1558*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v2, t1 1559*c0909341SAndroid Build Coastguard Worker vaadd.vv v6, v2, v8 1560*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v3, t1 1561*c0909341SAndroid Build Coastguard Worker vaadd.vv v7, v3, v8 1562*c0909341SAndroid Build Coastguard Worker.else 1563*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1564*c0909341SAndroid Build Coastguard Worker 1565*c0909341SAndroid Build Coastguard Worker vssra.vi v4, v0, 1 1566*c0909341SAndroid Build Coastguard Worker vssra.vi v5, v1, 1 1567*c0909341SAndroid Build Coastguard Worker vssra.vi v6, v2, 1 1568*c0909341SAndroid Build Coastguard Worker vssra.vi v7, v3, 1 1569*c0909341SAndroid Build Coastguard Worker.endif 1570*c0909341SAndroid Build Coastguard Worker 1571*c0909341SAndroid Build Coastguard Worker j 2f 1572*c0909341SAndroid Build Coastguard Worker 1573*c0909341SAndroid Build Coastguard Worker1: 1574*c0909341SAndroid Build Coastguard Worker.irp i, 4, 5, 6, 7 1575*c0909341SAndroid Build Coastguard Worker vmv.v.x v\i, zero 1576*c0909341SAndroid Build Coastguard Worker.endr 1577*c0909341SAndroid Build Coastguard Worker 1578*c0909341SAndroid Build Coastguard Worker2: 1579*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 1580*c0909341SAndroid Build Coastguard Worker addi t0, a2, 32 1581*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1582*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1583*c0909341SAndroid Build Coastguard Worker vle16.v v2, (t0) 1584*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1585*c0909341SAndroid Build Coastguard Worker vle16.v v3, (t0) 1586*c0909341SAndroid Build Coastguard Worker 1587*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1588*c0909341SAndroid Build Coastguard Worker li t1, (5793-4096)*8 1589*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3 1590*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v\i, t1 1591*c0909341SAndroid Build Coastguard Worker vaadd.vv v\i, v\i, v8 1592*c0909341SAndroid Build Coastguard Worker.endr 1593*c0909341SAndroid Build Coastguard Worker 1594*c0909341SAndroid Build Coastguard Worker j L(itx_4x16_epilog) 1595*c0909341SAndroid Build Coastguard Worker.else 1596*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1597*c0909341SAndroid Build Coastguard Worker 1598*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 1 1599*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 1 1600*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 1 1601*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 1 1602*c0909341SAndroid Build Coastguard Worker 1603*c0909341SAndroid Build Coastguard WorkerL(itx_4x16_epilog): 1604*c0909341SAndroid Build Coastguard Worker vsseg4e16.v v0, (a2) 1605*c0909341SAndroid Build Coastguard Worker addi t0, a2, 64 1606*c0909341SAndroid Build Coastguard Worker vsseg4e16.v v4, (t0) 1607*c0909341SAndroid Build Coastguard Worker 1608*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 1609*c0909341SAndroid Build Coastguard Worker 1610*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 1611*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 1612*c0909341SAndroid Build Coastguard Worker vse16.v v16, (a2) 1613*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 1614*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1615*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1616*c0909341SAndroid Build Coastguard Worker.irp i, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1617*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 1618*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1619*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1620*c0909341SAndroid Build Coastguard Worker.endr 1621*c0909341SAndroid Build Coastguard Worker 1622*c0909341SAndroid Build Coastguard Worker jalr t0, a5 1623*c0909341SAndroid Build Coastguard Worker 1624*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1625*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 4 1626*c0909341SAndroid Build Coastguard Worker.endr 1627*c0909341SAndroid Build Coastguard Worker 1628*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 1629*c0909341SAndroid Build Coastguard Worker 1630*c0909341SAndroid Build Coastguard Worker vle8.v v16, (a0) 1631*c0909341SAndroid Build Coastguard Worker add t0, a0, a1 1632*c0909341SAndroid Build Coastguard Worker vle8.v v17, (t0) 1633*c0909341SAndroid Build Coastguard Worker.irp i, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 1634*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1635*c0909341SAndroid Build Coastguard Worker vle8.v v\i, (t0) 1636*c0909341SAndroid Build Coastguard Worker.endr 1637*c0909341SAndroid Build Coastguard Worker 1638*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v16 1639*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v17 1640*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v18 1641*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v19 1642*c0909341SAndroid Build Coastguard Worker vwaddu.wv v4, v4, v20 1643*c0909341SAndroid Build Coastguard Worker vwaddu.wv v5, v5, v21 1644*c0909341SAndroid Build Coastguard Worker vwaddu.wv v6, v6, v22 1645*c0909341SAndroid Build Coastguard Worker vwaddu.wv v7, v7, v23 1646*c0909341SAndroid Build Coastguard Worker vwaddu.wv v8, v8, v24 1647*c0909341SAndroid Build Coastguard Worker vwaddu.wv v9, v9, v25 1648*c0909341SAndroid Build Coastguard Worker vwaddu.wv v10, v10, v26 1649*c0909341SAndroid Build Coastguard Worker vwaddu.wv v11, v11, v27 1650*c0909341SAndroid Build Coastguard Worker vwaddu.wv v12, v12, v28 1651*c0909341SAndroid Build Coastguard Worker vwaddu.wv v13, v13, v29 1652*c0909341SAndroid Build Coastguard Worker vwaddu.wv v14, v14, v30 1653*c0909341SAndroid Build Coastguard Worker vwaddu.wv v15, v15, v31 1654*c0909341SAndroid Build Coastguard Worker 1655*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, mf2, ta, ma 1656*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1657*c0909341SAndroid Build Coastguard Worker vmax.vx v\i, v\i, zero 1658*c0909341SAndroid Build Coastguard Worker.endr 1659*c0909341SAndroid Build Coastguard Worker 1660*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf4, ta, ma 1661*c0909341SAndroid Build Coastguard Worker 1662*c0909341SAndroid Build Coastguard Worker vnclipu.wi v16, v0, 0 1663*c0909341SAndroid Build Coastguard Worker vnclipu.wi v17, v1, 0 1664*c0909341SAndroid Build Coastguard Worker vnclipu.wi v18, v2, 0 1665*c0909341SAndroid Build Coastguard Worker vnclipu.wi v19, v3, 0 1666*c0909341SAndroid Build Coastguard Worker vnclipu.wi v20, v4, 0 1667*c0909341SAndroid Build Coastguard Worker vnclipu.wi v21, v5, 0 1668*c0909341SAndroid Build Coastguard Worker vnclipu.wi v22, v6, 0 1669*c0909341SAndroid Build Coastguard Worker vnclipu.wi v23, v7, 0 1670*c0909341SAndroid Build Coastguard Worker vnclipu.wi v24, v8, 0 1671*c0909341SAndroid Build Coastguard Worker vnclipu.wi v25, v9, 0 1672*c0909341SAndroid Build Coastguard Worker vnclipu.wi v26, v10, 0 1673*c0909341SAndroid Build Coastguard Worker vnclipu.wi v27, v11, 0 1674*c0909341SAndroid Build Coastguard Worker vnclipu.wi v28, v12, 0 1675*c0909341SAndroid Build Coastguard Worker vnclipu.wi v29, v13, 0 1676*c0909341SAndroid Build Coastguard Worker vnclipu.wi v30, v14, 0 1677*c0909341SAndroid Build Coastguard Worker vnclipu.wi v31, v15, 0 1678*c0909341SAndroid Build Coastguard Worker 1679*c0909341SAndroid Build Coastguard Worker vse8.v v16, (a0) 1680*c0909341SAndroid Build Coastguard Worker.irp i, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 1681*c0909341SAndroid Build Coastguard Worker add a0, a0, a1 1682*c0909341SAndroid Build Coastguard Worker vse8.v v\i, (a0) 1683*c0909341SAndroid Build Coastguard Worker.endr 1684*c0909341SAndroid Build Coastguard Worker 1685*c0909341SAndroid Build Coastguard Worker ret 1686*c0909341SAndroid Build Coastguard Worker.endif 1687*c0909341SAndroid Build Coastguard Workerendfunc 1688*c0909341SAndroid Build Coastguard Worker 1689*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_\variant\()add_16x4_rvv, export=1, ext=v 1690*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1691*c0909341SAndroid Build Coastguard Worker 1692*c0909341SAndroid Build Coastguard Worker vsetivli zero, 4, e16, mf2, ta, ma 1693*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 1694*c0909341SAndroid Build Coastguard Worker addi t0, a2, 8 1695*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1696*c0909341SAndroid Build Coastguard Worker.irp i, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1697*c0909341SAndroid Build Coastguard Worker addi t0, t0, 8 1698*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1699*c0909341SAndroid Build Coastguard Worker.endr 1700*c0909341SAndroid Build Coastguard Worker 1701*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1702*c0909341SAndroid Build Coastguard Worker li t1, 2*(5793-4096)*8 1703*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1704*c0909341SAndroid Build Coastguard Worker vsmul.vx v16, v\i, t1 1705*c0909341SAndroid Build Coastguard Worker vssra.vi v16, v16, 1 1706*c0909341SAndroid Build Coastguard Worker vsadd.vv v\i, v\i, v16 1707*c0909341SAndroid Build Coastguard Worker.endr 1708*c0909341SAndroid Build Coastguard Worker 1709*c0909341SAndroid Build Coastguard Worker j L(itx_16x4_epilog) 1710*c0909341SAndroid Build Coastguard Worker.else 1711*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1712*c0909341SAndroid Build Coastguard Worker 1713*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1714*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 1 1715*c0909341SAndroid Build Coastguard Worker.endr 1716*c0909341SAndroid Build Coastguard Worker 1717*c0909341SAndroid Build Coastguard WorkerL(itx_16x4_epilog): 1718*c0909341SAndroid Build Coastguard Worker li t0, 32 1719*c0909341SAndroid Build Coastguard Worker vssseg8e16.v v0, (a2), t0 1720*c0909341SAndroid Build Coastguard Worker addi t1, a2, 16 1721*c0909341SAndroid Build Coastguard Worker vssseg8e16.v v8, (t1), t0 1722*c0909341SAndroid Build Coastguard Worker 1723*c0909341SAndroid Build Coastguard Worker.irp j, 0, 8 1724*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1725*c0909341SAndroid Build Coastguard Worker 1726*c0909341SAndroid Build Coastguard Worker vmv.v.x v4, zero 1727*c0909341SAndroid Build Coastguard Worker addi t0, a2, \j*2 1728*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t0) 1729*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 1730*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3 1731*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1732*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1733*c0909341SAndroid Build Coastguard Worker vse16.v v4, (t0) 1734*c0909341SAndroid Build Coastguard Worker.endr 1735*c0909341SAndroid Build Coastguard Worker 1736*c0909341SAndroid Build Coastguard Worker jalr t0, a5 1737*c0909341SAndroid Build Coastguard Worker 1738*c0909341SAndroid Build Coastguard Worker vssra.vi v0, v0, 4 1739*c0909341SAndroid Build Coastguard Worker vssra.vi v1, v1, 4 1740*c0909341SAndroid Build Coastguard Worker vssra.vi v2, v2, 4 1741*c0909341SAndroid Build Coastguard Worker vssra.vi v3, v3, 4 1742*c0909341SAndroid Build Coastguard Worker 1743*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 1744*c0909341SAndroid Build Coastguard Worker addi t0, a0, \j 1745*c0909341SAndroid Build Coastguard Worker vle8.v v4, (t0) 1746*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1747*c0909341SAndroid Build Coastguard Worker vle8.v v5, (t0) 1748*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1749*c0909341SAndroid Build Coastguard Worker vle8.v v6, (t0) 1750*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1751*c0909341SAndroid Build Coastguard Worker vle8.v v7, (t0) 1752*c0909341SAndroid Build Coastguard Worker 1753*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v4 1754*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v5 1755*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v6 1756*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v7 1757*c0909341SAndroid Build Coastguard Worker 1758*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m1, ta, ma 1759*c0909341SAndroid Build Coastguard Worker vmax.vx v0, v0, zero 1760*c0909341SAndroid Build Coastguard Worker vmax.vx v1, v1, zero 1761*c0909341SAndroid Build Coastguard Worker vmax.vx v2, v2, zero 1762*c0909341SAndroid Build Coastguard Worker vmax.vx v3, v3, zero 1763*c0909341SAndroid Build Coastguard Worker 1764*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 1765*c0909341SAndroid Build Coastguard Worker 1766*c0909341SAndroid Build Coastguard Worker vnclipu.wi v4, v0, 0 1767*c0909341SAndroid Build Coastguard Worker vnclipu.wi v5, v1, 0 1768*c0909341SAndroid Build Coastguard Worker vnclipu.wi v6, v2, 0 1769*c0909341SAndroid Build Coastguard Worker vnclipu.wi v7, v3, 0 1770*c0909341SAndroid Build Coastguard Worker 1771*c0909341SAndroid Build Coastguard Worker addi t0, a0, \j 1772*c0909341SAndroid Build Coastguard Worker vse8.v v4, (t0) 1773*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1774*c0909341SAndroid Build Coastguard Worker vse8.v v5, (t0) 1775*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1776*c0909341SAndroid Build Coastguard Worker vse8.v v6, (t0) 1777*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1778*c0909341SAndroid Build Coastguard Worker vse8.v v7, (t0) 1779*c0909341SAndroid Build Coastguard Worker.endr 1780*c0909341SAndroid Build Coastguard Worker 1781*c0909341SAndroid Build Coastguard Worker ret 1782*c0909341SAndroid Build Coastguard Worker.endif 1783*c0909341SAndroid Build Coastguard Workerendfunc 1784*c0909341SAndroid Build Coastguard Worker.endm 1785*c0909341SAndroid Build Coastguard Worker 1786*c0909341SAndroid Build Coastguard Workerdef_fn_416_base identity_ 1787*c0909341SAndroid Build Coastguard Workerdef_fn_416_base 1788*c0909341SAndroid Build Coastguard Worker 1789*c0909341SAndroid Build Coastguard Worker.macro def_fn_416 w, h, txfm1, txfm2, eob_half 1790*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_\w\()x\h\()_8bpc_rvv, export=1 1791*c0909341SAndroid Build Coastguard Worker.if \w == 4 && (\txfm1 == adst || \txfm1 == flipadst) 1792*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x\w\()w_rvv 1793*c0909341SAndroid Build Coastguard Worker.elseif \txfm1 != identity 1794*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x\w\()_rvv 1795*c0909341SAndroid Build Coastguard Worker.endif 1796*c0909341SAndroid Build Coastguard Worker.if \h == 4 && (\txfm2 == adst || \txfm2 == flipadst) 1797*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x\h\()w_rvv 1798*c0909341SAndroid Build Coastguard Worker.else 1799*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x\h\()_rvv 1800*c0909341SAndroid Build Coastguard Worker.endif 1801*c0909341SAndroid Build Coastguard Worker.if \w == 4 1802*c0909341SAndroid Build Coastguard Worker li a6, \eob_half 1803*c0909341SAndroid Build Coastguard Worker.endif 1804*c0909341SAndroid Build Coastguard Worker.ifc \txfm1, identity 1805*c0909341SAndroid Build Coastguard Worker j inv_txfm_identity_add_\w\()x\h\()_rvv 1806*c0909341SAndroid Build Coastguard Worker.else 1807*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_\w\()x\h\()_rvv 1808*c0909341SAndroid Build Coastguard Worker.endif 1809*c0909341SAndroid Build Coastguard Workerendfunc 1810*c0909341SAndroid Build Coastguard Worker.endm 1811*c0909341SAndroid Build Coastguard Worker 1812*c0909341SAndroid Build Coastguard Worker.macro def_fns_416 w, h 1813*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, dct, dct, 29 1814*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, identity, identity, 29 1815*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, dct, adst, 29 1816*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, dct, flipadst, 29 1817*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, dct, identity, 8 1818*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, adst, dct, 29 1819*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, adst, adst, 29 1820*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, adst, flipadst, 29 1821*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, flipadst, dct, 29 1822*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, flipadst, adst, 29 1823*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, flipadst, flipadst, 29 1824*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, identity, dct, 32 1825*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, adst, identity, 8 1826*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, flipadst, identity, 8 1827*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, identity, adst, 32 1828*c0909341SAndroid Build Coastguard Workerdef_fn_416 \w, \h, identity, flipadst, 32 1829*c0909341SAndroid Build Coastguard Worker.endm 1830*c0909341SAndroid Build Coastguard Worker 1831*c0909341SAndroid Build Coastguard Workerdef_fns_416 4, 16 1832*c0909341SAndroid Build Coastguard Workerdef_fns_416 16, 4 1833*c0909341SAndroid Build Coastguard Worker 1834*c0909341SAndroid Build Coastguard Worker.macro def_fn_816_base variant 1835*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_\variant\()add_8x16_rvv, export=1, ext=v 1836*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1837*c0909341SAndroid Build Coastguard Worker 1838*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1839*c0909341SAndroid Build Coastguard Worker 1840*c0909341SAndroid Build Coastguard Worker blt a3, a6, 1f 1841*c0909341SAndroid Build Coastguard Worker 1842*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 1843*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 1844*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t0) 1845*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1846*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7 1847*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1848*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1849*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1850*c0909341SAndroid Build Coastguard Worker.endr 1851*c0909341SAndroid Build Coastguard Worker 1852*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 1853*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1854*c0909341SAndroid Build Coastguard Worker vsmul.vx v8, v0, t1 1855*c0909341SAndroid Build Coastguard Worker vsmul.vx v9, v1, t1 1856*c0909341SAndroid Build Coastguard Worker vsmul.vx v10, v2, t1 1857*c0909341SAndroid Build Coastguard Worker vsmul.vx v11, v3, t1 1858*c0909341SAndroid Build Coastguard Worker vsmul.vx v12, v4, t1 1859*c0909341SAndroid Build Coastguard Worker vsmul.vx v13, v5, t1 1860*c0909341SAndroid Build Coastguard Worker vsmul.vx v14, v6, t1 1861*c0909341SAndroid Build Coastguard Worker vsmul.vx v15, v7, t1 1862*c0909341SAndroid Build Coastguard Worker.else 1863*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 1864*c0909341SAndroid Build Coastguard Worker vsmul.vx v\i, v\i, t1 1865*c0909341SAndroid Build Coastguard Worker.endr 1866*c0909341SAndroid Build Coastguard Worker 1867*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1868*c0909341SAndroid Build Coastguard Worker 1869*c0909341SAndroid Build Coastguard Worker vssra.vi v8, v0, 1 1870*c0909341SAndroid Build Coastguard Worker vssra.vi v9, v1, 1 1871*c0909341SAndroid Build Coastguard Worker vssra.vi v10, v2, 1 1872*c0909341SAndroid Build Coastguard Worker vssra.vi v11, v3, 1 1873*c0909341SAndroid Build Coastguard Worker vssra.vi v12, v4, 1 1874*c0909341SAndroid Build Coastguard Worker vssra.vi v13, v5, 1 1875*c0909341SAndroid Build Coastguard Worker vssra.vi v14, v6, 1 1876*c0909341SAndroid Build Coastguard Worker vssra.vi v15, v7, 1 1877*c0909341SAndroid Build Coastguard Worker.endif 1878*c0909341SAndroid Build Coastguard Worker 1879*c0909341SAndroid Build Coastguard Worker j 2f 1880*c0909341SAndroid Build Coastguard Worker 1881*c0909341SAndroid Build Coastguard Worker1: 1882*c0909341SAndroid Build Coastguard Worker.irp i, 8, 9, 10, 11, 12, 13, 14, 15 1883*c0909341SAndroid Build Coastguard Worker vmv.v.x v\i, zero 1884*c0909341SAndroid Build Coastguard Worker.endr 1885*c0909341SAndroid Build Coastguard Worker 1886*c0909341SAndroid Build Coastguard Worker2: 1887*c0909341SAndroid Build Coastguard Worker vmv.v.x v16, zero 1888*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 1889*c0909341SAndroid Build Coastguard Worker vse16.v v16, (a2) 1890*c0909341SAndroid Build Coastguard Worker addi t0, a2, 32 1891*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1892*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1893*c0909341SAndroid Build Coastguard Worker.irp i, 2, 3, 4, 5, 6, 7 1894*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1895*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1896*c0909341SAndroid Build Coastguard Worker vse16.v v16, (t0) 1897*c0909341SAndroid Build Coastguard Worker.endr 1898*c0909341SAndroid Build Coastguard Worker 1899*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 1900*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 1901*c0909341SAndroid Build Coastguard Worker vsmul.vx v\i, v\i, t1 1902*c0909341SAndroid Build Coastguard Worker.endr 1903*c0909341SAndroid Build Coastguard Worker 1904*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1905*c0909341SAndroid Build Coastguard Worker j L(itx_8x16_epilog) 1906*c0909341SAndroid Build Coastguard Worker.else 1907*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1908*c0909341SAndroid Build Coastguard Worker 1909*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 1910*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 1 1911*c0909341SAndroid Build Coastguard Worker.endr 1912*c0909341SAndroid Build Coastguard Worker 1913*c0909341SAndroid Build Coastguard WorkerL(itx_8x16_epilog): 1914*c0909341SAndroid Build Coastguard Worker addi t4, sp, -8*32 1915*c0909341SAndroid Build Coastguard Worker vsseg8e16.v v0, (t4) 1916*c0909341SAndroid Build Coastguard Worker addi t0, t4, 8*16 1917*c0909341SAndroid Build Coastguard Worker vsseg8e16.v v8, (t0) 1918*c0909341SAndroid Build Coastguard Worker 1919*c0909341SAndroid Build Coastguard Worker mv t5, a0 1920*c0909341SAndroid Build Coastguard Worker li t6, 16 1921*c0909341SAndroid Build Coastguard Worker jal a7, inv_txfm_add_vert_8x16_rvv 1922*c0909341SAndroid Build Coastguard Worker 1923*c0909341SAndroid Build Coastguard Worker ret 1924*c0909341SAndroid Build Coastguard Worker.endif 1925*c0909341SAndroid Build Coastguard Workerendfunc 1926*c0909341SAndroid Build Coastguard Worker 1927*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_\variant\()add_16x8_rvv, export=1, ext=v 1928*c0909341SAndroid Build Coastguard Worker csrw vxrm, zero 1929*c0909341SAndroid Build Coastguard Worker 1930*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1931*c0909341SAndroid Build Coastguard Worker vle16.v v0, (a2) 1932*c0909341SAndroid Build Coastguard Worker addi t0, a2, 16 1933*c0909341SAndroid Build Coastguard Worker vle16.v v1, (t0) 1934*c0909341SAndroid Build Coastguard Worker.irp i, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1935*c0909341SAndroid Build Coastguard Worker addi t0, t0, 16 1936*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1937*c0909341SAndroid Build Coastguard Worker.endr 1938*c0909341SAndroid Build Coastguard Worker 1939*c0909341SAndroid Build Coastguard Worker li t1, 2896*8 1940*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1941*c0909341SAndroid Build Coastguard Worker vsmul.vx v\i, v\i, t1 1942*c0909341SAndroid Build Coastguard Worker.endr 1943*c0909341SAndroid Build Coastguard Worker 1944*c0909341SAndroid Build Coastguard Worker.ifc \variant, identity_ 1945*c0909341SAndroid Build Coastguard Worker li t1, 2*(5793-4096)*8 1946*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1947*c0909341SAndroid Build Coastguard Worker vsmul.vx v16, v\i, t1 1948*c0909341SAndroid Build Coastguard Worker vssra.vi v16, v16, 1 1949*c0909341SAndroid Build Coastguard Worker vsadd.vv v\i, v\i, v16 1950*c0909341SAndroid Build Coastguard Worker.endr 1951*c0909341SAndroid Build Coastguard Worker 1952*c0909341SAndroid Build Coastguard Worker j L(itx_16x8_epilog) 1953*c0909341SAndroid Build Coastguard Worker.else 1954*c0909341SAndroid Build Coastguard Worker jalr t0, a4 1955*c0909341SAndroid Build Coastguard Worker 1956*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1957*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 1 1958*c0909341SAndroid Build Coastguard Worker.endr 1959*c0909341SAndroid Build Coastguard Worker 1960*c0909341SAndroid Build Coastguard WorkerL(itx_16x8_epilog): 1961*c0909341SAndroid Build Coastguard Worker li t0, 32 1962*c0909341SAndroid Build Coastguard Worker vssseg8e16.v v0, (a2), t0 1963*c0909341SAndroid Build Coastguard Worker addi t1, a2, 16 1964*c0909341SAndroid Build Coastguard Worker vssseg8e16.v v8, (t1), t0 1965*c0909341SAndroid Build Coastguard Worker 1966*c0909341SAndroid Build Coastguard Worker.irp j, 0, 8 1967*c0909341SAndroid Build Coastguard Worker vsetivli zero, 8, e16, m1, ta, ma 1968*c0909341SAndroid Build Coastguard Worker 1969*c0909341SAndroid Build Coastguard Worker vmv.v.x v8, zero 1970*c0909341SAndroid Build Coastguard Worker addi t0, a2, \j*2 1971*c0909341SAndroid Build Coastguard Worker vle16.v v0, (t0) 1972*c0909341SAndroid Build Coastguard Worker vse16.v v8, (t0) 1973*c0909341SAndroid Build Coastguard Worker.irp i, 1, 2, 3, 4, 5, 6, 7 1974*c0909341SAndroid Build Coastguard Worker addi t0, t0, 32 1975*c0909341SAndroid Build Coastguard Worker vle16.v v\i, (t0) 1976*c0909341SAndroid Build Coastguard Worker vse16.v v8, (t0) 1977*c0909341SAndroid Build Coastguard Worker.endr 1978*c0909341SAndroid Build Coastguard Worker 1979*c0909341SAndroid Build Coastguard Worker jalr t0, a5 1980*c0909341SAndroid Build Coastguard Worker 1981*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 1982*c0909341SAndroid Build Coastguard Worker vssra.vi v\i, v\i, 4 1983*c0909341SAndroid Build Coastguard Worker.endr 1984*c0909341SAndroid Build Coastguard Worker 1985*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 1986*c0909341SAndroid Build Coastguard Worker addi t0, a0, \j 1987*c0909341SAndroid Build Coastguard Worker vle8.v v8, (t0) 1988*c0909341SAndroid Build Coastguard Worker.irp i, 9, 10, 11, 12, 13, 14, 15 1989*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 1990*c0909341SAndroid Build Coastguard Worker vle8.v v\i, (t0) 1991*c0909341SAndroid Build Coastguard Worker.endr 1992*c0909341SAndroid Build Coastguard Worker 1993*c0909341SAndroid Build Coastguard Worker vwaddu.wv v0, v0, v8 1994*c0909341SAndroid Build Coastguard Worker vwaddu.wv v1, v1, v9 1995*c0909341SAndroid Build Coastguard Worker vwaddu.wv v2, v2, v10 1996*c0909341SAndroid Build Coastguard Worker vwaddu.wv v3, v3, v11 1997*c0909341SAndroid Build Coastguard Worker vwaddu.wv v4, v4, v12 1998*c0909341SAndroid Build Coastguard Worker vwaddu.wv v5, v5, v13 1999*c0909341SAndroid Build Coastguard Worker vwaddu.wv v6, v6, v14 2000*c0909341SAndroid Build Coastguard Worker vwaddu.wv v7, v7, v15 2001*c0909341SAndroid Build Coastguard Worker 2002*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e16, m1, ta, ma 2003*c0909341SAndroid Build Coastguard Worker.irp i, 0, 1, 2, 3, 4, 5, 6, 7 2004*c0909341SAndroid Build Coastguard Worker vmax.vx v\i, v\i, zero 2005*c0909341SAndroid Build Coastguard Worker.endr 2006*c0909341SAndroid Build Coastguard Worker 2007*c0909341SAndroid Build Coastguard Worker vsetvli zero, zero, e8, mf2, ta, ma 2008*c0909341SAndroid Build Coastguard Worker 2009*c0909341SAndroid Build Coastguard Worker vnclipu.wi v8, v0, 0 2010*c0909341SAndroid Build Coastguard Worker vnclipu.wi v9, v1, 0 2011*c0909341SAndroid Build Coastguard Worker vnclipu.wi v10, v2, 0 2012*c0909341SAndroid Build Coastguard Worker vnclipu.wi v11, v3, 0 2013*c0909341SAndroid Build Coastguard Worker vnclipu.wi v12, v4, 0 2014*c0909341SAndroid Build Coastguard Worker vnclipu.wi v13, v5, 0 2015*c0909341SAndroid Build Coastguard Worker vnclipu.wi v14, v6, 0 2016*c0909341SAndroid Build Coastguard Worker vnclipu.wi v15, v7, 0 2017*c0909341SAndroid Build Coastguard Worker 2018*c0909341SAndroid Build Coastguard Worker addi t0, a0, \j 2019*c0909341SAndroid Build Coastguard Worker vse8.v v8, (t0) 2020*c0909341SAndroid Build Coastguard Worker.irp i, 9, 10, 11, 12, 13, 14, 15 2021*c0909341SAndroid Build Coastguard Worker add t0, t0, a1 2022*c0909341SAndroid Build Coastguard Worker vse8.v v\i, (t0) 2023*c0909341SAndroid Build Coastguard Worker.endr 2024*c0909341SAndroid Build Coastguard Worker.endr 2025*c0909341SAndroid Build Coastguard Worker 2026*c0909341SAndroid Build Coastguard Worker ret 2027*c0909341SAndroid Build Coastguard Worker.endif 2028*c0909341SAndroid Build Coastguard Workerendfunc 2029*c0909341SAndroid Build Coastguard Worker.endm 2030*c0909341SAndroid Build Coastguard Worker 2031*c0909341SAndroid Build Coastguard Workerdef_fn_816_base identity_ 2032*c0909341SAndroid Build Coastguard Workerdef_fn_816_base 2033*c0909341SAndroid Build Coastguard Worker 2034*c0909341SAndroid Build Coastguard Worker.macro def_fn_816 w, h, txfm1, txfm2, eob_half 2035*c0909341SAndroid Build Coastguard Workerfunction inv_txfm_add_\txfm1\()_\txfm2\()_\w\()x\h\()_8bpc_rvv, export=1 2036*c0909341SAndroid Build Coastguard Worker.ifnc \txfm1, identity 2037*c0909341SAndroid Build Coastguard Worker la a4, inv_\txfm1\()_e16_x\w\()_rvv 2038*c0909341SAndroid Build Coastguard Worker.endif 2039*c0909341SAndroid Build Coastguard Worker la a5, inv_\txfm2\()_e16_x\h\()_rvv 2040*c0909341SAndroid Build Coastguard Worker.if \w == 8 2041*c0909341SAndroid Build Coastguard Worker li a6, \eob_half 2042*c0909341SAndroid Build Coastguard Worker.endif 2043*c0909341SAndroid Build Coastguard Worker.ifc \txfm1, identity 2044*c0909341SAndroid Build Coastguard Worker j inv_txfm_identity_add_\w\()x\h\()_rvv 2045*c0909341SAndroid Build Coastguard Worker.else 2046*c0909341SAndroid Build Coastguard Worker j inv_txfm_add_\w\()x\h\()_rvv 2047*c0909341SAndroid Build Coastguard Worker.endif 2048*c0909341SAndroid Build Coastguard Workerendfunc 2049*c0909341SAndroid Build Coastguard Worker.endm 2050*c0909341SAndroid Build Coastguard Worker 2051*c0909341SAndroid Build Coastguard Worker.macro def_fns_816 w, h 2052*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, dct, dct, 43 2053*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, identity, identity, 43 2054*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, dct, adst, 43 2055*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, dct, flipadst, 43 2056*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, dct, identity, 8 2057*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, adst, dct, 43 2058*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, adst, adst, 43 2059*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, adst, flipadst, 43 2060*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, flipadst, dct, 43 2061*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, flipadst, adst, 43 2062*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, flipadst, flipadst, 43 2063*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, identity, dct, 64 2064*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, adst, identity, 8 2065*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, flipadst, identity, 8 2066*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, identity, adst, 64 2067*c0909341SAndroid Build Coastguard Workerdef_fn_816 \w, \h, identity, flipadst, 64 2068*c0909341SAndroid Build Coastguard Worker.endm 2069*c0909341SAndroid Build Coastguard Worker 2070*c0909341SAndroid Build Coastguard Workerdef_fns_816 8, 16 2071*c0909341SAndroid Build Coastguard Workerdef_fns_816 16, 8 2072