1*15dc779aSAndroid Build Coastguard Worker///****************************************************************************** 2*15dc779aSAndroid Build Coastguard Worker// * 3*15dc779aSAndroid Build Coastguard Worker// * Copyright (C) 2018 The Android Open Source Project 4*15dc779aSAndroid Build Coastguard Worker// * 5*15dc779aSAndroid Build Coastguard Worker// * Licensed under the Apache License, Version 2.0 (the "License"); 6*15dc779aSAndroid Build Coastguard Worker// * you may not use this file except in compliance with the License. 7*15dc779aSAndroid Build Coastguard Worker// * You may obtain a copy of the License at: 8*15dc779aSAndroid Build Coastguard Worker// * 9*15dc779aSAndroid Build Coastguard Worker// * http://www.apache.org/licenses/LICENSE-2.0 10*15dc779aSAndroid Build Coastguard Worker// * 11*15dc779aSAndroid Build Coastguard Worker// * Unless required by applicable law or agreed to in writing, software 12*15dc779aSAndroid Build Coastguard Worker// * distributed under the License is distributed on an "AS IS" BASIS, 13*15dc779aSAndroid Build Coastguard Worker// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*15dc779aSAndroid Build Coastguard Worker// * See the License for the specific language governing permissions and 15*15dc779aSAndroid Build Coastguard Worker// * limitations under the License. 16*15dc779aSAndroid Build Coastguard Worker// * 17*15dc779aSAndroid Build Coastguard Worker// ***************************************************************************** 18*15dc779aSAndroid Build Coastguard Worker// * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*15dc779aSAndroid Build Coastguard Worker//*/ 20*15dc779aSAndroid Build Coastguard Worker 21*15dc779aSAndroid Build Coastguard Worker 22*15dc779aSAndroid Build Coastguard Worker.macro push_v_regs 23*15dc779aSAndroid Build Coastguard Worker stp q8, q9, [sp, #-32]! 24*15dc779aSAndroid Build Coastguard Worker stp q10, q11, [sp, #-32]! 25*15dc779aSAndroid Build Coastguard Worker stp q12, q13, [sp, #-32]! 26*15dc779aSAndroid Build Coastguard Worker stp q14, q15, [sp, #-32]! 27*15dc779aSAndroid Build Coastguard Worker stp X8, X9, [sp, #-16]! 28*15dc779aSAndroid Build Coastguard Worker stp X10, X11, [sp, #-16]! 29*15dc779aSAndroid Build Coastguard Worker stp X12, X13, [sp, #-16]! 30*15dc779aSAndroid Build Coastguard Worker stp X22, X23, [sp, #-16]! 31*15dc779aSAndroid Build Coastguard Worker stp X16, X17, [sp, #-16]! 32*15dc779aSAndroid Build Coastguard Worker stp X20, X21, [sp, #-16]! 33*15dc779aSAndroid Build Coastguard Worker.endm 34*15dc779aSAndroid Build Coastguard Worker.macro pop_v_regs 35*15dc779aSAndroid Build Coastguard Worker ldp X20, X21, [sp], #16 36*15dc779aSAndroid Build Coastguard Worker ldp X16, X17, [sp], #16 37*15dc779aSAndroid Build Coastguard Worker ldp X22, X23, [sp], #16 38*15dc779aSAndroid Build Coastguard Worker ldp X12, X13, [sp], #16 39*15dc779aSAndroid Build Coastguard Worker ldp X10, X11, [sp], #16 40*15dc779aSAndroid Build Coastguard Worker ldp X8, X9, [sp], #16 41*15dc779aSAndroid Build Coastguard Worker ldp q14, q15, [sp], #32 42*15dc779aSAndroid Build Coastguard Worker ldp q12, q13, [sp], #32 43*15dc779aSAndroid Build Coastguard Worker ldp q10, q11, [sp], #32 44*15dc779aSAndroid Build Coastguard Worker ldp q8, q9, [sp], #32 45*15dc779aSAndroid Build Coastguard Worker.endm 46*15dc779aSAndroid Build Coastguard Worker 47*15dc779aSAndroid Build Coastguard Worker.macro swp reg1, reg2 48*15dc779aSAndroid Build Coastguard Worker MOV X16, \reg1 49*15dc779aSAndroid Build Coastguard Worker MOV \reg1, \reg2 50*15dc779aSAndroid Build Coastguard Worker MOV \reg2, x16 51*15dc779aSAndroid Build Coastguard Worker.endm 52*15dc779aSAndroid Build Coastguard Worker.text 53*15dc779aSAndroid Build Coastguard Worker.global ixheaacd_pretwiddle_compute_armv8 54*15dc779aSAndroid Build Coastguard Worker 55*15dc779aSAndroid Build Coastguard Workerixheaacd_pretwiddle_compute_armv8: 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker push_v_regs 58*15dc779aSAndroid Build Coastguard Worker 59*15dc779aSAndroid Build Coastguard Worker LSL x7, x4, #4 60*15dc779aSAndroid Build Coastguard Worker ADD x7, x2, x7 61*15dc779aSAndroid Build Coastguard Worker SUB x7, x7, #4 62*15dc779aSAndroid Build Coastguard Worker MOV x22, #7500 63*15dc779aSAndroid Build Coastguard Worker ADD x3, x3, x22 64*15dc779aSAndroid Build Coastguard Worker MVN w5, w5 65*15dc779aSAndroid Build Coastguard Worker ADD w5, w5, #1 66*15dc779aSAndroid Build Coastguard Worker 67*15dc779aSAndroid Build Coastguard Worker 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker 71*15dc779aSAndroid Build Coastguard WorkerARM_PROLOGUE: 72*15dc779aSAndroid Build Coastguard Worker LDRH w21, [x3] 73*15dc779aSAndroid Build Coastguard Worker LDRH w22, [x3, #2] 74*15dc779aSAndroid Build Coastguard Worker LSL w22, w22, #16 75*15dc779aSAndroid Build Coastguard Worker LSL w21, w21, #16 76*15dc779aSAndroid Build Coastguard Worker 77*15dc779aSAndroid Build Coastguard Worker LDR w8, [x3], #4 78*15dc779aSAndroid Build Coastguard Worker LDR w9, [x0], #4 79*15dc779aSAndroid Build Coastguard Worker 80*15dc779aSAndroid Build Coastguard Worker 81*15dc779aSAndroid Build Coastguard Worker 82*15dc779aSAndroid Build Coastguard Worker 83*15dc779aSAndroid Build Coastguard Worker 84*15dc779aSAndroid Build Coastguard Worker 85*15dc779aSAndroid Build Coastguard Worker 86*15dc779aSAndroid Build Coastguard Worker 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker 89*15dc779aSAndroid Build Coastguard Worker 90*15dc779aSAndroid Build Coastguard Worker 91*15dc779aSAndroid Build Coastguard Worker SMULL X12, w9, w21 92*15dc779aSAndroid Build Coastguard Worker ASR X12, x12, #32 93*15dc779aSAndroid Build Coastguard Worker LDR w10, [x1], #-4 94*15dc779aSAndroid Build Coastguard Worker SMULL X11, w9, w22 95*15dc779aSAndroid Build Coastguard Worker ASR X11, x11, #32 96*15dc779aSAndroid Build Coastguard Worker SMULL X23, w10, w22 97*15dc779aSAndroid Build Coastguard Worker ASR X23, x23, #32 98*15dc779aSAndroid Build Coastguard Worker ADD w9, w12, w23 99*15dc779aSAndroid Build Coastguard Worker SMULL X6, w10, w21 100*15dc779aSAndroid Build Coastguard Worker ASR X6, x6, #32 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker 103*15dc779aSAndroid Build Coastguard Worker MVN w9, w9 104*15dc779aSAndroid Build Coastguard Worker ADD w9, w9, #1 105*15dc779aSAndroid Build Coastguard Worker SUB w11, w11, w6 106*15dc779aSAndroid Build Coastguard Worker CMP w5, #0 107*15dc779aSAndroid Build Coastguard Worker BGT NEXT 108*15dc779aSAndroid Build Coastguard Worker MVN w8, w5 109*15dc779aSAndroid Build Coastguard Worker ADD w8, w8, #1 110*15dc779aSAndroid Build Coastguard Worker ASR w11, w11, w8 111*15dc779aSAndroid Build Coastguard Worker ASR w9, w9, w8 112*15dc779aSAndroid Build Coastguard Worker B NEXT1 113*15dc779aSAndroid Build Coastguard Worker 114*15dc779aSAndroid Build Coastguard WorkerNEXT: 115*15dc779aSAndroid Build Coastguard Worker LSL w11, w11, w5 116*15dc779aSAndroid Build Coastguard Worker LSL w9, w9, w5 117*15dc779aSAndroid Build Coastguard Worker 118*15dc779aSAndroid Build Coastguard Worker 119*15dc779aSAndroid Build Coastguard Worker 120*15dc779aSAndroid Build Coastguard WorkerNEXT1: 121*15dc779aSAndroid Build Coastguard Worker STR w9, [x2], #4 122*15dc779aSAndroid Build Coastguard Worker STR w11, [x2], #4 123*15dc779aSAndroid Build Coastguard Worker 124*15dc779aSAndroid Build Coastguard Worker CMP X4, #0x100 125*15dc779aSAndroid Build Coastguard Worker BNE NXT 126*15dc779aSAndroid Build Coastguard Worker MOV X6, #4 127*15dc779aSAndroid Build Coastguard Worker B NXT1 128*15dc779aSAndroid Build Coastguard WorkerNXT: 129*15dc779aSAndroid Build Coastguard Worker MOV X6, #32 130*15dc779aSAndroid Build Coastguard Worker ADD X3, X3, #28 131*15dc779aSAndroid Build Coastguard Worker 132*15dc779aSAndroid Build Coastguard WorkerNXT1: 133*15dc779aSAndroid Build Coastguard Worker SUB X4, X4, #1 134*15dc779aSAndroid Build Coastguard Worker ASR X4, X4, #2 135*15dc779aSAndroid Build Coastguard Worker SUB x7, x7, #28 136*15dc779aSAndroid Build Coastguard Worker 137*15dc779aSAndroid Build Coastguard Worker 138*15dc779aSAndroid Build Coastguard Worker 139*15dc779aSAndroid Build Coastguard Worker 140*15dc779aSAndroid Build Coastguard Worker 141*15dc779aSAndroid Build Coastguard Worker 142*15dc779aSAndroid Build Coastguard Worker 143*15dc779aSAndroid Build Coastguard Worker 144*15dc779aSAndroid Build Coastguard Worker 145*15dc779aSAndroid Build Coastguard Worker 146*15dc779aSAndroid Build Coastguard Worker 147*15dc779aSAndroid Build Coastguard Worker 148*15dc779aSAndroid Build Coastguard Worker 149*15dc779aSAndroid Build Coastguard Worker 150*15dc779aSAndroid Build Coastguard WorkerNEON_PROLOGUE: 151*15dc779aSAndroid Build Coastguard Worker 152*15dc779aSAndroid Build Coastguard Worker MOV x8, #-32 153*15dc779aSAndroid Build Coastguard Worker 154*15dc779aSAndroid Build Coastguard Worker dup v14.4s, w5 155*15dc779aSAndroid Build Coastguard Worker 156*15dc779aSAndroid Build Coastguard Worker SUB X1, X1, #28 157*15dc779aSAndroid Build Coastguard Worker 158*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[0], [x3], x6 159*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[1], [x3], x6 160*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[2], [x3], x6 161*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[3], [x3], x6 162*15dc779aSAndroid Build Coastguard Worker 163*15dc779aSAndroid Build Coastguard Worker rev64 v10.4h, v8.4h 164*15dc779aSAndroid Build Coastguard Worker rev64 v11.4h, v9.4h 165*15dc779aSAndroid Build Coastguard Worker 166*15dc779aSAndroid Build Coastguard Worker LD4 {v0.4h, v1.4h, v2.4h, v3.4h}, [x0], #32 167*15dc779aSAndroid Build Coastguard Worker 168*15dc779aSAndroid Build Coastguard Worker LD4 {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], x8 169*15dc779aSAndroid Build Coastguard Worker 170*15dc779aSAndroid Build Coastguard Worker rev64 v0.4h, v0.4h 171*15dc779aSAndroid Build Coastguard Worker rev64 v1.4h, v1.4h 172*15dc779aSAndroid Build Coastguard Worker rev64 v4.4h, v4.4h 173*15dc779aSAndroid Build Coastguard Worker rev64 v5.4h, v5.4h 174*15dc779aSAndroid Build Coastguard Worker 175*15dc779aSAndroid Build Coastguard Worker 176*15dc779aSAndroid Build Coastguard Worker 177*15dc779aSAndroid Build Coastguard Worker 178*15dc779aSAndroid Build Coastguard Worker 179*15dc779aSAndroid Build Coastguard Worker 180*15dc779aSAndroid Build Coastguard Worker 181*15dc779aSAndroid Build Coastguard Worker uMULL v30.4s, v2.4h, v9.4h 182*15dc779aSAndroid Build Coastguard Worker uMULL v28.4s, v4.4h, v9.4h 183*15dc779aSAndroid Build Coastguard Worker uMULL v26.4s, v2.4h, v8.4h 184*15dc779aSAndroid Build Coastguard Worker uMULL v24.4s, v4.4h, v8.4h 185*15dc779aSAndroid Build Coastguard Worker 186*15dc779aSAndroid Build Coastguard Worker ushR v30.4s, v30.4s, #16 187*15dc779aSAndroid Build Coastguard Worker ushR v28.4s, v28.4s, #16 188*15dc779aSAndroid Build Coastguard Worker ushR v26.4s, v26.4s, #16 189*15dc779aSAndroid Build Coastguard Worker ushR v24.4s, v24.4s, #16 190*15dc779aSAndroid Build Coastguard Worker 191*15dc779aSAndroid Build Coastguard Worker sMLAL v30.4s, v3.4h, v9.4h 192*15dc779aSAndroid Build Coastguard Worker sMLAL v28.4s, v5.4h, v9.4h 193*15dc779aSAndroid Build Coastguard Worker sMLAL v26.4s, v3.4h, v8.4h 194*15dc779aSAndroid Build Coastguard Worker sMLAL v24.4s, v5.4h, v8.4h 195*15dc779aSAndroid Build Coastguard Worker 196*15dc779aSAndroid Build Coastguard Worker ADD v28.4s, v26.4s , v28.4s 197*15dc779aSAndroid Build Coastguard Worker NEG v28.4s, v28.4s 198*15dc779aSAndroid Build Coastguard Worker SUB v30.4s, v30.4s , v24.4s 199*15dc779aSAndroid Build Coastguard Worker 200*15dc779aSAndroid Build Coastguard Worker uMULL v22.4s, v0.4h, v11.4h 201*15dc779aSAndroid Build Coastguard Worker uMULL v20.4s, v6.4h, v11.4h 202*15dc779aSAndroid Build Coastguard Worker uMULL v18.4s, v0.4h, v10.4h 203*15dc779aSAndroid Build Coastguard Worker uMULL v16.4s, v6.4h, v10.4h 204*15dc779aSAndroid Build Coastguard Worker 205*15dc779aSAndroid Build Coastguard Worker ushR v22.4s, v22.4s, #16 206*15dc779aSAndroid Build Coastguard Worker ushR v20.4s, v20.4s, #16 207*15dc779aSAndroid Build Coastguard Worker ushR v18.4s, v18.4s, #16 208*15dc779aSAndroid Build Coastguard Worker ushR v16.4s, v16.4s, #16 209*15dc779aSAndroid Build Coastguard Worker 210*15dc779aSAndroid Build Coastguard Worker sMLAL v22.4s, v1.4h, v11.4h 211*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[0], [x3], x6 212*15dc779aSAndroid Build Coastguard Worker 213*15dc779aSAndroid Build Coastguard Worker sMLAL v20.4s, v7.4h, v11.4h 214*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[1], [x3], x6 215*15dc779aSAndroid Build Coastguard Worker 216*15dc779aSAndroid Build Coastguard Worker sMLAL v18.4s, v1.4h, v10.4h 217*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[2], [x3], x6 218*15dc779aSAndroid Build Coastguard Worker 219*15dc779aSAndroid Build Coastguard Worker sMLAL v16.4s, v7.4h, v10.4h 220*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[3], [x3], x6 221*15dc779aSAndroid Build Coastguard Worker 222*15dc779aSAndroid Build Coastguard Worker ADD v20.4s, v20.4s , v18.4s 223*15dc779aSAndroid Build Coastguard Worker 224*15dc779aSAndroid Build Coastguard Worker NEG v20.4s, v20.4s 225*15dc779aSAndroid Build Coastguard Worker rev64 v10.4h, v8.4h 226*15dc779aSAndroid Build Coastguard Worker rev64 v11.4h, v9.4h 227*15dc779aSAndroid Build Coastguard Worker SUB v22.4s, v16.4s , v22.4s 228*15dc779aSAndroid Build Coastguard Worker LD4 {v0.4h, v1.4h, v2.4h, v3.4h}, [x0], #32 229*15dc779aSAndroid Build Coastguard Worker 230*15dc779aSAndroid Build Coastguard Worker 231*15dc779aSAndroid Build Coastguard Worker 232*15dc779aSAndroid Build Coastguard Worker sshL v20.4s, v20.4s, v14.4s 233*15dc779aSAndroid Build Coastguard Worker LD4 {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], x8 234*15dc779aSAndroid Build Coastguard Worker 235*15dc779aSAndroid Build Coastguard Worker rev64 v0.4h, v0.4h 236*15dc779aSAndroid Build Coastguard Worker rev64 v1.4h, v1.4h 237*15dc779aSAndroid Build Coastguard Worker sshL v22.4s, v22.4s, v14.4s 238*15dc779aSAndroid Build Coastguard Worker 239*15dc779aSAndroid Build Coastguard Worker rev64 v4.4h, v4.4h 240*15dc779aSAndroid Build Coastguard Worker rev64 v5.4h, v5.4h 241*15dc779aSAndroid Build Coastguard Worker sshL v18.4s, v30.4s, v14.4s 242*15dc779aSAndroid Build Coastguard Worker 243*15dc779aSAndroid Build Coastguard Worker 244*15dc779aSAndroid Build Coastguard Worker sshL v16.4s, v28.4s, v14.4s 245*15dc779aSAndroid Build Coastguard Worker 246*15dc779aSAndroid Build Coastguard Worker 247*15dc779aSAndroid Build Coastguard Worker 248*15dc779aSAndroid Build Coastguard Worker 249*15dc779aSAndroid Build Coastguard Worker 250*15dc779aSAndroid Build Coastguard Worker 251*15dc779aSAndroid Build Coastguard Worker 252*15dc779aSAndroid Build Coastguard Worker 253*15dc779aSAndroid Build Coastguard Worker SUB X4, X4, #2 254*15dc779aSAndroid Build Coastguard Worker 255*15dc779aSAndroid Build Coastguard WorkerCORE_LOOP: 256*15dc779aSAndroid Build Coastguard Worker uMULL v30.4s, v2.4h, v9.4h 257*15dc779aSAndroid Build Coastguard Worker MOV v17.16B, v18.16B 258*15dc779aSAndroid Build Coastguard Worker ST2 { v16.4s, v17.4s}, [x2] 259*15dc779aSAndroid Build Coastguard Worker ADD x2, x2, #32 260*15dc779aSAndroid Build Coastguard Worker uMULL v28.4s, v4.4h, v9.4h 261*15dc779aSAndroid Build Coastguard Worker 262*15dc779aSAndroid Build Coastguard Worker uMULL v26.4s, v2.4h, v8.4h 263*15dc779aSAndroid Build Coastguard Worker MOV v21.16B, v22.16B 264*15dc779aSAndroid Build Coastguard Worker ST2 { v20.4s, v21.4s}, [x7], x8 265*15dc779aSAndroid Build Coastguard Worker uMULL v24.4s, v4.4h, v8.4h 266*15dc779aSAndroid Build Coastguard Worker 267*15dc779aSAndroid Build Coastguard Worker ushR v30.4s, v30.4s, #16 268*15dc779aSAndroid Build Coastguard Worker ushR v28.4s, v28.4s, #16 269*15dc779aSAndroid Build Coastguard Worker ushR v26.4s, v26.4s, #16 270*15dc779aSAndroid Build Coastguard Worker ushR v24.4s, v24.4s, #16 271*15dc779aSAndroid Build Coastguard Worker 272*15dc779aSAndroid Build Coastguard Worker sMLAL v30.4s, v3.4h, v9.4h 273*15dc779aSAndroid Build Coastguard Worker sMLAL v28.4s, v5.4h, v9.4h 274*15dc779aSAndroid Build Coastguard Worker sMLAL v26.4s, v3.4h, v8.4h 275*15dc779aSAndroid Build Coastguard Worker sMLAL v24.4s, v5.4h, v8.4h 276*15dc779aSAndroid Build Coastguard Worker 277*15dc779aSAndroid Build Coastguard Worker ADD v28.4s, v26.4s , v28.4s 278*15dc779aSAndroid Build Coastguard Worker NEG v28.4s, v28.4s 279*15dc779aSAndroid Build Coastguard Worker SUB v30.4s, v30.4s , v24.4s 280*15dc779aSAndroid Build Coastguard Worker 281*15dc779aSAndroid Build Coastguard Worker uMULL v22.4s, v0.4h, v11.4h 282*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[0], [x3], x6 283*15dc779aSAndroid Build Coastguard Worker uMULL v20.4s, v6.4h, v11.4h 284*15dc779aSAndroid Build Coastguard Worker 285*15dc779aSAndroid Build Coastguard Worker uMULL v18.4s, v0.4h, v10.4h 286*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[1], [x3], x6 287*15dc779aSAndroid Build Coastguard Worker uMULL v16.4s, v6.4h, v10.4h 288*15dc779aSAndroid Build Coastguard Worker 289*15dc779aSAndroid Build Coastguard Worker ushR v22.4s, v22.4s, #16 290*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[2], [x3], x6 291*15dc779aSAndroid Build Coastguard Worker ushR v20.4s, v20.4s, #16 292*15dc779aSAndroid Build Coastguard Worker 293*15dc779aSAndroid Build Coastguard Worker 294*15dc779aSAndroid Build Coastguard Worker ushR v18.4s, v18.4s, #16 295*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[3], [x3], x6 296*15dc779aSAndroid Build Coastguard Worker ushR v16.4s, v16.4s, #16 297*15dc779aSAndroid Build Coastguard Worker 298*15dc779aSAndroid Build Coastguard Worker sMLAL v22.4s, v1.4h, v11.4h 299*15dc779aSAndroid Build Coastguard Worker 300*15dc779aSAndroid Build Coastguard Worker sMLAL v20.4s, v7.4h, v11.4h 301*15dc779aSAndroid Build Coastguard Worker 302*15dc779aSAndroid Build Coastguard Worker 303*15dc779aSAndroid Build Coastguard Worker sMLAL v18.4s, v1.4h, v10.4h 304*15dc779aSAndroid Build Coastguard Worker 305*15dc779aSAndroid Build Coastguard Worker 306*15dc779aSAndroid Build Coastguard Worker sMLAL v16.4s, v7.4h, v10.4h 307*15dc779aSAndroid Build Coastguard Worker LD4 {v0.4h, v1.4h, v2.4h, v3.4h}, [x0], #32 308*15dc779aSAndroid Build Coastguard Worker ADD v20.4s, v20.4s , v18.4s 309*15dc779aSAndroid Build Coastguard Worker 310*15dc779aSAndroid Build Coastguard Worker NEG v20.4s, v20.4s 311*15dc779aSAndroid Build Coastguard Worker rev64 v10.4h, v8.4h 312*15dc779aSAndroid Build Coastguard Worker rev64 v11.4h, v9.4h 313*15dc779aSAndroid Build Coastguard Worker 314*15dc779aSAndroid Build Coastguard Worker SUB v22.4s, v16.4s , v22.4s 315*15dc779aSAndroid Build Coastguard Worker LD4 {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], x8 316*15dc779aSAndroid Build Coastguard Worker sshL v20.4s, v20.4s, v14.4s 317*15dc779aSAndroid Build Coastguard Worker 318*15dc779aSAndroid Build Coastguard Worker 319*15dc779aSAndroid Build Coastguard Worker sshL v22.4s, v22.4s, v14.4s 320*15dc779aSAndroid Build Coastguard Worker 321*15dc779aSAndroid Build Coastguard Worker rev64 v0.4h, v0.4h 322*15dc779aSAndroid Build Coastguard Worker rev64 v1.4h, v1.4h 323*15dc779aSAndroid Build Coastguard Worker sshL v18.4s, v30.4s, v14.4s 324*15dc779aSAndroid Build Coastguard Worker 325*15dc779aSAndroid Build Coastguard Worker rev64 v4.4h, v4.4h 326*15dc779aSAndroid Build Coastguard Worker rev64 v5.4h, v5.4h 327*15dc779aSAndroid Build Coastguard Worker sshL v16.4s, v28.4s, v14.4s 328*15dc779aSAndroid Build Coastguard Worker 329*15dc779aSAndroid Build Coastguard Worker 330*15dc779aSAndroid Build Coastguard Worker SUBS x4, x4, #1 331*15dc779aSAndroid Build Coastguard Worker BNE CORE_LOOP 332*15dc779aSAndroid Build Coastguard Worker 333*15dc779aSAndroid Build Coastguard Worker 334*15dc779aSAndroid Build Coastguard Worker 335*15dc779aSAndroid Build Coastguard Worker 336*15dc779aSAndroid Build Coastguard Worker 337*15dc779aSAndroid Build Coastguard Worker 338*15dc779aSAndroid Build Coastguard WorkerNEON_EPILOGUE: 339*15dc779aSAndroid Build Coastguard Worker uMULL v30.4s, v2.4h, v9.4h 340*15dc779aSAndroid Build Coastguard Worker MOV v17.16B, v18.16B 341*15dc779aSAndroid Build Coastguard Worker ST2 { v16.4s, v17.4s}, [x2] 342*15dc779aSAndroid Build Coastguard Worker ADD x2, x2, #32 343*15dc779aSAndroid Build Coastguard Worker uMULL v28.4s, v4.4h, v9.4h 344*15dc779aSAndroid Build Coastguard Worker 345*15dc779aSAndroid Build Coastguard Worker uMULL v26.4s, v2.4h, v8.4h 346*15dc779aSAndroid Build Coastguard Worker MOV v21.16B, v22.16B 347*15dc779aSAndroid Build Coastguard Worker 348*15dc779aSAndroid Build Coastguard Worker ST2 { v20.4s, v21.4s}, [x7], x8 349*15dc779aSAndroid Build Coastguard Worker uMULL v24.4s, v4.4h, v8.4h 350*15dc779aSAndroid Build Coastguard Worker 351*15dc779aSAndroid Build Coastguard Worker ushR v30.4s, v30.4s, #16 352*15dc779aSAndroid Build Coastguard Worker ushR v28.4s, v28.4s, #16 353*15dc779aSAndroid Build Coastguard Worker ushR v26.4s, v26.4s, #16 354*15dc779aSAndroid Build Coastguard Worker ushR v24.4s, v24.4s, #16 355*15dc779aSAndroid Build Coastguard Worker 356*15dc779aSAndroid Build Coastguard Worker sMLAL v30.4s, v3.4h, v9.4h 357*15dc779aSAndroid Build Coastguard Worker sMLAL v28.4s, v5.4h, v9.4h 358*15dc779aSAndroid Build Coastguard Worker sMLAL v26.4s, v3.4h, v8.4h 359*15dc779aSAndroid Build Coastguard Worker sMLAL v24.4s, v5.4h, v8.4h 360*15dc779aSAndroid Build Coastguard Worker 361*15dc779aSAndroid Build Coastguard Worker ADD v28.4s, v26.4s , v28.4s 362*15dc779aSAndroid Build Coastguard Worker NEG v28.4s, v28.4s 363*15dc779aSAndroid Build Coastguard Worker SUB v30.4s, v30.4s , v24.4s 364*15dc779aSAndroid Build Coastguard Worker 365*15dc779aSAndroid Build Coastguard Worker uMULL v22.4s, v0.4h, v11.4h 366*15dc779aSAndroid Build Coastguard Worker uMULL v20.4s, v6.4h, v11.4h 367*15dc779aSAndroid Build Coastguard Worker uMULL v18.4s, v0.4h, v10.4h 368*15dc779aSAndroid Build Coastguard Worker uMULL v16.4s, v6.4h, v10.4h 369*15dc779aSAndroid Build Coastguard Worker 370*15dc779aSAndroid Build Coastguard Worker ushR v22.4s, v22.4s, #16 371*15dc779aSAndroid Build Coastguard Worker ushR v20.4s, v20.4s, #16 372*15dc779aSAndroid Build Coastguard Worker ushR v18.4s, v18.4s, #16 373*15dc779aSAndroid Build Coastguard Worker ushR v16.4s, v16.4s, #16 374*15dc779aSAndroid Build Coastguard Worker 375*15dc779aSAndroid Build Coastguard Worker sMLAL v22.4s, v1.4h, v11.4h 376*15dc779aSAndroid Build Coastguard Worker sMLAL v20.4s, v7.4h, v11.4h 377*15dc779aSAndroid Build Coastguard Worker sMLAL v18.4s, v1.4h, v10.4h 378*15dc779aSAndroid Build Coastguard Worker sMLAL v16.4s, v7.4h, v10.4h 379*15dc779aSAndroid Build Coastguard Worker 380*15dc779aSAndroid Build Coastguard Worker ADD v20.4s, v20.4s , v18.4s 381*15dc779aSAndroid Build Coastguard Worker NEG v20.4s, v20.4s 382*15dc779aSAndroid Build Coastguard Worker SUB v22.4s, v16.4s , v22.4s 383*15dc779aSAndroid Build Coastguard Worker 384*15dc779aSAndroid Build Coastguard Worker 385*15dc779aSAndroid Build Coastguard Worker sshL v20.4s, v20.4s, v14.4s 386*15dc779aSAndroid Build Coastguard Worker sshL v22.4s, v22.4s, v14.4s 387*15dc779aSAndroid Build Coastguard Worker sshL v18.4s, v30.4s, v14.4s 388*15dc779aSAndroid Build Coastguard Worker sshL v16.4s, v28.4s, v14.4s 389*15dc779aSAndroid Build Coastguard Worker MOV v17.16B, v18.16B 390*15dc779aSAndroid Build Coastguard Worker ST2 { v16.4s, v17.4s}, [x2] 391*15dc779aSAndroid Build Coastguard Worker ADD x2, x2, #32 392*15dc779aSAndroid Build Coastguard Worker MOV v21.16B, v22.16B 393*15dc779aSAndroid Build Coastguard Worker ST2 { v20.4s, v21.4s}, [x7], x8 394*15dc779aSAndroid Build Coastguard Worker 395*15dc779aSAndroid Build Coastguard Worker 396*15dc779aSAndroid Build Coastguard WorkerRESIDUE_NEON: 397*15dc779aSAndroid Build Coastguard Worker MOV x10, #-16 398*15dc779aSAndroid Build Coastguard Worker movi v3.2s, #0x00000000 399*15dc779aSAndroid Build Coastguard Worker movi v4.2s, #0x00000000 400*15dc779aSAndroid Build Coastguard Worker 401*15dc779aSAndroid Build Coastguard Worker LD2 {v21.2s, v22.2s}, [x0], #16 402*15dc779aSAndroid Build Coastguard Worker MOV v0.8B, v21.8B 403*15dc779aSAndroid Build Coastguard Worker MOV v2.8B, v22.8B 404*15dc779aSAndroid Build Coastguard Worker 405*15dc779aSAndroid Build Coastguard Worker LD1 {v1.s}[0], [x0], #4; 406*15dc779aSAndroid Build Coastguard Worker LD1 {v3.s}[0], [x0], #4; 407*15dc779aSAndroid Build Coastguard Worker LD1 {v1.s}[1], [x0] 408*15dc779aSAndroid Build Coastguard Worker MOV v21.8B, v0.8B 409*15dc779aSAndroid Build Coastguard Worker 410*15dc779aSAndroid Build Coastguard Worker UZP1 v0.4h, v21.4h, v1.4h 411*15dc779aSAndroid Build Coastguard Worker UZP2 v1.4h, v21.4h, v1.4h 412*15dc779aSAndroid Build Coastguard Worker MOV v21.8B, v2.8B 413*15dc779aSAndroid Build Coastguard Worker UZP1 v2.4h, v21.4h, v3.4h 414*15dc779aSAndroid Build Coastguard Worker UZP2 v3.4h, v21.4h, v3.4h 415*15dc779aSAndroid Build Coastguard Worker 416*15dc779aSAndroid Build Coastguard Worker ADD x1, x1, #4 417*15dc779aSAndroid Build Coastguard Worker 418*15dc779aSAndroid Build Coastguard Worker LD1 {v6.s}[0], [x1], #4 419*15dc779aSAndroid Build Coastguard Worker LD1 {v4.s}[1], [x1], #4 420*15dc779aSAndroid Build Coastguard Worker LD1 {v6.s}[1], [x1], #4 421*15dc779aSAndroid Build Coastguard Worker 422*15dc779aSAndroid Build Coastguard Worker 423*15dc779aSAndroid Build Coastguard Worker LD2 {v21.2s, v22.2s}, [x1], #16 424*15dc779aSAndroid Build Coastguard Worker MOV v5.8B, v21.8B 425*15dc779aSAndroid Build Coastguard Worker MOV v7.8B, v22.8B 426*15dc779aSAndroid Build Coastguard Worker 427*15dc779aSAndroid Build Coastguard Worker 428*15dc779aSAndroid Build Coastguard Worker MOV v21.8B, v4.8B 429*15dc779aSAndroid Build Coastguard Worker UZP1 v4.4h, v21.4h, v5.4h 430*15dc779aSAndroid Build Coastguard Worker UZP2 v5.4h, v21.4h, v5.4h 431*15dc779aSAndroid Build Coastguard Worker MOV v21.8B, v6.8B 432*15dc779aSAndroid Build Coastguard Worker UZP1 v6.4h, v21.4h, v7.4h 433*15dc779aSAndroid Build Coastguard Worker UZP2 v7.4h, v21.4h, v7.4h 434*15dc779aSAndroid Build Coastguard Worker rev64 v0.4h, v0.4h 435*15dc779aSAndroid Build Coastguard Worker rev64 v1.4h, v1.4h 436*15dc779aSAndroid Build Coastguard Worker rev64 v4.4h, v4.4h 437*15dc779aSAndroid Build Coastguard Worker rev64 v5.4h, v5.4h 438*15dc779aSAndroid Build Coastguard Worker 439*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[0], [x3], x6 440*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[1], [x3], x6 441*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[2], [x3], x6 442*15dc779aSAndroid Build Coastguard Worker LD2 {v8.h, v9.h}[3], [x3], x6 443*15dc779aSAndroid Build Coastguard Worker 444*15dc779aSAndroid Build Coastguard Worker rev64 v10.4h, v8.4h 445*15dc779aSAndroid Build Coastguard Worker rev64 v11.4h, v9.4h 446*15dc779aSAndroid Build Coastguard Worker 447*15dc779aSAndroid Build Coastguard Worker 448*15dc779aSAndroid Build Coastguard Worker 449*15dc779aSAndroid Build Coastguard Worker uMULL v30.4s, v2.4h, v9.4h 450*15dc779aSAndroid Build Coastguard Worker uMULL v28.4s, v4.4h, v9.4h 451*15dc779aSAndroid Build Coastguard Worker uMULL v26.4s, v2.4h, v8.4h 452*15dc779aSAndroid Build Coastguard Worker uMULL v24.4s, v4.4h, v8.4h 453*15dc779aSAndroid Build Coastguard Worker 454*15dc779aSAndroid Build Coastguard Worker ushR v30.4s, v30.4s, #16 455*15dc779aSAndroid Build Coastguard Worker ushR v28.4s, v28.4s, #16 456*15dc779aSAndroid Build Coastguard Worker ushR v26.4s, v26.4s, #16 457*15dc779aSAndroid Build Coastguard Worker ushR v24.4s, v24.4s, #16 458*15dc779aSAndroid Build Coastguard Worker 459*15dc779aSAndroid Build Coastguard Worker sMLAL v30.4s, v3.4h, v9.4h 460*15dc779aSAndroid Build Coastguard Worker sMLAL v28.4s, v5.4h, v9.4h 461*15dc779aSAndroid Build Coastguard Worker sMLAL v26.4s, v3.4h, v8.4h 462*15dc779aSAndroid Build Coastguard Worker sMLAL v24.4s, v5.4h, v8.4h 463*15dc779aSAndroid Build Coastguard Worker 464*15dc779aSAndroid Build Coastguard Worker ADD v28.4s, v26.4s , v28.4s 465*15dc779aSAndroid Build Coastguard Worker NEG v28.4s, v28.4s 466*15dc779aSAndroid Build Coastguard Worker SUB v30.4s, v30.4s , v24.4s 467*15dc779aSAndroid Build Coastguard Worker 468*15dc779aSAndroid Build Coastguard Worker uMULL v22.4s, v0.4h, v11.4h 469*15dc779aSAndroid Build Coastguard Worker uMULL v20.4s, v6.4h, v11.4h 470*15dc779aSAndroid Build Coastguard Worker uMULL v18.4s, v0.4h, v10.4h 471*15dc779aSAndroid Build Coastguard Worker uMULL v16.4s, v6.4h, v10.4h 472*15dc779aSAndroid Build Coastguard Worker 473*15dc779aSAndroid Build Coastguard Worker ushR v22.4s, v22.4s, #16 474*15dc779aSAndroid Build Coastguard Worker ushR v20.4s, v20.4s, #16 475*15dc779aSAndroid Build Coastguard Worker ushR v18.4s, v18.4s, #16 476*15dc779aSAndroid Build Coastguard Worker ushR v16.4s, v16.4s, #16 477*15dc779aSAndroid Build Coastguard Worker 478*15dc779aSAndroid Build Coastguard Worker sMLAL v22.4s, v1.4h, v11.4h 479*15dc779aSAndroid Build Coastguard Worker sMLAL v20.4s, v7.4h, v11.4h 480*15dc779aSAndroid Build Coastguard Worker sMLAL v18.4s, v1.4h, v10.4h 481*15dc779aSAndroid Build Coastguard Worker sMLAL v16.4s, v7.4h, v10.4h 482*15dc779aSAndroid Build Coastguard Worker 483*15dc779aSAndroid Build Coastguard Worker ADD v20.4s, v20.4s , v18.4s 484*15dc779aSAndroid Build Coastguard Worker NEG v20.4s, v20.4s 485*15dc779aSAndroid Build Coastguard Worker SUB v22.4s, v16.4s , v22.4s 486*15dc779aSAndroid Build Coastguard Worker 487*15dc779aSAndroid Build Coastguard Worker 488*15dc779aSAndroid Build Coastguard Worker 489*15dc779aSAndroid Build Coastguard Worker sshL v20.4s, v20.4s, v14.4s 490*15dc779aSAndroid Build Coastguard Worker sshL v22.4s, v22.4s, v14.4s 491*15dc779aSAndroid Build Coastguard Worker sshL v18.4s, v30.4s, v14.4s 492*15dc779aSAndroid Build Coastguard Worker sshL v16.4s, v28.4s, v14.4s 493*15dc779aSAndroid Build Coastguard Worker MOV v21.16B, v22.16B 494*15dc779aSAndroid Build Coastguard Worker ST2 { v20.4s, v21.4s}, [x7] 495*15dc779aSAndroid Build Coastguard Worker mov v17.16B, v18.16B 496*15dc779aSAndroid Build Coastguard Worker ST2 {v16.2s, v17.2s}, [x2] 497*15dc779aSAndroid Build Coastguard Worker ADD x2, x2, #16 498*15dc779aSAndroid Build Coastguard Worker 499*15dc779aSAndroid Build Coastguard Worker ST2 {v16.s, v17.s}[2], [x2] 500*15dc779aSAndroid Build Coastguard Worker ADD x2, x2, #8 501*15dc779aSAndroid Build Coastguard Worker 502*15dc779aSAndroid Build Coastguard Worker 503*15dc779aSAndroid Build Coastguard Worker 504*15dc779aSAndroid Build Coastguard Worker 505*15dc779aSAndroid Build Coastguard Worker 506*15dc779aSAndroid Build Coastguard Worker 507*15dc779aSAndroid Build Coastguard WorkerEND1: 508*15dc779aSAndroid Build Coastguard Worker pop_v_regs 509*15dc779aSAndroid Build Coastguard Worker ret 510*15dc779aSAndroid Build Coastguard Worker 511*15dc779aSAndroid Build Coastguard Worker 512*15dc779aSAndroid Build Coastguard Worker 513