.syntax unified .cpu cortex-a8 .eabi_attribute 10, 2 .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .file "fft002.opt.bc" .text .globl BitScrollArray .align 2 .type BitScrollArray,%function BitScrollArray: @ @BitScrollArray @ BB#0: @ %entry stmfd sp!, {r4, r5, r6, r7, lr} mov r1, #4 mov r5, r0 bl calloc mov r1, #0 cmp r5, #2 str r1, [r0] blt .LBB1_6 @ BB#1: @ %bb2.preheader.preheader rsb r4, r0, #0 mov lr, #1 mov r6, #0 mov r7, r5 b .LBB1_4 .LBB1_2: @ %bb1 @ Parent Loop BB1_4 Depth=1 @ => This Inner Loop Header: Depth=2 ldr r2, [r6, -r12] sub r1, r1, #1 cmp r1, #0 add r3, r2, r7 mov r2, lr, lsl #2 str r3, [r2, -r12] sub r12, r12, #4 bne .LBB1_2 .LBB1_3: @ %bb3 @ in Loop: Header=BB1_4 Depth=1 mov lr, lr, lsl #1 cmp lr, r5 ldmfdge sp!, {r4, r5, r6, r7, pc} .LBB1_4: @ %bb2.preheader @ =>This Loop Header: Depth=1 @ Child Loop BB1_2 Depth 2 mov r7, r7, asr #1 cmp lr, #1 blt .LBB1_3 @ BB#5: @ %bb1.preheader @ in Loop: Header=BB1_4 Depth=1 mov r12, r4 mov r1, lr b .LBB1_2 .LBB1_6: @ %bb5 ldmfd sp!, {r4, r5, r6, r7, pc} .size BitScrollArray, .-BitScrollArray .globl FFT .align 2 .type FFT,%function FFT: @ @FFT @ BB#0: @ %entry stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr} vstmdb sp!, {d8, d9, d10} mov r5, r2 ldr r2, [sp, #+60] mov r7, r1 mov r1, #1 mov r8, r0 mov r4, r3 mov r6, r1, lsl r2 mov r1, #4 mov r0, r6 bl calloc mov r1, #0 cmp r6, #2 str r1, [r0] blt .LBB2_6 @ BB#1: @ %bb2.preheader.i.preheader rsb r10, r0, #0 mov lr, #1 mov r3, #0 mov r12, r6 b .LBB2_4 .LBB2_2: @ %bb1.i @ Parent Loop BB2_4 Depth=1 @ => This Inner Loop Header: Depth=2 ldr r1, [r3, -r9] sub r2, r2, #1 mov r11, lr, lsl #2 cmp r2, #0 add r1, r1, r12 str r1, [r11, -r9] sub r9, r9, #4 bne .LBB2_2 .LBB2_3: @ %bb3.i @ in Loop: Header=BB2_4 Depth=1 mov lr, lr, lsl #1 cmp lr, r6 bge .LBB2_6 .LBB2_4: @ %bb2.preheader.i @ =>This Loop Header: Depth=1 @ Child Loop BB2_2 Depth 2 mov r12, r12, asr #1 cmp lr, #1 blt .LBB2_3 @ BB#5: @ %bb1.i.preheader @ in Loop: Header=BB2_4 Depth=1 mov r9, r10 mov r2, lr b .LBB2_2 .LBB2_6: @ %bb1.preheader cmp r6, #1 blt .LBB2_9 @ BB#7: @ %bb1.preheader.bb_crit_edge mov r12, r4 mov r3, r5 mov lr, r6 .LBB2_8: @ %bb @ =>This Inner Loop Header: Depth=1 ldr r1, [r0], #+4 sub lr, lr, #1 cmp lr, #0 add r2, r8, r1, lsl #2 add r1, r7, r1, lsl #2 vldr.32 s0, [r2] vstr.32 s0, [r3] add r3, r3, #4 vldr.32 s0, [r1] vstmia r12!, {s0} bne .LBB2_8 .LBB2_9: @ %bb10.loopexit ldr r0, [sp, #+60] cmp r0, #1 blt .LBB2_18 @ BB#10: @ %bb10.loopexit.bb3_crit_edge vldr.64 d9, .LCPI2_0 mov r7, #1 vldr.64 d8, .LCPI2_1 .LBB2_11: @ %bb3 @ =>This Loop Header: Depth=1 @ Child Loop BB2_15 Depth 2 @ Child Loop BB2_13 Depth 3 mov r0, #1 mov r8, r0, lsl r7 mov r9, r8, asr #1 vmov s0, r9 vcvt.f64.s32 d10, s0 vdiv.f64 d0, d9, d10 vmov r0, r1, d0 bl sin vdiv.f64 d0, d8, d10 mov r11, r0 mov r10, r1 vmov r0, r1, d0 bl cos cmp r9, #1 blt .LBB2_17 @ BB#12: @ %bb3.bb6.preheader_crit_edge @ in Loop: Header=BB2_11 Depth=1 vmov d0, r11, r10 vcvt.f32.f64 s2, d0 vmov d0, r0, r1 mov r1, #0 vcvt.f32.f64 s4, d0 vmov.f32 s1, #1.000000e+00 @ 1.000000e+00 vldr.32 s0, .LCPI2_2 vmov.f32 s8, s1 b .LBB2_15 .LBB2_13: @ %bb5 @ Parent Loop BB2_11 Depth=1 @ Parent Loop BB2_15 Depth=2 @ => This Inner Loop Header: Depth=3 add lr, r3, r2, lsl r7 add r0, r3, r2, lsl r7 add r11, r1, r2, lsl r7 add lr, r4, lr, lsl #2 add r0, r5, r0, lsl #2 vldr.32 s10, [lr] add r10, r5, r11, lsl #2 vldr.32 s12, [r0] vmul.f32 d7, d5, d4 vldr.32 s0, [r10] vmul.f32 d5, d5, d3 vnmls.f32 s14, s12, s6 vsub.f32 d0, d0, d7 vstr.32 s0, [r0] vmul.f32 d0, d6, d4 add r0, r4, r11, lsl #2 vadd.f32 d5, d0, d5 vldr.32 s0, [r0] vsub.f32 d0, d0, d5 vstr.32 s0, [lr] add lr, r12, r2, lsl r7 vldr.32 s0, [r10] add r2, r2, #1 cmp lr, r6 vadd.f32 d0, d0, d7 vstr.32 s0, [r10] vldr.32 s0, [r0] vadd.f32 d0, d0, d5 vstr.32 s0, [r0] blt .LBB2_13 .LBB2_14: @ %bb7 @ in Loop: Header=BB2_15 Depth=2 vmul.f32 d5, d4, d2 add r1, r1, #1 vmul.f32 d0, d3, d1 cmp r9, r1 vmul.f32 d4, d4, d1 vnmls.f32 s8, s6, s4 vadd.f32 d0, d0, d5 beq .LBB2_17 .LBB2_15: @ %bb6.preheader @ Parent Loop BB2_11 Depth=1 @ => This Loop Header: Depth=2 @ Child Loop BB2_13 Depth 3 vmov.f32 s6, s8 cmp r1, r6 vmov.f32 s8, s0 bge .LBB2_14 @ BB#16: @ %bb5.preheader @ in Loop: Header=BB2_15 Depth=2 add r12, r8, r1 add r3, r9, r1 mov r2, #0 b .LBB2_13 .LBB2_17: @ %bb9 @ in Loop: Header=BB2_11 Depth=1 ldr r0, [sp, #+60] add r7, r7, #1 cmp r7, r0 ble .LBB2_11 .LBB2_18: @ %return vldmia sp!, {d8, d9, d10} ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, r11, pc} @ BB#19: .align 2 .LCPI2_0: .long 1405670641 @ double -3.141593e+00 .long 3221823995 .align 2 .LCPI2_1: .long 1405670641 @ double 3.141593e+00 .long 1074340347 .align 2 .LCPI2_2: .long 0 @ float 0.000000e+00 .size FFT, .-FFT .globl main .align 2 .type main,%function main: @ @main @ BB#0: @ %entry stmfd sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #12 mov r0, #1, 24 @ 256 mov r1, #4 bl calloc mov r4, r0 mov r0, #1, 24 @ 256 mov r1, #4 bl calloc mov r7, r0 mov r0, #1, 24 @ 256 mov r1, #4 bl calloc mov r5, r0 mov r0, #1, 24 @ 256 mov r1, #4 bl calloc mov r6, r0 mov r3, #0 mov r0, #0 mov r1, #0 .LBB3_1: @ %bb @ =>This Inner Loop Header: Depth=1 vmov s0, r1 add r2, r4, r0 str r3, [r7, +r0] add r1, r1, #1 vcvt.f32.s32 d0, d0 str r3, [r5, +r0] str r3, [r6, +r0] add r0, r0, #4 vstr.32 s0, [r2] cmp r0, #1, 22 @ 1024 bne .LBB3_1 @ BB#2: @ %bb2 mov r1, #8 mov r0, sp str r1, [r0] mov r0, r4 mov r1, r7 mov r2, r5 mov r3, r6 mov r8, #0 bl FFT movw r9, :lower16:.L.str movt r9, :upper16:.L.str .LBB3_3: @ %bb3 @ =>This Inner Loop Header: Depth=1 add r1, r6, r8 add r2, r5, r8 vldr.32 s2, [r1] mov r1, sp vldr.32 s1, [r2] add r0, r4, r8 vcvt.f64.f32 d1, s2 add r8, r8, #4 vldr.32 s0, [r0] vstr.64 d1, [r1, #+4] vcvt.f64.f32 d1, s1 vmov r3, r0, d1 vcvt.f64.f32 d0, s0 str r0, [r1] vmov r1, r2, d0 mov r0, r9 bl printf cmp r8, #1, 22 @ 1024 bne .LBB3_3 @ BB#4: @ %bb5 mov r0, r4 bl free mov r0, r7 bl free mov r0, r5 bl free mov r0, r6 bl free add sp, sp, #12 ldmfd sp!, {r4, r5, r6, r7, r8, r9, pc} .size main, .-main .type .L.str,%object .section .rodata.str1.1,"aMS",%progbits,1 .L.str: @ @.str .asciz "%lf %lf %lf\n" .size .L.str, 13