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_expsubbandsamples_armv7 25*15dc779aSAndroid Build Coastguard Workerixheaacd_expsubbandsamples_armv7: 26*15dc779aSAndroid Build Coastguard Worker 27*15dc779aSAndroid Build Coastguard Worker STMFD sp!, {r4-r12} 28*15dc779aSAndroid Build Coastguard Worker 29*15dc779aSAndroid Build Coastguard Worker LDR r7, [sp, #0x24] 30*15dc779aSAndroid Build Coastguard Worker LDR r10, [sp, #0x28] 31*15dc779aSAndroid Build Coastguard Worker SUB r11, r3, r2 32*15dc779aSAndroid Build Coastguard Worker MOV r12, #1 33*15dc779aSAndroid Build Coastguard Worker CMP r7, r10 34*15dc779aSAndroid Build Coastguard Worker BGE EXIT 35*15dc779aSAndroid Build Coastguard Worker 36*15dc779aSAndroid Build Coastguard Worker MOVS r3, r11 37*15dc779aSAndroid Build Coastguard Worker BEQ EXIT 38*15dc779aSAndroid Build Coastguard Worker 39*15dc779aSAndroid Build Coastguard Worker 40*15dc779aSAndroid Build Coastguard Worker LDR r4, [sp, #0x2c] 41*15dc779aSAndroid Build Coastguard Worker CMP r4, #0 42*15dc779aSAndroid Build Coastguard Worker BEQ HQ_OUTER_LOOP 43*15dc779aSAndroid Build Coastguard Worker 44*15dc779aSAndroid Build Coastguard Worker 45*15dc779aSAndroid Build Coastguard Worker 46*15dc779aSAndroid Build Coastguard Worker SUB r10, r10, r7 47*15dc779aSAndroid Build Coastguard Worker ADD r0, r0, r7, LSL #2 48*15dc779aSAndroid Build Coastguard Worker LDR r1, [r0], #4 49*15dc779aSAndroid Build Coastguard Worker 50*15dc779aSAndroid Build Coastguard WorkerOUTERLOOP: 51*15dc779aSAndroid Build Coastguard Worker MOV r3, r11 52*15dc779aSAndroid Build Coastguard Worker ADD r5, r1, r2, LSL #2 53*15dc779aSAndroid Build Coastguard WorkerINLOOP: 54*15dc779aSAndroid Build Coastguard Worker 55*15dc779aSAndroid Build Coastguard Worker LDR r4, [r5], #4 56*15dc779aSAndroid Build Coastguard Worker SUBS r3, r3, #2 57*15dc779aSAndroid Build Coastguard Worker LDRGE r8, [r5], #4 58*15dc779aSAndroid Build Coastguard Worker EOR r1 , r4 , r4, asr #31 59*15dc779aSAndroid Build Coastguard Worker ORR r12, r12, r1 60*15dc779aSAndroid Build Coastguard Worker EORGE r1 , r8 , r8, asr #31 61*15dc779aSAndroid Build Coastguard Worker ORRGE r12, r12, r1 62*15dc779aSAndroid Build Coastguard Worker BGT INLOOP 63*15dc779aSAndroid Build Coastguard Worker 64*15dc779aSAndroid Build Coastguard Worker SUBS r10, r10, #1 65*15dc779aSAndroid Build Coastguard Worker LDR r1, [r0], #4 66*15dc779aSAndroid Build Coastguard Worker BGT OUTERLOOP 67*15dc779aSAndroid Build Coastguard Worker 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker B EXIT 71*15dc779aSAndroid Build Coastguard Worker 72*15dc779aSAndroid Build Coastguard Worker 73*15dc779aSAndroid Build Coastguard WorkerHQ_OUTER_LOOP: 74*15dc779aSAndroid Build Coastguard Worker LDR r6, [r0, r7, LSL #2] 75*15dc779aSAndroid Build Coastguard Worker LDR r5, [r1, r7, LSL #2] 76*15dc779aSAndroid Build Coastguard Worker ADD r6, r6, r2, LSL #2 77*15dc779aSAndroid Build Coastguard Worker ADD r5, r5, r2, LSL #2 78*15dc779aSAndroid Build Coastguard Worker MOV r4, r11 79*15dc779aSAndroid Build Coastguard Worker 80*15dc779aSAndroid Build Coastguard WorkerHQ_IN_LOOP: 81*15dc779aSAndroid Build Coastguard Worker LDR r8, [r6], #4 82*15dc779aSAndroid Build Coastguard Worker LDR r9, [r5], #4 83*15dc779aSAndroid Build Coastguard Worker SUBS r4, r4, #2 84*15dc779aSAndroid Build Coastguard Worker 85*15dc779aSAndroid Build Coastguard Worker EOR r3 , r8 , r8, asr #31 86*15dc779aSAndroid Build Coastguard Worker ORR r12, r12, r3 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker EOR r3 , r9 , r9, asr #31 89*15dc779aSAndroid Build Coastguard Worker ORR r12, r12, r3 90*15dc779aSAndroid Build Coastguard Worker 91*15dc779aSAndroid Build Coastguard Worker LDRGE r8, [r6], #4 92*15dc779aSAndroid Build Coastguard Worker LDRGE r9, [r5], #4 93*15dc779aSAndroid Build Coastguard Worker 94*15dc779aSAndroid Build Coastguard Worker EORGE r3 , r8 , r8, asr #31 95*15dc779aSAndroid Build Coastguard Worker ORRGE r12, r12, r3 96*15dc779aSAndroid Build Coastguard Worker 97*15dc779aSAndroid Build Coastguard Worker EORGE r3 , r9 , r9, asr #31 98*15dc779aSAndroid Build Coastguard Worker ORRGE r12, r12, r3 99*15dc779aSAndroid Build Coastguard Worker 100*15dc779aSAndroid Build Coastguard Worker BGT HQ_IN_LOOP 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard WorkerINLOEN: 103*15dc779aSAndroid Build Coastguard Worker ADD r7, r7, #1 104*15dc779aSAndroid Build Coastguard Worker CMP r7, r10 105*15dc779aSAndroid Build Coastguard Worker BLT HQ_OUTER_LOOP 106*15dc779aSAndroid Build Coastguard Worker 107*15dc779aSAndroid Build Coastguard WorkerEXIT: 108*15dc779aSAndroid Build Coastguard Worker 109*15dc779aSAndroid Build Coastguard Worker CLZ r0, r12 110*15dc779aSAndroid Build Coastguard Worker SUB r0, r0, #1 111*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {r4-r12} 112*15dc779aSAndroid Build Coastguard Worker BX lr 113*15dc779aSAndroid Build Coastguard Worker 114