diff options
author | Anthony Blake <anthonix@me.com> | 2012-10-11 17:53:46 +1300 |
---|---|---|
committer | Anthony Blake <anthonix@me.com> | 2012-10-11 17:53:46 +1300 |
commit | 11c42fab7cda9d63f763962970fbac754b2192de (patch) | |
tree | a5b766201fab4afa456ffcda4d8db1fa9a62fddb /src/neon.s | |
parent | 54a23010b42e55641fca1aeb30261cc51db91881 (diff) | |
download | ffts-11c42fab7cda9d63f763962970fbac754b2192de.zip ffts-11c42fab7cda9d63f763962970fbac754b2192de.tar.gz |
Builds and runs on Android/ARM
Diffstat (limited to 'src/neon.s')
-rw-r--r-- | src/neon.s | 153 |
1 files changed, 16 insertions, 137 deletions
@@ -1,7 +1,7 @@ - .globl _neon_x4 + .globl neon_x4 .align 4 -_neon_x4: +neon_x4: @ add r3, r0, #0 vld1.32 {q8,q9}, [r0, :128] @@ -43,42 +43,9 @@ _neon_x4: vst1.32 {q6,q7}, [r6, :128] bx lr -@@vld1.32 {q2,q3}, [r2, :128] -@@vld1.32 {q8,q9}, [r3, :128] -@@vld1.32 {q10,q11}, [r4, :128] -@@vld1.32 {q12,q13}, [r5, :128] -@@vld1.32 {q14,q15}, [r6, :128] -@@ -@@vmul.f32 q1, q12, q2 -@@vmul.f32 q0, q14, q2 -@@vmul.f32 q4, q15, q2 -@@vmul.f32 q12, q12, q3 -@@vmls.f32 q1,q13,q3 -@@vmla.f32 q0,q15,q3 -@@vmls.f32 q4,q14,q3 -@@vadd.f32 q15, q1, q0 -@@vmla.f32 q12,q13,q2 -@@vsub.f32 q13, q12, q4 -@@vadd.f32 q14, q12, q4 -@@vsub.f32 q12, q1, q0 -@@vadd.f32 q0, q8, q15 -@@vadd.f32 q1, q9, q14 -@@vadd.f32 q2, q10, q13 -@@vsub.f32 q4, q8, q15 -@@vsub.f32 q3, q11, q12 -@@ -@@vst1.32 {q0,q1}, [r3, :128] -@@vsub.f32 q5, q9, q14 -@@vsub.f32 q6, q10, q13 -@@vadd.f32 q7, q11, q12 -@@vst1.32 {q2,q3}, [r4, :128] -@@vst1.32 {q4,q5}, [r5, :128] -@@vst1.32 {q6,q7}, [r6, :128] -@@bx lr - - .globl _neon_x8 + .globl neon_x8 .align 4 -_neon_x8: +neon_x8: mov r11, #0 add r3, r0, #0 @ data0 add r5, r0, r1, lsl #1 @ data2 @@ -188,101 +155,13 @@ neon_x8_loop: vadd.f32 q7, q11, q14 vst1.32 {q4,q5}, [r8, :128]! vst1.32 {q6,q7}, [r10, :128]! - - - - -@@vld1.32 {q2, q3}, [r12, :128]! -@@vld1.32 {q14,q15}, [r6, :128] -@@vld1.32 {q10,q11}, [r5, :128] -@@vld1.32 {q12,q13}, [r4, :128] -@@adds r11, r11, #1 -@@vmul.f32 q0, q10, q3 -@@vmul.f32 q1, q15, q2 -@@vmul.f32 q8, q14, q2 -@@vmul.f32 q9, q10, q2 -@@vmla.f32 q0,q11,q2 -@@vmls.f32 q1,q14,q3 -@@vmla.f32 q8,q15,q3 -@@vsub.f32 q10, q1, q0 -@@vld1.32 {q14,q15}, [r9, :128] -@@vmls.f32 q9,q11,q3 -@@vld1.32 {q2, q3}, [r12, :128]! -@@vsub.f32 q11, q9, q8 -@@vadd.f32 q0, q0, q1 -@@vsub.f32 q4, q12, q10 -@@vsub.f32 q5, q13, q11 -@@vadd.f32 q6, q12, q10 -@@vadd.f32 q7, q13, q11 -@@vld1.32 {q12,q13}, [r7, :128] -@@vst1.32 {q4,q5}, [r4, :128] -@@vmul.f32 q4, q12, q2 -@@vmul.f32 q11, q14, q2 -@@vmul.f32 q12, q12, q3 -@@vmul.f32 q5, q15, q2 -@@vadd.f32 q10, q9, q8 -@@vld1.32 {q8,q9}, [r3, :128] -@@vst1.32 {q6,q7}, [r6, :128] -@@vmls.f32 q4,q13,q3 -@@vmla.f32 q11,q15,q3 -@@vmla.f32 q12,q13,q2 -@@vmls.f32 q5,q14,q3 -@@vadd.f32 q15, q8, q10 -@@vadd.f32 q14, q4, q11 -@@vsub.f32 q8, q8, q10 -@@vsub.f32 q10, q5, q12 -@@vadd.f32 q13, q12, q5 -@@vadd.f32 q12, q9, q0 -@@vsub.f32 q9, q9, q0 -@@vsub.f32 q11, q4, q11 -@@vadd.f32 q0, q15, q14 -@@vadd.f32 q1, q12, q13 -@@vsub.f32 q2, q8, q10 -@@vsub.f32 q3, q9, q11 -@@vsub.f32 q4, q15, q14 -@@vst1.32 {q0,q1}, [r3, :128]! -@@vld1.32 {q14,q15}, [r10, :128] -@@vsub.f32 q5, q12, q13 -@@vld1.32 {q12,q13}, [r8, :128] -@@vst1.32 {q2,q3}, [r5, :128]! -@@vld1.32 {q2, q3}, [r12, :128]! -@@vadd.f32 q6, q8, q10 -@@vadd.f32 q7, q9, q11 -@@vld1.32 {q8,q9}, [r4, :128] -@@vst1.32 {q4,q5}, [r7, :128]! -@@vmul.f32 q10, q14, q2 -@@vmul.f32 q11, q12, q2 -@@vmul.f32 q4, q15, q2 -@@vmul.f32 q5, q12, q3 -@@vst1.32 {q6,q7}, [r9, :128]! -@@vmla.f32 q10,q15,q3 -@@vmls.f32 q11,q13,q3 -@@vmls.f32 q4,q14,q3 -@@vadd.f32 q12, q11, q10 -@@vmla.f32 q5,q13,q2 -@@vsub.f32 q14, q11, q10 -@@vld1.32 {q10,q11}, [r6, :128] -@@vsub.f32 q15, q4, q5 -@@vadd.f32 q13, q5, q4 -@@vadd.f32 q0, q8, q12 -@@vsub.f32 q2, q10, q15 -@@vadd.f32 q1, q9, q13 -@@vsub.f32 q3, q11, q14 -@@vsub.f32 q4, q8, q12 -@@vsub.f32 q5, q9, q13 -@@vst1.32 {q0,q1}, [r4, :128]! -@@vadd.f32 q6, q10, q15 -@@vst1.32 {q2,q3}, [r6, :128]! -@@vadd.f32 q7, q11, q14 -@@vst1.32 {q4,q5}, [r8, :128]! -@@vst1.32 {q6,q7}, [r10, :128]! bne neon_x8_loop bx lr - .globl _neon_x8_t + .globl neon_x8_t .align 4 -_neon_x8_t: +neon_x8_t: mov r11, #0 add r3, r0, #0 @ data0 add r5, r0, r1, lsl #1 @ data2 @@ -402,9 +281,9 @@ neon_x8_t_loop: @ r3-r10 = data pointers @ r11 = loop iterations @ r2 & lr = temps - .globl _neon_ee + .globl neon_ee .align 4 -_neon_ee: +neon_ee: vld1.32 {d16, d17}, [r2, :128] _neon_ee_loop: vld2.32 {q15}, [r10, :128]! @@ -478,9 +357,9 @@ _neon_ee_loop: @ r3-r10 = data pointers @ r11 = loop iterations @ r2 & lr = temps - .globl _neon_oo + .globl neon_oo .align 4 -_neon_oo: +neon_oo: _neon_oo_loop: vld2.32 {q8}, [r6, :128]! @@ -532,9 +411,9 @@ _neon_oo_loop: @ r3-r10 = data pointers @ r11 = addr of twiddle @ r2 & lr = temps - .globl _neon_eo + .globl neon_eo .align 4 -_neon_eo: +neon_eo: vld2.32 {q9}, [r5, :128]! @tag2 vld2.32 {q13}, [r3, :128]! @tag0 vld2.32 {q12}, [r4, :128]! @tag1 @@ -609,9 +488,9 @@ _neon_eo: @ r3-r10 = data pointers @ r11 = addr of twiddle @ r2 & lr = temps - .globl _neon_oe + .globl neon_oe .align 4 -_neon_oe: +neon_oe: vld1.32 {q8}, [r5, :128]! vld1.32 {q10}, [r6, :128]! vld2.32 {q11}, [r4, :128]! @@ -685,7 +564,7 @@ _neon_oe: vstmia lr!, {q4-q7} - .globl _neon_end + .globl neon_end .align 4 -_neon_end: +neon_end: bx lr |