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.text 23.p2align 2 24 .global ixheaacd_inv_dit_fft_8pt_armv7 25 26ixheaacd_inv_dit_fft_8pt_armv7: 27 28 29 STMFD sp!, {r4-r12, lr} 30 LDR r3, [r0, #0] 31 LDR r4, [r0, #0x20] 32 LDR r5, [r0, #0x24] 33 QADD r12, r3, r4 34 LDR r6, [r0, #0x30] 35 QSUB r8, r3, r4 36 LDR r3, [r0, #4] 37 LDR r9, [r0, #0x34] 38 QADD r4, r3, r5 39 SUB sp, sp, #0x14 40 QSUB r5, r3, r5 41 LDR lr, [r0, #0x10] 42 LDR r3, [r0, #0x14] 43 QADD r10, lr, r6 44 QSUB r6, lr, r6 45 QADD r7, r3, r9 46 QSUB r9, r3, r9 47 48 49 QADD r3, r12, r10 50 QSUB lr, r12, r10 51 QADD r12, r4, r7 52 QSUB r7, r4, r7 53 QSUB r4, r8, r9 54 55 STR r7, [sp, #8] 56 QADD r7, r8, r9 57 QADD r8, r5, r6 58 STR r7, [sp, #0xc] 59 QSUB r5, r5, r6 60 61 STMIA sp, {r8, lr} 62 STR r5, [sp, #0x10] 63 64 65 66 LDR r5, [r0, #8] 67 LDR lr, [r0, #0x28] 68 LDR r9, [r0, #0x2c] 69 QADD r7, r5, lr 70 LDR r11, [r0, #0x38] 71 LDR r6, [r0, #0xc] 72 QSUB r5, r5, lr 73 LDR lr, [r0, #0x18] 74 QADD r8, r6, r9 75 QSUB r6, r6, r9 76 77 78 79 QADD r10, lr, r11 80 QSUB r9, lr, r11 81 LDR r11, [r0, #0x1c] 82 LDR r0, [r0, #0x3c] 83 84 MOV lr, r11 85 QADD r11, r11, r0 86 QSUB r0, lr, r0 87 88 89 QADD lr, r7, r10 90 QSUB r10, r7, r10 91 QADD r7, r8, r11 92 QSUB r11, r8, r11 93 94 QSUB r8, r5, r0 95 QADD r5, r5, r0 96 QADD r0, r6, r9 97 QSUB r6, r6, r9 98 99 100 QADD r9, r3, lr 101 QSUB r3, r3, lr 102 STR r9, [r1, #0] 103 104 QADD r9, r12, r7 105 LDR lr, [sp, #4] 106 STR r9, [r2, #0] 107 QSUB r9, r12, r7 108 109 110 QSUB r12, lr, r11 111 QADD r11, lr, r11 112 LDR lr, [sp, #8] 113 STR r11, [r1, #0x10] 114 QADD r7, lr, r10 115 QSUB r10, lr, r10 116 117 LDR r11, =0x00005a82 118 STR r10, [r2, #0x10] 119 120 QSUB r10, r8, r0 121 QADD r0, r8, r0 122 SMULWB r10, r10, r11 123 SMULWB r0, r0, r11 124 MOV r10, r10, LSL #1 125 126 QADD r8, r4, r10 127 LDR lr, [sp, #0] 128 129 STR r8, [r1, #4] 130 MOV r0, r0, LSL #1 131 QADD r8, lr, r0 132 133 QSUB r4, r4, r10 134 STR r8, [r2, #4] 135 QSUB r0, lr, r0 136 137 QADD r12, r12, r4 138 QADD r0, r7, r0 139 STR r12, [r1, #8] 140 STR r0, [r2, #8] 141 142 QADD r0, r5, r6 143 LDR r7, [sp, #0xc] 144 SMULWB r0, r0, r11 145 146 QSUB r12, r5, r6 147 MOV r0, r0, LSL #1 148 SMULWB r12, r12, r11 149 LDR r5, [sp, #0x10] 150 QSUB r4, r7, r0 151 MOV r12, r12, LSL #1 152 QADD r10, r5, r12 153 QADD r3, r3, r4 154 QADD lr, r9, r10 155 QADD r0, r7, r0 156 QSUB r10, r5, r12 157 STR r3, [r1, #0xc] 158 STR lr, [r2, #0xc] 159 STR r0, [r1, #0x14] 160 STR r10, [r2, #0x14] 161 ADD sp, sp, #0x14 162 LDMFD sp!, {r4-r12, pc} 163 164