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.global ixheaacd_esbr_radix4bfly 23*15dc779aSAndroid Build Coastguard Worker.type ixheaacd_esbr_radix4bfly, %function 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Workerixheaacd_esbr_radix4bfly: 26*15dc779aSAndroid Build Coastguard Worker 27*15dc779aSAndroid Build Coastguard Worker STMFD sp!, {r4-r12, r14} 28*15dc779aSAndroid Build Coastguard Worker 29*15dc779aSAndroid Build Coastguard Worker SUB sp, sp, #16 30*15dc779aSAndroid Build Coastguard Worker 31*15dc779aSAndroid Build Coastguard Worker MOV r6, #6 32*15dc779aSAndroid Build Coastguard Worker MUL r7, r6, r3 33*15dc779aSAndroid Build Coastguard Worker MOV r4, r3 34*15dc779aSAndroid Build Coastguard Worker STR r7, [sp] 35*15dc779aSAndroid Build Coastguard Worker 36*15dc779aSAndroid Build Coastguard Worker 37*15dc779aSAndroid Build Coastguard Worker 38*15dc779aSAndroid Build Coastguard Worker MOV r3, r3, lsl #1 39*15dc779aSAndroid Build Coastguard Worker 40*15dc779aSAndroid Build Coastguard Worker STR r2, [sp, #8] 41*15dc779aSAndroid Build Coastguard Worker STR r4, [sp, #12] 42*15dc779aSAndroid Build Coastguard Worker STR r4, [sp, #4] 43*15dc779aSAndroid Build Coastguard Worker 44*15dc779aSAndroid Build Coastguard Worker ADD r2, r1, r3, lsl #2 45*15dc779aSAndroid Build Coastguard Worker ADD r0, r0, #16 46*15dc779aSAndroid Build Coastguard Worker 47*15dc779aSAndroid Build Coastguard Worker 48*15dc779aSAndroid Build Coastguard WorkerRADIX4_OUTLOOP: 49*15dc779aSAndroid Build Coastguard WorkerRADIX4_INLOOP: 50*15dc779aSAndroid Build Coastguard Worker 51*15dc779aSAndroid Build Coastguard Worker 52*15dc779aSAndroid Build Coastguard Worker LDR r6, [r1] 53*15dc779aSAndroid Build Coastguard Worker LDR r7, [r2] 54*15dc779aSAndroid Build Coastguard Worker LDR r8, [r2, r3, lsl #2] 55*15dc779aSAndroid Build Coastguard Worker LDR r9, [r2, r3, lsl #3] 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker ADD r10, r6, r8 58*15dc779aSAndroid Build Coastguard Worker SUB r11, r6, r8 59*15dc779aSAndroid Build Coastguard Worker ADD r12, r7, r9 60*15dc779aSAndroid Build Coastguard Worker SUB r14, r7, r9 61*15dc779aSAndroid Build Coastguard Worker 62*15dc779aSAndroid Build Coastguard Worker ADD r6, r10, r12 63*15dc779aSAndroid Build Coastguard Worker SUB r7, r10, r12 64*15dc779aSAndroid Build Coastguard Worker STR r6, [r1], #4 65*15dc779aSAndroid Build Coastguard Worker 66*15dc779aSAndroid Build Coastguard Worker LDR r8, [r1] 67*15dc779aSAndroid Build Coastguard Worker LDR r6, [r2, #4]! 68*15dc779aSAndroid Build Coastguard Worker LDR r9, [r2, r3, lsl #2]! 69*15dc779aSAndroid Build Coastguard Worker LDR r10, [r2, r3, lsl #2]! 70*15dc779aSAndroid Build Coastguard Worker 71*15dc779aSAndroid Build Coastguard Worker ADD r12, r8, r9 72*15dc779aSAndroid Build Coastguard Worker SUB r8, r8, r9 73*15dc779aSAndroid Build Coastguard Worker ADD r9, r6, r10 74*15dc779aSAndroid Build Coastguard Worker SUB r6, r6, r10 75*15dc779aSAndroid Build Coastguard Worker 76*15dc779aSAndroid Build Coastguard Worker ADD r10, r12, r9 77*15dc779aSAndroid Build Coastguard Worker STR r10, [r1], #4 78*15dc779aSAndroid Build Coastguard Worker SUB r12, r12, r9 79*15dc779aSAndroid Build Coastguard Worker 80*15dc779aSAndroid Build Coastguard Worker ADD r9, r11, r6 81*15dc779aSAndroid Build Coastguard Worker SUB r10, r11, r6 82*15dc779aSAndroid Build Coastguard Worker ADD r11, r8, r14 83*15dc779aSAndroid Build Coastguard Worker LDR r5, [r0], #4 84*15dc779aSAndroid Build Coastguard Worker LDR r4, [r0], #-12 85*15dc779aSAndroid Build Coastguard Worker SUB r6, r8, r14 86*15dc779aSAndroid Build Coastguard Worker 87*15dc779aSAndroid Build Coastguard Worker RSB r5, r5, #0 88*15dc779aSAndroid Build Coastguard Worker SMULL r14, r8, r10, r5 89*15dc779aSAndroid Build Coastguard Worker SMLAL r14, r8, r11, r4 90*15dc779aSAndroid Build Coastguard Worker RSB r5, r5, #0 91*15dc779aSAndroid Build Coastguard Worker 92*15dc779aSAndroid Build Coastguard Worker MOV r8, r8, lsl #1 93*15dc779aSAndroid Build Coastguard Worker STR r8, [r2], #-4 94*15dc779aSAndroid Build Coastguard Worker 95*15dc779aSAndroid Build Coastguard Worker SMULL r14, r8, r10, r4 96*15dc779aSAndroid Build Coastguard Worker SMLAL r14, r8, r11, r5 97*15dc779aSAndroid Build Coastguard Worker LDR r11, [r0], #4 98*15dc779aSAndroid Build Coastguard Worker LDR r4, [r0], #-12 99*15dc779aSAndroid Build Coastguard Worker MOV r8, r8, lsl #1 100*15dc779aSAndroid Build Coastguard Worker STR r8, [r2], -r3, lsl #2 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker SMULL r10, r8, r7, r4 103*15dc779aSAndroid Build Coastguard Worker SMLAL r10, r8, r12, r11 104*15dc779aSAndroid Build Coastguard Worker 105*15dc779aSAndroid Build Coastguard Worker LDR r14, [r0], #4 106*15dc779aSAndroid Build Coastguard Worker 107*15dc779aSAndroid Build Coastguard Worker MOV r5, r8, lsl #1 108*15dc779aSAndroid Build Coastguard Worker 109*15dc779aSAndroid Build Coastguard Worker RSB r11, r11, #0 110*15dc779aSAndroid Build Coastguard Worker SMULL r10, r8, r7, r11 111*15dc779aSAndroid Build Coastguard Worker SMLAL r10, r8, r12, r4 112*15dc779aSAndroid Build Coastguard Worker LDR r4, [r0], #36 113*15dc779aSAndroid Build Coastguard Worker STR r5, [r2], #4 114*15dc779aSAndroid Build Coastguard Worker MOV r7, r8, lsl #1 115*15dc779aSAndroid Build Coastguard Worker 116*15dc779aSAndroid Build Coastguard Worker RSB r14, r14, #0 117*15dc779aSAndroid Build Coastguard Worker SMULL r11, r12, r9, r14 118*15dc779aSAndroid Build Coastguard Worker SMLAL r11, r12, r6, r4 119*15dc779aSAndroid Build Coastguard Worker RSB r14, r14, #0 120*15dc779aSAndroid Build Coastguard Worker 121*15dc779aSAndroid Build Coastguard Worker STR r7, [r2], -r3, lsl #2 122*15dc779aSAndroid Build Coastguard Worker MOV r12, r12, lsl #1 123*15dc779aSAndroid Build Coastguard Worker 124*15dc779aSAndroid Build Coastguard Worker SMULL r10, r7, r9, r4 125*15dc779aSAndroid Build Coastguard Worker SMLAL r10, r7, r6, r14 126*15dc779aSAndroid Build Coastguard Worker 127*15dc779aSAndroid Build Coastguard Worker STR r12, [r2], #-4 128*15dc779aSAndroid Build Coastguard Worker MOV r7, r7, lsl #1 129*15dc779aSAndroid Build Coastguard Worker STR r7, [r2], #8 130*15dc779aSAndroid Build Coastguard Worker 131*15dc779aSAndroid Build Coastguard Worker LDR r4, [sp, #4] 132*15dc779aSAndroid Build Coastguard Worker SUBS r4, r4, #1 133*15dc779aSAndroid Build Coastguard Worker STR r4, [sp, #4] 134*15dc779aSAndroid Build Coastguard Worker BGT RADIX4_INLOOP 135*15dc779aSAndroid Build Coastguard Worker 136*15dc779aSAndroid Build Coastguard Worker LDR r8, [sp] 137*15dc779aSAndroid Build Coastguard Worker LDR r4, [sp, #12] 138*15dc779aSAndroid Build Coastguard Worker 139*15dc779aSAndroid Build Coastguard Worker LDR r6, [sp, #8] 140*15dc779aSAndroid Build Coastguard Worker 141*15dc779aSAndroid Build Coastguard Worker 142*15dc779aSAndroid Build Coastguard Worker SUB r0, r0, r8, lsl #2 143*15dc779aSAndroid Build Coastguard Worker ADD r1, r1, r8, lsl #2 144*15dc779aSAndroid Build Coastguard Worker ADD r2, r2, r8, lsl #2 145*15dc779aSAndroid Build Coastguard Worker STR r4, [sp, #4] 146*15dc779aSAndroid Build Coastguard Worker SUBS r6, r6, #1 147*15dc779aSAndroid Build Coastguard Worker STR r6, [sp, #8] 148*15dc779aSAndroid Build Coastguard Worker BGT RADIX4_OUTLOOP 149*15dc779aSAndroid Build Coastguard Worker 150*15dc779aSAndroid Build Coastguard Worker 151*15dc779aSAndroid Build Coastguard Worker 152*15dc779aSAndroid Build Coastguard Worker ADD sp, sp, #16 153*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {r4-r12, r15} 154*15dc779aSAndroid Build Coastguard Worker 155*15dc779aSAndroid Build Coastguard Worker 156