1 .globl FFT_4OFQ14 2 3 FFT_4OFQ14: 4 stmdb sp!, {r4 - r11, lr} 5 ldr lr, =s_Q14S_8 6 ldr lr, [lr] 7 cmp r2, lr 8 movgt r0, #1 9 ldmgtia sp!, {r4 - r11, pc} 10 stmdb sp!, {r1, r2} 11 mov r3, #0 12 mov r2, r2 13 14 LBL1: 15 add r12, r0, r3, lsl #2 16 add r12, r12, r2, lsr #1 17 ldrsh r5, [r12, #2] 18 ldrsh r4, [r12], +r2 19 ldrsh r9, [r12, #2] 20 ldrsh r8, [r12], +r2 21 ldrsh r7, [r12, #2] 22 ldrsh r6, [r12], +r2 23 ldrsh r11, [r12, #2] 24 ldrsh r10, [r12], +r2 25 add r4, r4, r6 26 add r5, r5, r7 27 sub r6, r4, r6, lsl #1 28 sub r7, r5, r7, lsl #1 29 sub r12, r8, r10 30 sub lr, r9, r11 31 add r10, r8, r10 32 add r11, r9, r11 33 sub r9, r4, r10 34 sub r8, r5, r11 35 add r4, r4, r10 36 add r5, r5, r11 37 sub r10, r6, lr 38 add r11, r7, r12 39 add r6, r6, lr 40 sub r7, r7, r12 41 ldr lr, =t_Q14R_rad8 42 ldrsh lr, [lr] 43 stmdb sp!, {r2} 44 add r12, r6, r7 45 mul r6, r12, lr 46 rsb r12, r12, r7, lsl #1 47 mul r7, r12, lr 48 sub r12, r11, r10 49 mul r10, r12, lr 50 sub r12, r12, r11, lsl #1 51 mul r11, r12, lr 52 ldmia sp!, {r2} 53 stmdb sp!, {r4 - r11} 54 add r4, r0, r3, lsl #2 55 ldrsh r7, [r4, #2] 56 ldrsh r6, [r4], +r2 57 ldrsh r11, [r4, #2] 58 ldrsh r10, [r4], +r2 59 ldrsh r9, [r4, #2] 60 ldrsh r8, [r4], +r2 61 ldrsh lr, [r4, #2] 62 ldrsh r12, [r4], +r2 63 mov r7, r7, asr #3 64 mov r6, r6, asr #3 65 add r6, r6, r8, asr #3 66 add r7, r7, r9, asr #3 67 sub r8, r6, r8, asr #2 68 sub r9, r7, r9, asr #2 69 sub r4, r10, r12 70 sub r5, r11, lr 71 add r10, r10, r12 72 add r11, r11, lr 73 add r6, r6, r10, asr #3 74 add r7, r7, r11, asr #3 75 sub r10, r6, r10, asr #2 76 sub r11, r7, r11, asr #2 77 sub r12, r8, r5, asr #3 78 add lr, r9, r4, asr #3 79 add r8, r8, r5, asr #3 80 sub r9, r9, r4, asr #3 81 ldmia sp!, {r4, r5} 82 add r6, r6, r4, asr #3 83 add r7, r7, r5, asr #3 84 sub r4, r6, r4, asr #2 85 sub r5, r7, r5, asr #2 86 strh r7, [r1, #2] 87 strh r6, [r1], #4 88 ldmia sp!, {r6, r7} 89 add r8, r8, r6, asr #17 90 add r9, r9, r7, asr #17 91 sub r6, r8, r6, asr #16 92 sub r7, r9, r7, asr #16 93 strh r9, [r1, #2] 94 strh r8, [r1], #4 95 ldmia sp!, {r8, r9} 96 add r10, r10, r8, asr #3 97 sub r11, r11, r9, asr #3 98 sub r8, r10, r8, asr #2 99 add r9, r11, r9, asr #2 100 strh r11, [r1, #2] 101 strh r10, [r1], #4 102 ldmia sp!, {r10, r11} 103 add r12, r12, r10, asr #17 104 add lr, lr, r11, asr #17 105 sub r10, r12, r10, asr #16 106 sub r11, lr, r11, asr #16 107 strh lr, [r1, #2] 108 strh r12, [r1], #4 109 strh r5, [r1, #2] 110 strh r4, [r1], #4 111 strh r7, [r1, #2] 112 strh r6, [r1], #4 113 strh r9, [r1, #2] 114 strh r8, [r1], #4 115 strh r11, [r1, #2] 116 strh r10, [r1], #4 117 eor r3, r3, r2, lsr #4 118 tst r3, r2, lsr #4 119 bne LBL1 120 121 eor r3, r3, r2, lsr #5 122 tst r3, r2, lsr #5 123 bne LBL1 124 125 mov r12, r2, lsr #6 126 127 LBL2: 128 eor r3, r3, r12 129 tst r3, r12 130 bne LBL1 131 132 movs r12, r12, lsr #1 133 bne LBL2 134 135 ldmia sp!, {r1, r2} 136 mov r3, r2, lsr #3 137 mov r2, #0x20 138 ldr r0, =t_Q14S_8 139 cmp r3, #1 140 beq LBL3 141 142 LBL6: 143 mov r3, r3, lsr #2 144 stmdb sp!, {r1, r3} 145 add r12, r2, r2, lsl #1 146 add r1, r1, r12 147 sub r3, r3, #1, 16 148 149 LBL5: 150 add r3, r3, r2, lsl #14 151 152 LBL4: 153 ldrsh r6, [r0], #2 154 ldrsh r7, [r0], #2 155 ldrsh r8, [r0], #2 156 ldrsh r9, [r0], #2 157 ldrsh r10, [r0], #2 158 ldrsh r11, [r0], #2 159 ldrsh r5, [r1, #2] 160 ldrsh r4, [r1], -r2 161 sub lr, r5, r4 162 mul r12, lr, r11 163 add lr, r10, r11, lsl #1 164 mla r11, r5, r10, r12 165 mla r10, r4, lr, r12 166 ldrsh r5, [r1, #2] 167 ldrsh r4, [r1], -r2 168 sub lr, r5, r4 169 mul r12, lr, r9 170 add lr, r8, r9, lsl #1 171 mla r9, r5, r8, r12 172 mla r8, r4, lr, r12 173 ldrsh r5, [r1, #2] 174 ldrsh r4, [r1], -r2 175 sub lr, r5, r4 176 mul r12, lr, r7 177 add lr, r6, r7, lsl #1 178 mla r7, r5, r6, r12 179 mla r6, r4, lr, r12 180 ldrsh r5, [r1, #2] 181 ldrsh r4, [r1] 182 mov r5, r5, asr #2 183 mov r4, r4, asr #2 184 add r12, r4, r6, asr #16 185 add lr, r5, r7, asr #16 186 sub r4, r4, r6, asr #16 187 sub r5, r5, r7, asr #16 188 add r6, r8, r10 189 add r7, r9, r11 190 sub r8, r8, r10 191 sub r9, r9, r11 192 add r10, r12, r6, asr #16 193 add r11, lr, r7, asr #16 194 strh r11, [r1, #2] 195 strh r10, [r1], +r2 196 add r10, r4, r9, asr #16 197 sub r11, r5, r8, asr #16 198 strh r11, [r1, #2] 199 strh r10, [r1], +r2 200 sub r10, r12, r6, asr #16 201 sub r11, lr, r7, asr #16 202 strh r11, [r1, #2] 203 strh r10, [r1], +r2 204 sub r10, r4, r9, asr #16 205 add r11, r5, r8, asr #16 206 strh r11, [r1, #2] 207 strh r10, [r1], #4 208 subs r3, r3, #1, 16 209 bge LBL4 210 add r12, r2, r2, lsl #1 211 add r1, r1, r12 212 sub r0, r0, r12 213 sub r3, r3, #1 214 movs lr, r3, lsl #16 215 bne LBL5 216 add r0, r0, r12 217 ldmia sp!, {r1, r3} 218 mov r2, r2, lsl #2 219 cmp r3, #2 220 bgt LBL6 221 222 LBL3: 223 mov r0, #0 224 ldmia sp!, {r4 - r11, pc} 225 andeq r3, r1, r0, lsr #32 226 andeq r10, r1, r12, ror #31 227 andeq r3, r1, r8, lsr #32 228