1@/****************************************************************************** 2@ * 3@ * Copyright (C) 2018 The Android Open Source Project 4@ * 5@ * Licensed under the Apache License, Version 2.0 (the "License"); 6@ * you may not use this file except in compliance with the License. 7@ * You may obtain a copy of the License at: 8@ * 9@ * http:@www.apache.org/licenses/LICENSE-2.0 10@ * 11@ * Unless required by applicable law or agreed to in writing, software 12@ * distributed under the License is distributed on an "AS IS" BASIS, 13@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14@ * See the License for the specific language governing permissions and 15@ * limitations under the License. 16@ * 17@ ***************************************************************************** 18@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19@*/ 20 21 22.global ixheaacd_esbr_radix4bfly 23.type ixheaacd_esbr_radix4bfly, %function 24 25ixheaacd_esbr_radix4bfly: 26 27 STMFD sp!, {r4-r12, r14} 28 29 SUB sp, sp, #16 30 31 MOV r6, #6 32 MUL r7, r6, r3 33 MOV r4, r3 34 STR r7, [sp] 35 36 37 38 MOV r3, r3, lsl #1 39 40 STR r2, [sp, #8] 41 STR r4, [sp, #12] 42 STR r4, [sp, #4] 43 44 ADD r2, r1, r3, lsl #2 45 ADD r0, r0, #16 46 47 48RADIX4_OUTLOOP: 49RADIX4_INLOOP: 50 51 52 LDR r6, [r1] 53 LDR r7, [r2] 54 LDR r8, [r2, r3, lsl #2] 55 LDR r9, [r2, r3, lsl #3] 56 57 ADD r10, r6, r8 58 SUB r11, r6, r8 59 ADD r12, r7, r9 60 SUB r14, r7, r9 61 62 ADD r6, r10, r12 63 SUB r7, r10, r12 64 STR r6, [r1], #4 65 66 LDR r8, [r1] 67 LDR r6, [r2, #4]! 68 LDR r9, [r2, r3, lsl #2]! 69 LDR r10, [r2, r3, lsl #2]! 70 71 ADD r12, r8, r9 72 SUB r8, r8, r9 73 ADD r9, r6, r10 74 SUB r6, r6, r10 75 76 ADD r10, r12, r9 77 STR r10, [r1], #4 78 SUB r12, r12, r9 79 80 ADD r9, r11, r6 81 SUB r10, r11, r6 82 ADD r11, r8, r14 83 LDR r5, [r0], #4 84 LDR r4, [r0], #-12 85 SUB r6, r8, r14 86 87 RSB r5, r5, #0 88 SMULL r14, r8, r10, r5 89 SMLAL r14, r8, r11, r4 90 RSB r5, r5, #0 91 92 MOV r8, r8, lsl #1 93 STR r8, [r2], #-4 94 95 SMULL r14, r8, r10, r4 96 SMLAL r14, r8, r11, r5 97 LDR r11, [r0], #4 98 LDR r4, [r0], #-12 99 MOV r8, r8, lsl #1 100 STR r8, [r2], -r3, lsl #2 101 102 SMULL r10, r8, r7, r4 103 SMLAL r10, r8, r12, r11 104 105 LDR r14, [r0], #4 106 107 MOV r5, r8, lsl #1 108 109 RSB r11, r11, #0 110 SMULL r10, r8, r7, r11 111 SMLAL r10, r8, r12, r4 112 LDR r4, [r0], #36 113 STR r5, [r2], #4 114 MOV r7, r8, lsl #1 115 116 RSB r14, r14, #0 117 SMULL r11, r12, r9, r14 118 SMLAL r11, r12, r6, r4 119 RSB r14, r14, #0 120 121 STR r7, [r2], -r3, lsl #2 122 MOV r12, r12, lsl #1 123 124 SMULL r10, r7, r9, r4 125 SMLAL r10, r7, r6, r14 126 127 STR r12, [r2], #-4 128 MOV r7, r7, lsl #1 129 STR r7, [r2], #8 130 131 LDR r4, [sp, #4] 132 SUBS r4, r4, #1 133 STR r4, [sp, #4] 134 BGT RADIX4_INLOOP 135 136 LDR r8, [sp] 137 LDR r4, [sp, #12] 138 139 LDR r6, [sp, #8] 140 141 142 SUB r0, r0, r8, lsl #2 143 ADD r1, r1, r8, lsl #2 144 ADD r2, r2, r8, lsl #2 145 STR r4, [sp, #4] 146 SUBS r6, r6, #1 147 STR r6, [sp, #8] 148 BGT RADIX4_OUTLOOP 149 150 151 152 ADD sp, sp, #16 153 LDMFD sp!, {r4-r12, r15} 154 155 156