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.text 23*15dc779aSAndroid Build Coastguard Worker.p2align 2 24*15dc779aSAndroid Build Coastguard Worker.global ixheaacd_post_twiddle_armv7 25*15dc779aSAndroid Build Coastguard Worker 26*15dc779aSAndroid Build Coastguard Workerixheaacd_post_twiddle_armv7: 27*15dc779aSAndroid Build Coastguard Worker 28*15dc779aSAndroid Build Coastguard Worker STMFD sp!, {R4-R12} 29*15dc779aSAndroid Build Coastguard Worker VPUSH {d8 - d15} 30*15dc779aSAndroid Build Coastguard Worker LDR R4, [sp, #100] 31*15dc779aSAndroid Build Coastguard Worker 32*15dc779aSAndroid Build Coastguard WorkerARM_PROLOGUE: 33*15dc779aSAndroid Build Coastguard Worker 34*15dc779aSAndroid Build Coastguard Worker CMP R3, #0x400 35*15dc779aSAndroid Build Coastguard Worker MOVW R6, #7500 36*15dc779aSAndroid Build Coastguard Worker ADD R2, R2, R6 37*15dc779aSAndroid Build Coastguard Worker BLT NEXT 38*15dc779aSAndroid Build Coastguard Worker MOV R4, #50 39*15dc779aSAndroid Build Coastguard Worker MOV R5, #-50 40*15dc779aSAndroid Build Coastguard Worker MOV R6, #4 41*15dc779aSAndroid Build Coastguard Worker VDUP.16 D10, R4 42*15dc779aSAndroid Build Coastguard Worker 43*15dc779aSAndroid Build Coastguard Worker B NEXT1 44*15dc779aSAndroid Build Coastguard Worker 45*15dc779aSAndroid Build Coastguard WorkerNEXT: 46*15dc779aSAndroid Build Coastguard Worker MOVW R4, #0x192 47*15dc779aSAndroid Build Coastguard Worker MOVW R5, #0xfe6e 48*15dc779aSAndroid Build Coastguard Worker MOV R6, #32 49*15dc779aSAndroid Build Coastguard Worker VDUP.16 D10, R4 50*15dc779aSAndroid Build Coastguard Worker 51*15dc779aSAndroid Build Coastguard WorkerNEXT1: 52*15dc779aSAndroid Build Coastguard Worker LDR R7, [R1], #4 53*15dc779aSAndroid Build Coastguard Worker LDR R8, [R1], #4 54*15dc779aSAndroid Build Coastguard Worker LDR R9, [R2] 55*15dc779aSAndroid Build Coastguard Worker ADD R2, R2, R6 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker SMULWT R11, R8, R9 58*15dc779aSAndroid Build Coastguard Worker SMULWB R10, R8, R9 59*15dc779aSAndroid Build Coastguard Worker SMULWT R12, R7, R9 60*15dc779aSAndroid Build Coastguard Worker SMLAWB R8, R7, R9, R11 61*15dc779aSAndroid Build Coastguard Worker 62*15dc779aSAndroid Build Coastguard Worker SUB R10, R10, R12 63*15dc779aSAndroid Build Coastguard Worker 64*15dc779aSAndroid Build Coastguard Worker MVN R8, R8 65*15dc779aSAndroid Build Coastguard Worker ADD R8, R8, #1 66*15dc779aSAndroid Build Coastguard Worker 67*15dc779aSAndroid Build Coastguard Worker SMLAWB R9, R10, R5, R8 68*15dc779aSAndroid Build Coastguard Worker SMLAWB R11, R8, R4, R10 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker LSL R7, R3, #2 71*15dc779aSAndroid Build Coastguard Worker ADD R7, R0, R7 72*15dc779aSAndroid Build Coastguard Worker SUB R7, R7, #4 73*15dc779aSAndroid Build Coastguard Worker 74*15dc779aSAndroid Build Coastguard Worker STR R11, [R7], #-4 75*15dc779aSAndroid Build Coastguard Worker STR R9, [R0], #4 76*15dc779aSAndroid Build Coastguard Worker 77*15dc779aSAndroid Build Coastguard Worker LSL R5, R3, #2 78*15dc779aSAndroid Build Coastguard Worker ADD R5, R1, R5 79*15dc779aSAndroid Build Coastguard Worker SUB R5, R5, #40 80*15dc779aSAndroid Build Coastguard Worker 81*15dc779aSAndroid Build Coastguard Worker SUB R3, R3, #1 82*15dc779aSAndroid Build Coastguard Worker ASR R3, R3, #4 83*15dc779aSAndroid Build Coastguard Worker 84*15dc779aSAndroid Build Coastguard Worker 85*15dc779aSAndroid Build Coastguard Worker SUB R7, R7, #28 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 92*15dc779aSAndroid Build Coastguard Worker 93*15dc779aSAndroid Build Coastguard Worker 94*15dc779aSAndroid Build Coastguard Worker 95*15dc779aSAndroid Build Coastguard Worker 96*15dc779aSAndroid Build Coastguard Worker 97*15dc779aSAndroid Build Coastguard Worker 98*15dc779aSAndroid Build Coastguard Worker MOV R8, #-32 99*15dc779aSAndroid Build Coastguard Worker 100*15dc779aSAndroid Build Coastguard WorkerNEON_PROLOGUE: 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D0, D1, D2, D3}, [R5], R8 103*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D4, D5, D6, D7}, [R1]! 104*15dc779aSAndroid Build Coastguard Worker 105*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[0], D9[0]}, [R2], R6 106*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[1], D9[1]}, [R2], R6 107*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[2], D9[2]}, [R2], R6 108*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[3], D9[3]}, [R2], R6 109*15dc779aSAndroid Build Coastguard Worker 110*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q6, Q4 111*15dc779aSAndroid Build Coastguard Worker 112*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D2, D13 113*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q14, D0, D13 114*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q13, D2, D12 115*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D0, D12 116*15dc779aSAndroid Build Coastguard Worker 117*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 118*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q14, Q14, #16 119*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q13, Q13, #16 120*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 121*15dc779aSAndroid Build Coastguard Worker 122*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D3, D13 123*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q14, D1, D13 124*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q13, D3, D12 125*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D1, D12 126*15dc779aSAndroid Build Coastguard Worker 127*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q11, D6, D9 128*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q10, D4, D9 129*15dc779aSAndroid Build Coastguard Worker 130*15dc779aSAndroid Build Coastguard Worker 131*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q14, Q14, Q13 132*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q15, Q15, Q12 133*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q14, Q14 134*15dc779aSAndroid Build Coastguard Worker 135*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q9, D6, D8 136*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q8, D4, D8 137*15dc779aSAndroid Build Coastguard Worker 138*15dc779aSAndroid Build Coastguard Worker VMOV Q13, Q15 139*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q11, Q11, #16 140*15dc779aSAndroid Build Coastguard Worker 141*15dc779aSAndroid Build Coastguard Worker VMOV Q12, Q14 142*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q10, Q10, #16 143*15dc779aSAndroid Build Coastguard Worker 144*15dc779aSAndroid Build Coastguard Worker VUZP.16 D26, D27 145*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q9, Q9, #16 146*15dc779aSAndroid Build Coastguard Worker 147*15dc779aSAndroid Build Coastguard Worker VUZP.16 D24, D25 148*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q8, Q8, #16 149*15dc779aSAndroid Build Coastguard Worker 150*15dc779aSAndroid Build Coastguard Worker 151*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q11, D7, D9 152*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q10, D5, D9 153*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q9, D7, D8 154*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q8, D5, D8 155*15dc779aSAndroid Build Coastguard Worker 156*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[0], D9[0]}, [R2], R6 157*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q0, D26, D10 158*15dc779aSAndroid Build Coastguard Worker 159*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[1], D9[1]}, [R2], R6 160*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q1, D24, D10 161*15dc779aSAndroid Build Coastguard Worker 162*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[2], D9[2]}, [R2], R6 163*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q11, Q11, Q8 164*15dc779aSAndroid Build Coastguard Worker 165*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[3], D9[3]}, [R2], R6 166*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q10, Q9, Q10 167*15dc779aSAndroid Build Coastguard Worker 168*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q6, Q4 169*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q11, Q11 170*15dc779aSAndroid Build Coastguard Worker 171*15dc779aSAndroid Build Coastguard Worker 172*15dc779aSAndroid Build Coastguard Worker VMOV Q9, Q11 173*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q0, Q0, #16 174*15dc779aSAndroid Build Coastguard Worker 175*15dc779aSAndroid Build Coastguard Worker VMOV Q8, Q10 176*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q1, Q1, #16 177*15dc779aSAndroid Build Coastguard Worker 178*15dc779aSAndroid Build Coastguard Worker VUZP.16 D18, D19 179*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q0, D27, D10 180*15dc779aSAndroid Build Coastguard Worker 181*15dc779aSAndroid Build Coastguard Worker VUZP.16 D16, D17 182*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q1, D25, D10 183*15dc779aSAndroid Build Coastguard Worker 184*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q2, D18, D10 185*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q3, D16, D10 186*15dc779aSAndroid Build Coastguard Worker 187*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q0, Q0 188*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q7, Q15, Q1 189*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q13, Q14, Q0 190*15dc779aSAndroid Build Coastguard Worker 191*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q7, Q7 192*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q2, Q2, #16 193*15dc779aSAndroid Build Coastguard Worker 194*15dc779aSAndroid Build Coastguard Worker VSWP D14, D15 195*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q3, Q3, #16 196*15dc779aSAndroid Build Coastguard Worker 197*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q2, D19, D10 198*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D0, D1, D2, D3}, [R5], R8 199*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q3, D17, D10 200*15dc779aSAndroid Build Coastguard Worker SUB R3, R3, #2 201*15dc779aSAndroid Build Coastguard Worker 202*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q12, Q10, Q2 203*15dc779aSAndroid Build Coastguard Worker 204*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q12, Q12 205*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q8, Q3 206*15dc779aSAndroid Build Coastguard Worker 207*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D4, D5, D6, D7}, [R1]! 208*15dc779aSAndroid Build Coastguard Worker 209*15dc779aSAndroid Build Coastguard Worker VSWP D24, D25 210*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q8, Q11, Q8 211*15dc779aSAndroid Build Coastguard Worker 212*15dc779aSAndroid Build Coastguard Worker 213*15dc779aSAndroid Build Coastguard Worker 214*15dc779aSAndroid Build Coastguard Worker 215*15dc779aSAndroid Build Coastguard WorkerCORE_LOOP_PT: 216*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D2, D13 217*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q12, Q13}, [R7], R8 218*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q14, D0, D13 219*15dc779aSAndroid Build Coastguard Worker 220*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q13, D2, D12 221*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q7, Q8}, [R0]! 222*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D0, D12 223*15dc779aSAndroid Build Coastguard Worker 224*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 225*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q14, Q14, #16 226*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q13, Q13, #16 227*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 228*15dc779aSAndroid Build Coastguard Worker 229*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D3, D13 230*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q14, D1, D13 231*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q13, D3, D12 232*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D1, D12 233*15dc779aSAndroid Build Coastguard Worker 234*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q11, D6, D9 235*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q10, D4, D9 236*15dc779aSAndroid Build Coastguard Worker 237*15dc779aSAndroid Build Coastguard Worker 238*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q14, Q14, Q13 239*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q15, Q15, Q12 240*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q14, Q14 241*15dc779aSAndroid Build Coastguard Worker 242*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q9, D6, D8 243*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q8, D4, D8 244*15dc779aSAndroid Build Coastguard Worker 245*15dc779aSAndroid Build Coastguard Worker 246*15dc779aSAndroid Build Coastguard Worker VMOV Q13, Q15 247*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q11, Q11, #16 248*15dc779aSAndroid Build Coastguard Worker 249*15dc779aSAndroid Build Coastguard Worker VMOV Q12, Q14 250*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q10, Q10, #16 251*15dc779aSAndroid Build Coastguard Worker 252*15dc779aSAndroid Build Coastguard Worker VUZP.16 D26, D27 253*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q9, Q9, #16 254*15dc779aSAndroid Build Coastguard Worker 255*15dc779aSAndroid Build Coastguard Worker VUZP.16 D24, D25 256*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q8, Q8, #16 257*15dc779aSAndroid Build Coastguard Worker 258*15dc779aSAndroid Build Coastguard Worker 259*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q11, D7, D9 260*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q10, D5, D9 261*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q9, D7, D8 262*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q8, D5, D8 263*15dc779aSAndroid Build Coastguard Worker 264*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[0], D9[0]}, [R2], R6 265*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q0, D26, D10 266*15dc779aSAndroid Build Coastguard Worker 267*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[1], D9[1]}, [R2], R6 268*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q1, D24, D10 269*15dc779aSAndroid Build Coastguard Worker 270*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[2], D9[2]}, [R2], R6 271*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q11, Q11, Q8 272*15dc779aSAndroid Build Coastguard Worker 273*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[3], D9[3]}, [R2], R6 274*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q10, Q9, Q10 275*15dc779aSAndroid Build Coastguard Worker 276*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q6, Q4 277*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q11, Q11 278*15dc779aSAndroid Build Coastguard Worker 279*15dc779aSAndroid Build Coastguard Worker 280*15dc779aSAndroid Build Coastguard Worker VMOV Q9, Q11 281*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q0, Q0, #16 282*15dc779aSAndroid Build Coastguard Worker 283*15dc779aSAndroid Build Coastguard Worker VMOV Q8, Q10 284*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q1, Q1, #16 285*15dc779aSAndroid Build Coastguard Worker 286*15dc779aSAndroid Build Coastguard Worker VUZP.16 D18, D19 287*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q0, D27, D10 288*15dc779aSAndroid Build Coastguard Worker 289*15dc779aSAndroid Build Coastguard Worker VUZP.16 D16, D17 290*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q1, D25, D10 291*15dc779aSAndroid Build Coastguard Worker 292*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q2, D18, D10 293*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q3, D16, D10 294*15dc779aSAndroid Build Coastguard Worker 295*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q0, Q0 296*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q7, Q15, Q1 297*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q13, Q14, Q0 298*15dc779aSAndroid Build Coastguard Worker 299*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q7, Q7 300*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q2, Q2, #16 301*15dc779aSAndroid Build Coastguard Worker 302*15dc779aSAndroid Build Coastguard Worker VSWP D14, D15 303*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q3, Q3, #16 304*15dc779aSAndroid Build Coastguard Worker 305*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q2, D19, D10 306*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D0, D1, D2, D3}, [R5], R8 307*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q3, D17, D10 308*15dc779aSAndroid Build Coastguard Worker 309*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q12, Q10, Q2 310*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q12, Q12 311*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q8, Q3 312*15dc779aSAndroid Build Coastguard Worker 313*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D4, D5, D6, D7}, [R1]! 314*15dc779aSAndroid Build Coastguard Worker VSWP D24, D25 315*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q8, Q11, Q8 316*15dc779aSAndroid Build Coastguard Worker 317*15dc779aSAndroid Build Coastguard Worker SUBS R3, R3, #1 318*15dc779aSAndroid Build Coastguard Worker BNE CORE_LOOP_PT 319*15dc779aSAndroid Build Coastguard Worker 320*15dc779aSAndroid Build Coastguard Worker 321*15dc779aSAndroid Build Coastguard Worker 322*15dc779aSAndroid Build Coastguard Worker 323*15dc779aSAndroid Build Coastguard WorkerNEON_EPILOGUE: 324*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D2, D13 325*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q12, Q13}, [R7], R8 326*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q14, D0, D13 327*15dc779aSAndroid Build Coastguard Worker 328*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q13, D2, D12 329*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q7, Q8}, [R0]! 330*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D0, D12 331*15dc779aSAndroid Build Coastguard Worker 332*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 333*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q14, Q14, #16 334*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q13, Q13, #16 335*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 336*15dc779aSAndroid Build Coastguard Worker 337*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D3, D13 338*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q14, D1, D13 339*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q13, D3, D12 340*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D1, D12 341*15dc779aSAndroid Build Coastguard Worker 342*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q11, D6, D9 343*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q10, D4, D9 344*15dc779aSAndroid Build Coastguard Worker 345*15dc779aSAndroid Build Coastguard Worker 346*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q14, Q14, Q13 347*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q15, Q15, Q12 348*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q14, Q14 349*15dc779aSAndroid Build Coastguard Worker 350*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q9, D6, D8 351*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q8, D4, D8 352*15dc779aSAndroid Build Coastguard Worker 353*15dc779aSAndroid Build Coastguard Worker 354*15dc779aSAndroid Build Coastguard Worker VMOV Q13, Q15 355*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q11, Q11, #16 356*15dc779aSAndroid Build Coastguard Worker 357*15dc779aSAndroid Build Coastguard Worker VMOV Q12, Q14 358*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q10, Q10, #16 359*15dc779aSAndroid Build Coastguard Worker 360*15dc779aSAndroid Build Coastguard Worker VUZP.16 D26, D27 361*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q9, Q9, #16 362*15dc779aSAndroid Build Coastguard Worker 363*15dc779aSAndroid Build Coastguard Worker VUZP.16 D24, D25 364*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q8, Q8, #16 365*15dc779aSAndroid Build Coastguard Worker 366*15dc779aSAndroid Build Coastguard Worker 367*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q11, D7, D9 368*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q10, D5, D9 369*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q9, D7, D8 370*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q8, D5, D8 371*15dc779aSAndroid Build Coastguard Worker 372*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q0, D26, D10 373*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q1, D24, D10 374*15dc779aSAndroid Build Coastguard Worker 375*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q11, Q11, Q8 376*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q10, Q9, Q10 377*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q11, Q11 378*15dc779aSAndroid Build Coastguard Worker 379*15dc779aSAndroid Build Coastguard Worker 380*15dc779aSAndroid Build Coastguard Worker VMOV Q9, Q11 381*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q0, Q0, #16 382*15dc779aSAndroid Build Coastguard Worker 383*15dc779aSAndroid Build Coastguard Worker VMOV Q8, Q10 384*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q1, Q1, #16 385*15dc779aSAndroid Build Coastguard Worker 386*15dc779aSAndroid Build Coastguard Worker VUZP.16 D18, D19 387*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q0, D27, D10 388*15dc779aSAndroid Build Coastguard Worker 389*15dc779aSAndroid Build Coastguard Worker VUZP.16 D16, D17 390*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q1, D25, D10 391*15dc779aSAndroid Build Coastguard Worker 392*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q2, D18, D10 393*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q3, D16, D10 394*15dc779aSAndroid Build Coastguard Worker 395*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q0, Q0 396*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q7, Q15, Q1 397*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q13, Q14, Q0 398*15dc779aSAndroid Build Coastguard Worker 399*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q7, Q7 400*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q2, Q2, #16 401*15dc779aSAndroid Build Coastguard Worker 402*15dc779aSAndroid Build Coastguard Worker VSWP D14, D15 403*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q3, Q3, #16 404*15dc779aSAndroid Build Coastguard Worker 405*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q2, D19, D10 406*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q3, D17, D10 407*15dc779aSAndroid Build Coastguard Worker 408*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q12, Q10, Q2 409*15dc779aSAndroid Build Coastguard Worker 410*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q12, Q12 411*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q8, Q3 412*15dc779aSAndroid Build Coastguard Worker 413*15dc779aSAndroid Build Coastguard Worker VSWP D24, D25 414*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q8, Q11, Q8 415*15dc779aSAndroid Build Coastguard Worker 416*15dc779aSAndroid Build Coastguard Worker 417*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q7, Q8}, [R0]! 418*15dc779aSAndroid Build Coastguard Worker VST2.32 {Q12, Q13}, [R7], R8 419*15dc779aSAndroid Build Coastguard Worker 420*15dc779aSAndroid Build Coastguard Worker 421*15dc779aSAndroid Build Coastguard Worker 422*15dc779aSAndroid Build Coastguard Worker VLD4.16 {D0, D1, D2, D3}, [R5], R8 423*15dc779aSAndroid Build Coastguard Worker 424*15dc779aSAndroid Build Coastguard Worker VMOV.S32 D5, #0x00000000 425*15dc779aSAndroid Build Coastguard Worker VMOV.S32 D7, #0x00000000 426*15dc779aSAndroid Build Coastguard Worker 427*15dc779aSAndroid Build Coastguard Worker VLD2.32 {D4, D6}, [R1]! 428*15dc779aSAndroid Build Coastguard Worker VLD2.32 {D5[0], D7[0]}, [R1] 429*15dc779aSAndroid Build Coastguard Worker 430*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[0], D9[0]}, [R2], R6 431*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[1], D9[1]}, [R2], R6 432*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[2], D9[2]}, [R2], R6 433*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D8[3], D9[3]}, [R2], R6 434*15dc779aSAndroid Build Coastguard Worker 435*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q6, Q4 436*15dc779aSAndroid Build Coastguard Worker 437*15dc779aSAndroid Build Coastguard Worker VUZP.16 D4, D5 438*15dc779aSAndroid Build Coastguard Worker VUZP.16 D6, D7 439*15dc779aSAndroid Build Coastguard Worker 440*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D2, D13 441*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q14, D0, D13 442*15dc779aSAndroid Build Coastguard Worker 443*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q13, D2, D12 444*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D0, D12 445*15dc779aSAndroid Build Coastguard Worker 446*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 447*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q14, Q14, #16 448*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q13, Q13, #16 449*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 450*15dc779aSAndroid Build Coastguard Worker 451*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D3, D13 452*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q14, D1, D13 453*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q13, D3, D12 454*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D1, D12 455*15dc779aSAndroid Build Coastguard Worker 456*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q11, D6, D9 457*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q10, D4, D9 458*15dc779aSAndroid Build Coastguard Worker 459*15dc779aSAndroid Build Coastguard Worker 460*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q14, Q14, Q13 461*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q15, Q15, Q12 462*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q14, Q14 463*15dc779aSAndroid Build Coastguard Worker 464*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q9, D6, D8 465*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q8, D4, D8 466*15dc779aSAndroid Build Coastguard Worker 467*15dc779aSAndroid Build Coastguard Worker 468*15dc779aSAndroid Build Coastguard Worker VMOV Q13, Q15 469*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q11, Q11, #16 470*15dc779aSAndroid Build Coastguard Worker 471*15dc779aSAndroid Build Coastguard Worker VMOV Q12, Q14 472*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q10, Q10, #16 473*15dc779aSAndroid Build Coastguard Worker 474*15dc779aSAndroid Build Coastguard Worker VUZP.16 D26, D27 475*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q9, Q9, #16 476*15dc779aSAndroid Build Coastguard Worker 477*15dc779aSAndroid Build Coastguard Worker VUZP.16 D24, D25 478*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q8, Q8, #16 479*15dc779aSAndroid Build Coastguard Worker 480*15dc779aSAndroid Build Coastguard Worker 481*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q11, D7, D9 482*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q10, D5, D9 483*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q9, D7, D8 484*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q8, D5, D8 485*15dc779aSAndroid Build Coastguard Worker 486*15dc779aSAndroid Build Coastguard Worker 487*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q0, D26, D10 488*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q1, D24, D10 489*15dc779aSAndroid Build Coastguard Worker 490*15dc779aSAndroid Build Coastguard Worker 491*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q11, Q11, Q8 492*15dc779aSAndroid Build Coastguard Worker VSUB.I32 Q10, Q9, Q10 493*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q11, Q11 494*15dc779aSAndroid Build Coastguard Worker 495*15dc779aSAndroid Build Coastguard Worker 496*15dc779aSAndroid Build Coastguard Worker VMOV Q9, Q11 497*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q0, Q0, #16 498*15dc779aSAndroid Build Coastguard Worker 499*15dc779aSAndroid Build Coastguard Worker VMOV Q8, Q10 500*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q1, Q1, #16 501*15dc779aSAndroid Build Coastguard Worker 502*15dc779aSAndroid Build Coastguard Worker VUZP.16 D18, D19 503*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q0, D27, D10 504*15dc779aSAndroid Build Coastguard Worker 505*15dc779aSAndroid Build Coastguard Worker VUZP.16 D16, D17 506*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q1, D25, D10 507*15dc779aSAndroid Build Coastguard Worker 508*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q2, D18, D10 509*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q3, D16, D10 510*15dc779aSAndroid Build Coastguard Worker 511*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q0, Q0 512*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q7, Q15, Q1 513*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q13, Q14, Q0 514*15dc779aSAndroid Build Coastguard Worker 515*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q7, Q7 516*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q2, Q2, #16 517*15dc779aSAndroid Build Coastguard Worker 518*15dc779aSAndroid Build Coastguard Worker VSWP D14, D15 519*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q3, Q3, #16 520*15dc779aSAndroid Build Coastguard Worker 521*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q2, D19, D10 522*15dc779aSAndroid Build Coastguard Worker 523*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q3, D17, D10 524*15dc779aSAndroid Build Coastguard Worker 525*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q12, Q10, Q2 526*15dc779aSAndroid Build Coastguard Worker 527*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q12, Q12 528*15dc779aSAndroid Build Coastguard Worker VNEG.S32 Q8, Q3 529*15dc779aSAndroid Build Coastguard Worker 530*15dc779aSAndroid Build Coastguard Worker VSWP D24, D25 531*15dc779aSAndroid Build Coastguard Worker VADD.I32 Q8, Q11, Q8 532*15dc779aSAndroid Build Coastguard Worker 533*15dc779aSAndroid Build Coastguard Worker VST2.32 {D14, D16}, [R0]! 534*15dc779aSAndroid Build Coastguard Worker VST2.32 {D15[0], D17[0]}, [R0]! 535*15dc779aSAndroid Build Coastguard Worker VST1.32 D15[1], [R0] 536*15dc779aSAndroid Build Coastguard Worker 537*15dc779aSAndroid Build Coastguard Worker ADD R7, R7, #4 538*15dc779aSAndroid Build Coastguard Worker 539*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[0], [R7]! 540*15dc779aSAndroid Build Coastguard Worker VST2.32 {D24[1], D26[1]}, [R7]! 541*15dc779aSAndroid Build Coastguard Worker VST2.32 {D25, D27}, [R7] 542*15dc779aSAndroid Build Coastguard Worker 543*15dc779aSAndroid Build Coastguard Worker VPOP {d8 - d15} 544*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {R4-R12} 545*15dc779aSAndroid Build Coastguard Worker BX LR 546