summaryrefslogtreecommitdiffstats
path: root/src/neon.s
diff options
context:
space:
mode:
authorAnthony Blake <anthonix@me.com>2012-10-11 17:53:46 +1300
committerAnthony Blake <anthonix@me.com>2012-10-11 17:53:46 +1300
commit11c42fab7cda9d63f763962970fbac754b2192de (patch)
treea5b766201fab4afa456ffcda4d8db1fa9a62fddb /src/neon.s
parent54a23010b42e55641fca1aeb30261cc51db91881 (diff)
downloadffts-11c42fab7cda9d63f763962970fbac754b2192de.zip
ffts-11c42fab7cda9d63f763962970fbac754b2192de.tar.gz
Builds and runs on Android/ARM
Diffstat (limited to 'src/neon.s')
-rw-r--r--src/neon.s153
1 files changed, 16 insertions, 137 deletions
diff --git a/src/neon.s b/src/neon.s
index 2ee1a4d..2a2d107 100644
--- a/src/neon.s
+++ b/src/neon.s
@@ -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
OpenPOWER on IntegriCloud