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