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 25*15dc779aSAndroid Build Coastguard Worker 26*15dc779aSAndroid Build Coastguard Worker .global ixheaacd_over_lap_add1_armv7 27*15dc779aSAndroid Build Coastguard Workerixheaacd_over_lap_add1_armv7: 28*15dc779aSAndroid Build Coastguard Worker 29*15dc779aSAndroid Build Coastguard Worker STMFD sp!, {R4-R12, R14} 30*15dc779aSAndroid Build Coastguard Worker VPUSH {d8 - d15} 31*15dc779aSAndroid Build Coastguard Worker 32*15dc779aSAndroid Build Coastguard Worker LDR R4, [SP, #104] 33*15dc779aSAndroid Build Coastguard Worker LDR R5, [SP, #108] 34*15dc779aSAndroid Build Coastguard Worker LDR R6, [SP, #112] 35*15dc779aSAndroid Build Coastguard Worker 36*15dc779aSAndroid Build Coastguard Worker LSL R6 , R6 , #1 37*15dc779aSAndroid Build Coastguard Worker MOV R10, R5, LSL #1 38*15dc779aSAndroid Build Coastguard Worker SUB R11, R10, #1 39*15dc779aSAndroid Build Coastguard Worker MOV R10, R11, LSL #2 40*15dc779aSAndroid Build Coastguard Worker ADD R10, R0, R10 41*15dc779aSAndroid Build Coastguard Worker SUB R10, R10, #12 42*15dc779aSAndroid Build Coastguard Worker MOV R8, R11, LSL #1 43*15dc779aSAndroid Build Coastguard Worker ADD R8, R8, R3 44*15dc779aSAndroid Build Coastguard Worker SUB R8, R8, #14 45*15dc779aSAndroid Build Coastguard Worker MOV R12, #0 46*15dc779aSAndroid Build Coastguard Worker VDUP.S16 D12, R12 47*15dc779aSAndroid Build Coastguard Worker MOV R12, #-16 48*15dc779aSAndroid Build Coastguard Worker VDUP.16 Q11, R4 49*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D6, D7}, [R10], R12 50*15dc779aSAndroid Build Coastguard Worker MOV R7, #0x0 51*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q3, Q3 52*15dc779aSAndroid Build Coastguard Worker RSB R7, R7, #0 53*15dc779aSAndroid Build Coastguard Worker VQNEG.S32 Q0, Q3 54*15dc779aSAndroid Build Coastguard Worker VUZP.16 D1, D0 55*15dc779aSAndroid Build Coastguard Worker SUB R11, R5, #1 56*15dc779aSAndroid Build Coastguard Worker VUZP.16 D7, D6 57*15dc779aSAndroid Build Coastguard Worker SMULBB R11, R11, R6 58*15dc779aSAndroid Build Coastguard Worker MOV R11, R11, LSL #1 59*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D2, D3}, [R8], R12 60*15dc779aSAndroid Build Coastguard Worker ADD R11, R11, R2 61*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q1, Q1 62*15dc779aSAndroid Build Coastguard Worker MOV R4, R6, LSL #1 63*15dc779aSAndroid Build Coastguard Worker RSB R4, R4, #0 64*15dc779aSAndroid Build Coastguard Worker MOV R9, R6, LSL #1 65*15dc779aSAndroid Build Coastguard Worker SMULBB R6, R5, R6 66*15dc779aSAndroid Build Coastguard Worker MOV R6, R6, LSL #1 67*15dc779aSAndroid Build Coastguard Worker ADD R6, R6, R2 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D7, D2 71*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D4, D5}, [R1]! 72*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 73*15dc779aSAndroid Build Coastguard Worker 74*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D6, D2 75*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q15, Q15, Q11 76*15dc779aSAndroid Build Coastguard Worker 77*15dc779aSAndroid Build Coastguard Worker 78*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D3, D12 79*15dc779aSAndroid Build Coastguard Worker 80*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q13, D4, D14 81*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D28, Q13 82*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q13, D5, D15 83*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D29, Q13 84*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q13, Q15, Q14 85*15dc779aSAndroid Build Coastguard Worker 86*15dc779aSAndroid Build Coastguard Worker 87*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D1, D3 88*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 89*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D0, D3 90*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q12, Q12, Q11 91*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D6, D7}, [R10], R12 92*15dc779aSAndroid Build Coastguard Worker 93*15dc779aSAndroid Build Coastguard Worker 94*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D2, D12 95*15dc779aSAndroid Build Coastguard Worker 96*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D14, D4 97*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D16, Q0 98*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D15, D5 99*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D17, Q0 100*15dc779aSAndroid Build Coastguard Worker 101*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q3, Q3 102*15dc779aSAndroid Build Coastguard Worker VQNEG.S32 Q0, Q3 103*15dc779aSAndroid Build Coastguard Worker VUZP.16 D1, D0 104*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q9, Q12, Q8 105*15dc779aSAndroid Build Coastguard Worker VUZP.16 D7, D6 106*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D2, D3}, [R8], R12 107*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q1, Q1 108*15dc779aSAndroid Build Coastguard Worker 109*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D4, D5}, [R1]! 110*15dc779aSAndroid Build Coastguard Worker SUB R5, R5, #8 111*15dc779aSAndroid Build Coastguard Worker 112*15dc779aSAndroid Build Coastguard Worker 113*15dc779aSAndroid Build Coastguard WorkerLOOP_1: 114*15dc779aSAndroid Build Coastguard Worker 115*15dc779aSAndroid Build Coastguard Worker 116*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[0], [R11], R4 117*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D7, D2 118*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[1], [R11], R4 119*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D1, D3 120*15dc779aSAndroid Build Coastguard Worker VST1.32 D27[0], [R11] ,R4 121*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 122*15dc779aSAndroid Build Coastguard Worker VST1.32 D27[1], [R11] ,R4 123*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 124*15dc779aSAndroid Build Coastguard Worker VST1.32 D18[0], [R6], R9 125*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D6, D2 126*15dc779aSAndroid Build Coastguard Worker VST1.32 D18[1], [R6], R9 127*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D0, D3 128*15dc779aSAndroid Build Coastguard Worker VST1.32 D19[0], [R6], R9 129*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q15, Q15, Q11 130*15dc779aSAndroid Build Coastguard Worker VST1.32 D19[1], [R6], R9 131*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q12, Q12, Q11 132*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D6, D7}, [R10], R12 133*15dc779aSAndroid Build Coastguard Worker 134*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D3, D12 135*15dc779aSAndroid Build Coastguard Worker 136*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D4, D14 137*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D28, Q8 138*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D5, D15 139*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D29, Q8 140*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q3, Q3 141*15dc779aSAndroid Build Coastguard Worker 142*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D2, D12 143*15dc779aSAndroid Build Coastguard Worker 144*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D4, D14 145*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D16, Q0 146*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D5, D15 147*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D17, Q0 148*15dc779aSAndroid Build Coastguard Worker 149*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D2, D3}, [R8], R12 150*15dc779aSAndroid Build Coastguard Worker VQNEG.S32 Q0, Q3 151*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D4, D5}, [R1]! 152*15dc779aSAndroid Build Coastguard Worker VUZP.16 D1, D0 153*15dc779aSAndroid Build Coastguard Worker VUZP.16 D7, D6 154*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q13, Q15, Q14 155*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q1, Q1 156*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q9, Q12, Q8 157*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D7, D2 158*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[0], [R11], R4 159*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D1, D3 160*15dc779aSAndroid Build Coastguard Worker 161*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 162*15dc779aSAndroid Build Coastguard Worker VST1.32 {D26[1]}, [R11], R4 163*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D6, D2 @MLA 164*15dc779aSAndroid Build Coastguard Worker VST1.32 {D27[0]}, [R11], R4 165*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 166*15dc779aSAndroid Build Coastguard Worker VST1.32 {D27[1]}, [R11], R4 167*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D0, D3 @MLA 168*15dc779aSAndroid Build Coastguard Worker VST1.32 {D18[0]}, [R6], R9 169*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q15, Q15, Q11 170*15dc779aSAndroid Build Coastguard Worker VST1.32 {D18[1]}, [R6], R9 171*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q12, Q12, Q11 172*15dc779aSAndroid Build Coastguard Worker VST1.32 {D19[0]}, [R6], R9 173*15dc779aSAndroid Build Coastguard Worker 174*15dc779aSAndroid Build Coastguard Worker 175*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D3, D12 176*15dc779aSAndroid Build Coastguard Worker 177*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D4, D14 178*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D28, Q8 179*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D5, D15 180*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D29, Q8 181*15dc779aSAndroid Build Coastguard Worker 182*15dc779aSAndroid Build Coastguard Worker VST1.32 {D19[1]}, [R6], R9 183*15dc779aSAndroid Build Coastguard Worker 184*15dc779aSAndroid Build Coastguard Worker 185*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D2, D12 186*15dc779aSAndroid Build Coastguard Worker 187*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D4, D14 188*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D16, Q0 189*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q0, D5, D15 190*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D17, Q0 191*15dc779aSAndroid Build Coastguard Worker 192*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D6, D7}, [R10], R12 193*15dc779aSAndroid Build Coastguard Worker VREV64.32 Q3, Q3 194*15dc779aSAndroid Build Coastguard Worker VQNEG.S32 Q0, Q3 195*15dc779aSAndroid Build Coastguard Worker VUZP.16 D1, D0 196*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q13, Q15, Q14 197*15dc779aSAndroid Build Coastguard Worker VUZP.16 D7, D6 198*15dc779aSAndroid Build Coastguard Worker VLD2.16 {D2, D3}, [R8], R12 199*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q9, Q12, Q8 200*15dc779aSAndroid Build Coastguard Worker VREV64.16 Q1, Q1 201*15dc779aSAndroid Build Coastguard Worker 202*15dc779aSAndroid Build Coastguard Worker VLD1.32 {D4, D5}, [R1]! 203*15dc779aSAndroid Build Coastguard Worker 204*15dc779aSAndroid Build Coastguard Worker SUBS R5, R5, #8 205*15dc779aSAndroid Build Coastguard Worker 206*15dc779aSAndroid Build Coastguard Worker 207*15dc779aSAndroid Build Coastguard Worker 208*15dc779aSAndroid Build Coastguard Worker 209*15dc779aSAndroid Build Coastguard Worker BGT LOOP_1 210*15dc779aSAndroid Build Coastguard Worker 211*15dc779aSAndroid Build Coastguard Worker VST1.32 {D26[0]}, [R11], R4 212*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q15, D7, D2 213*15dc779aSAndroid Build Coastguard Worker VST1.32 {D26[1]}, [R11], R4 214*15dc779aSAndroid Build Coastguard Worker VMULL.U16 Q12, D1, D3 215*15dc779aSAndroid Build Coastguard Worker VST1.32 {D27[0]}, [R11], R4 216*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q15, Q15, #16 217*15dc779aSAndroid Build Coastguard Worker VST1.32 {D27[1]}, [R11], R4 218*15dc779aSAndroid Build Coastguard Worker VSHR.U32 Q12, Q12, #16 219*15dc779aSAndroid Build Coastguard Worker 220*15dc779aSAndroid Build Coastguard Worker VST1.32 {D18[0]}, [R6], R9 221*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q15, D6, D2 222*15dc779aSAndroid Build Coastguard Worker VST1.32 {D18[1]}, [R6], R9 223*15dc779aSAndroid Build Coastguard Worker VMLAL.S16 Q12, D0, D3 224*15dc779aSAndroid Build Coastguard Worker VST1.32 {D19[0]}, [R6], R9 225*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q15, Q15, Q11 226*15dc779aSAndroid Build Coastguard Worker VST1.32 {D19[1]}, [R6], R9 227*15dc779aSAndroid Build Coastguard Worker VQSHL.S32 Q12, Q12, Q11 228*15dc779aSAndroid Build Coastguard Worker 229*15dc779aSAndroid Build Coastguard Worker 230*15dc779aSAndroid Build Coastguard Worker 231*15dc779aSAndroid Build Coastguard Worker 232*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D3, D12 233*15dc779aSAndroid Build Coastguard Worker 234*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D4, D14 235*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D28, Q8 236*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q8, D5, D15 237*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D29, Q8 238*15dc779aSAndroid Build Coastguard Worker 239*15dc779aSAndroid Build Coastguard Worker 240*15dc779aSAndroid Build Coastguard Worker 241*15dc779aSAndroid Build Coastguard Worker VADDL.S16 Q7, D2, D12 242*15dc779aSAndroid Build Coastguard Worker 243*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q13, D4, D14 244*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D16, Q13 245*15dc779aSAndroid Build Coastguard Worker VMULL.S32 Q13, D5, D15 246*15dc779aSAndroid Build Coastguard Worker VQMOVN.S64 D17, Q13 247*15dc779aSAndroid Build Coastguard Worker 248*15dc779aSAndroid Build Coastguard Worker 249*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q13, Q15, Q14 250*15dc779aSAndroid Build Coastguard Worker VQSUB.S32 Q9, Q12, Q8 251*15dc779aSAndroid Build Coastguard Worker 252*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[0], [R11], R4 253*15dc779aSAndroid Build Coastguard Worker VST1.32 D26[1], [R11], R4 254*15dc779aSAndroid Build Coastguard Worker VST1.32 D27[0], [R11], R4 255*15dc779aSAndroid Build Coastguard Worker VST1.32 D27[1], [R11], R4 256*15dc779aSAndroid Build Coastguard Worker 257*15dc779aSAndroid Build Coastguard Worker VST1.32 D18[0], [R6], R9 258*15dc779aSAndroid Build Coastguard Worker VST1.32 D18[1], [R6], R9 259*15dc779aSAndroid Build Coastguard Worker VST1.32 D19[0], [R6], R9 260*15dc779aSAndroid Build Coastguard Worker VST1.32 D19[1], [R6], R9 261*15dc779aSAndroid Build Coastguard Worker 262*15dc779aSAndroid Build Coastguard Worker VPOP {d8 - d15} 263*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {R4-R12, R15} 264*15dc779aSAndroid Build Coastguard Worker 265