diff options
author | Anthony Blake <anthonix@me.com> | 2012-08-24 13:08:34 +1200 |
---|---|---|
committer | Anthony Blake <anthonix@me.com> | 2012-08-24 13:08:34 +1200 |
commit | 625f46968820cb98391d67782a9deac4504e289a (patch) | |
tree | ece20b8d1c5f08f7f03ce54a822fedbb57771c41 /src/neon.s | |
parent | 7181d4763a5b526c675857626d42faf68f6cb97b (diff) | |
download | ffts-625f46968820cb98391d67782a9deac4504e289a.zip ffts-625f46968820cb98391d67782a9deac4504e289a.tar.gz |
Working on ARM
Diffstat (limited to 'src/neon.s')
-rw-r--r-- | src/neon.s | 547 |
1 files changed, 344 insertions, 203 deletions
@@ -2,37 +2,39 @@ .globl _neon_x4 .align 4 _neon_x4: - add r3, r0, #0 - add r4, r3, r1, lsl #1 - add r5, r3, r1, lsl #2 - add r6, r4, r1, lsl #2 - +@ add r3, r0, #0 - vld1.32 {q2,q3}, [r2, :128] - vld1.32 {q8,q9}, [r3, :128] + vld1.32 {q8,q9}, [r0, :128] + add r4, r0, r1, lsl #1 vld1.32 {q10,q11}, [r4, :128] + add r5, r0, r1, lsl #2 vld1.32 {q12,q13}, [r5, :128] + add r6, r4, r1, lsl #2 vld1.32 {q14,q15}, [r6, :128] + vld1.32 {q2,q3}, [r2, :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 + vmul.f32 q0, q13, q3 + vmul.f32 q5, q12, q2 + vmul.f32 q1, q14, q2 + vmul.f32 q4, q14, q3 + vmul.f32 q14, q12, q3 + vmul.f32 q13, q13, q2 + vmul.f32 q12, q15, q3 + vmul.f32 q2, q15, q2 + vsub.f32 q0, q5, q0 + vadd.f32 q13, q13, q14 + vadd.f32 q12, q12, q1 + vsub.f32 q1, q2, q4 + vadd.f32 q15, q0, q12 + vsub.f32 q12, q0, q12 + vadd.f32 q14, q13, q1 + vsub.f32 q13, q13, q1 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] + vst1.32 {q0,q1}, [r0, :128] vsub.f32 q5, q9, q14 vsub.f32 q6, q10, q13 vadd.f32 q7, q11, q12 @@ -41,6 +43,39 @@ _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 .align 4 _neon_x8: @@ -56,94 +91,191 @@ _neon_x8: add r12, r2, #0 @ LUT sub r11, r11, r1, lsr #5 - nop neon_x8_loop: - vld1.32 {q10,q11}, [r5, :128] - vld1.32 {q12,q13}, [r4, :128] - vld1.32 {q14,q15}, [r6, :128] - adds r11, r11, #1 - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q1, q10, q3 - vmul.f32 q9, q15, q2 - vmul.f32 q0, q14, q2 - vmul.f32 q10, q10, q2 - vmla.f32 q1,q11,q2 - vmls.f32 q9,q14,q3 - vmla.f32 q0,q15,q3 - vsub.f32 q14, q1, q9 - vmls.f32 q10,q11,q3 - vsub.f32 q11, q10, q0 - vadd.f32 q10, q10, q0 - vadd.f32 q4, q12, q14 - vsub.f32 q5, q13, q11 - vsub.f32 q6, q12, q14 - vadd.f32 q7, q13, q11 - vst1.32 {q4,q5}, [r4, :128] - vadd.f32 q9, q1, q9 - vld1.32 {q2,q3}, [r3, :128] - vst1.32 {q6,q7}, [r6, :128] - vld1.32 {q12,q13}, [r7, :128] - vld1.32 {q14,q15}, [r9, :128] - vmov q1, q3 - vmov q8, q2 - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q0, q12, q2 - vmul.f32 q11, q14, q2 - vmul.f32 q4, q15, q2 - vmul.f32 q12, q12, q3 - vmls.f32 q0,q13,q3 - vmla.f32 q11,q15,q3 - vadd.f32 q15, q8, q10 - vmls.f32 q4,q14,q3 - vmla.f32 q12,q13,q2 - vadd.f32 q14, q0, q11 - vsub.f32 q8, q8, q10 - vsub.f32 q10, q12, q4 - vadd.f32 q13, q12, q4 - vadd.f32 q12, q1, q9 - vsub.f32 q9, q1, q9 - vsub.f32 q11, q0, q11 - vadd.f32 q0, q15, q14 - vadd.f32 q1, q12, q13 - vsub.f32 q4, q15, q14 - vadd.f32 q2, q8, q10 - vsub.f32 q5, q12, q13 - vst1.32 {q0,q1}, [r3, :128]! - vsub.f32 q3, q9, q11 - vsub.f32 q6, q8, q10 - vadd.f32 q7, q9, q11 - vst1.32 {q2,q3}, [r5, :128]! - vst1.32 {q4,q5}, [r7, :128]! - vst1.32 {q6,q7}, [r9, :128]! - vld1.32 {q8,q9}, [r4, :128] - vld1.32 {q10,q11}, [r6, :128] - vld1.32 {q12,q13}, [r8, :128] - vld1.32 {q14,q15}, [r10, :128] - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q4, q14, q2 - vmul.f32 q5, q12, q2 - vmul.f32 q6, q15, q2 - vmul.f32 q7, q12, q3 - vmla.f32 q4,q15,q3 - vmls.f32 q5,q13,q3 - vmls.f32 q6,q14,q3 - vadd.f32 q12, q5, q4 - vmla.f32 q7,q13,q2 - vsub.f32 q14, q5, q4 - vadd.f32 q13, q7, q6 - vsub.f32 q15, q7, q6 - vadd.f32 q0, q8, q12 - vadd.f32 q1, q9, q13 - vadd.f32 q2, q10, q15 - vsub.f32 q3, q11, q14 - vsub.f32 q4, q8, q12 - vst1.32 {q0,q1}, [r4, :128]! - vsub.f32 q5, q9, q13 - vsub.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]! + vld1.32 {q2,q3}, [r12, :128]! + vld1.32 {q14,q15}, [r6, :128] + vld1.32 {q10,q11}, [r5, :128] + adds r11, r11, #1 + vmul.f32 q12, q15, q2 + vmul.f32 q8, q14, q3 + vmul.f32 q13, q14, q2 + vmul.f32 q9, q10, q3 + vmul.f32 q1, q10, q2 + vmul.f32 q0, q11, q2 + vmul.f32 q14, q11, q3 + vmul.f32 q15, q15, q3 + vld1.32 {q2,q3}, [r12, :128]! + vsub.f32 q10, q12, q8 + vadd.f32 q11, q0, q9 + vadd.f32 q8, q15, q13 + vld1.32 {q12,q13}, [r4, :128] + vsub.f32 q9, q1, q14 + vsub.f32 q15, q11, q10 + vsub.f32 q14, q9, q8 + vadd.f32 q4, q12, q15 + vsub.f32 q6, q12, q15 + vsub.f32 q5, q13, q14 + vadd.f32 q7, q13, q14 + vld1.32 {q14,q15}, [r9, :128] + vld1.32 {q12,q13}, [r7, :128] + vmul.f32 q1, q14, q2 + vmul.f32 q0, q14, q3 + vst1.32 {q4,q5}, [r4, :128] + vmul.f32 q14, q15, q3 + vmul.f32 q4, q15, q2 + vadd.f32 q15, q9, q8 + vst1.32 {q6,q7}, [r6, :128] + vmul.f32 q8, q12, q3 + vmul.f32 q5, q13, q3 + vmul.f32 q12, q12, q2 + vmul.f32 q9, q13, q2 + vadd.f32 q14, q14, q1 + vsub.f32 q13, q4, q0 + vadd.f32 q0, q9, q8 + vld1.32 {q8,q9}, [r3, :128] + vadd.f32 q1, q11, q10 + vsub.f32 q12, q12, q5 + vadd.f32 q11, q8, q15 + vsub.f32 q8, q8, q15 + vadd.f32 q2, q12, q14 + vsub.f32 q10, q0, q13 + vadd.f32 q15, q0, q13 + vadd.f32 q13, q9, q1 + vsub.f32 q9, q9, q1 + vsub.f32 q12, q12, q14 + vadd.f32 q0, q11, q2 + vadd.f32 q1, q13, q15 + vsub.f32 q4, q11, q2 + vadd.f32 q2, q8, q10 + vsub.f32 q3, q9, q12 + vst1.32 {q0,q1}, [r3, :128]! + vsub.f32 q5, q13, q15 + vld1.32 {q14,q15}, [r10, :128] + vadd.f32 q7, q9, q12 + vld1.32 {q12,q13}, [r8, :128] + vst1.32 {q2,q3}, [r5, :128]! + vld1.32 {q2,q3}, [r12, :128]! + vsub.f32 q6, q8, q10 + vmul.f32 q8, q14, q2 + vst1.32 {q4,q5}, [r7, :128]! + vmul.f32 q10, q15, q3 + vmul.f32 q9, q13, q3 + vmul.f32 q11, q12, q2 + vmul.f32 q14, q14, q3 + vst1.32 {q6,q7}, [r9, :128]! + vmul.f32 q15, q15, q2 + vmul.f32 q12, q12, q3 + vmul.f32 q13, q13, q2 + vadd.f32 q10, q10, q8 + vsub.f32 q11, q11, q9 + vld1.32 {q8,q9}, [r4, :128] + vsub.f32 q14, q15, q14 + vadd.f32 q15, q13, q12 + vadd.f32 q13, q11, q10 + vadd.f32 q12, q15, q14 + vsub.f32 q15, q15, q14 + vsub.f32 q14, q11, q10 + vld1.32 {q10,q11}, [r6, :128] + vadd.f32 q0, q8, q13 + vadd.f32 q1, q9, q12 + vadd.f32 q2, q10, q15 + vsub.f32 q3, q11, q14 + vsub.f32 q4, q8, q13 + vst1.32 {q0,q1}, [r4, :128]! + vsub.f32 q5, q9, q12 + vsub.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]! + + + + +@@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 @@ -163,94 +295,103 @@ _neon_x8_t: add r12, r2, #0 @ LUT sub r11, r11, r1, lsr #5 - nop neon_x8_t_loop: - vld1.32 {q10,q11}, [r5, :128] - vld1.32 {q12,q13}, [r4, :128] - adds r11, r11, #1 - vld1.32 {q14,q15}, [r6, :128] - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q1, q10, q3 - vmul.f32 q9, q15, q2 - vmul.f32 q0, q14, q2 - vmul.f32 q10, q10, q2 - vmla.f32 q1,q11,q2 - vmls.f32 q9,q14,q3 - vmla.f32 q0,q15,q3 - vsub.f32 q14, q1, q9 - vmls.f32 q10,q11,q3 - vsub.f32 q11, q10, q0 - vadd.f32 q10, q10, q0 - vadd.f32 q4, q12, q14 - vsub.f32 q5, q13, q11 - vsub.f32 q6, q12, q14 - vadd.f32 q7, q13, q11 - vst1.32 {q4,q5}, [r4, :128] - vadd.f32 q9, q1, q9 - vld1.32 {q2,q3}, [r3, :128] - vst1.32 {q6,q7}, [r6, :128] - vld1.32 {q12,q13}, [r7, :128] - vld1.32 {q14,q15}, [r9, :128] - vmov q1, q3 - vmov q8, q2 - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q0, q12, q2 - vmul.f32 q11, q14, q2 - vmul.f32 q4, q15, q2 - vmul.f32 q12, q12, q3 - vmls.f32 q0,q13,q3 - vmla.f32 q11,q15,q3 - vadd.f32 q15, q8, q10 - vmls.f32 q4,q14,q3 - vmla.f32 q12,q13,q2 - vadd.f32 q14, q0, q11 - vsub.f32 q8, q8, q10 - vsub.f32 q10, q12, q4 - vadd.f32 q13, q12, q4 - vadd.f32 q12, q1, q9 - vsub.f32 q9, q1, q9 - vsub.f32 q11, q0, q11 - vadd.f32 q0, q15, q14 - vadd.f32 q1, q12, q13 - vsub.f32 q4, q15, q14 - vadd.f32 q2, q8, q10 - vsub.f32 q5, q12, q13 - vst2.32 {q0,q1}, [r3, :128]! - vsub.f32 q3, q9, q11 - vsub.f32 q6, q8, q10 - vadd.f32 q7, q9, q11 - vst2.32 {q2,q3}, [r5, :128]! - vst2.32 {q4,q5}, [r7, :128]! - vst2.32 {q6,q7}, [r9, :128]! - vld1.32 {q8,q9}, [r4, :128] - vld1.32 {q10,q11}, [r6, :128] - vld1.32 {q12,q13}, [r8, :128] - vld1.32 {q14,q15}, [r10, :128] - vld1.32 {q2,q3}, [r12, :128]! - vmul.f32 q4, q14, q2 - vmul.f32 q5, q12, q2 - vmul.f32 q6, q15, q2 - vmul.f32 q7, q12, q3 - vmla.f32 q4,q15,q3 - vmls.f32 q5,q13,q3 - vmls.f32 q6,q14,q3 - vadd.f32 q12, q5, q4 - vmla.f32 q7,q13,q2 - vsub.f32 q14, q5, q4 - vadd.f32 q13, q7, q6 - vsub.f32 q15, q7, q6 - vadd.f32 q0, q8, q12 - vadd.f32 q1, q9, q13 - vadd.f32 q2, q10, q15 - vsub.f32 q3, q11, q14 - vsub.f32 q4, q8, q12 - vst2.32 {q0,q1}, [r4, :128]! - vsub.f32 q5, q9, q13 - vsub.f32 q6, q10, q15 - vst2.32 {q2,q3}, [r6, :128]! - vadd.f32 q7, q11, q14 - vst2.32 {q4,q5}, [r8, :128]! - vst2.32 {q6,q7}, [r10, :128]! + vld1.32 {q2,q3}, [r12, :128]! + vld1.32 {q14,q15}, [r6, :128] + vld1.32 {q10,q11}, [r5, :128] + adds r11, r11, #1 + vmul.f32 q12, q15, q2 + vmul.f32 q8, q14, q3 + vmul.f32 q13, q14, q2 + vmul.f32 q9, q10, q3 + vmul.f32 q1, q10, q2 + vmul.f32 q0, q11, q2 + vmul.f32 q14, q11, q3 + vmul.f32 q15, q15, q3 + vld1.32 {q2,q3}, [r12, :128]! + vsub.f32 q10, q12, q8 + vadd.f32 q11, q0, q9 + vadd.f32 q8, q15, q13 + vld1.32 {q12,q13}, [r4, :128] + vsub.f32 q9, q1, q14 + vsub.f32 q15, q11, q10 + vsub.f32 q14, q9, q8 + vadd.f32 q4, q12, q15 + vsub.f32 q6, q12, q15 + vsub.f32 q5, q13, q14 + vadd.f32 q7, q13, q14 + vld1.32 {q14,q15}, [r9, :128] + vld1.32 {q12,q13}, [r7, :128] + vmul.f32 q1, q14, q2 + vmul.f32 q0, q14, q3 + vst1.32 {q4,q5}, [r4, :128] + vmul.f32 q14, q15, q3 + vmul.f32 q4, q15, q2 + vadd.f32 q15, q9, q8 + vst1.32 {q6,q7}, [r6, :128] + vmul.f32 q8, q12, q3 + vmul.f32 q5, q13, q3 + vmul.f32 q12, q12, q2 + vmul.f32 q9, q13, q2 + vadd.f32 q14, q14, q1 + vsub.f32 q13, q4, q0 + vadd.f32 q0, q9, q8 + vld1.32 {q8,q9}, [r3, :128] + vadd.f32 q1, q11, q10 + vsub.f32 q12, q12, q5 + vadd.f32 q11, q8, q15 + vsub.f32 q8, q8, q15 + vadd.f32 q2, q12, q14 + vsub.f32 q10, q0, q13 + vadd.f32 q15, q0, q13 + vadd.f32 q13, q9, q1 + vsub.f32 q9, q9, q1 + vsub.f32 q12, q12, q14 + vadd.f32 q0, q11, q2 + vadd.f32 q1, q13, q15 + vsub.f32 q4, q11, q2 + vadd.f32 q2, q8, q10 + vsub.f32 q3, q9, q12 + vst2.32 {q0,q1}, [r3, :128]! + vsub.f32 q5, q13, q15 + vld1.32 {q14,q15}, [r10, :128] + vadd.f32 q7, q9, q12 + vld1.32 {q12,q13}, [r8, :128] + vst2.32 {q2,q3}, [r5, :128]! + vld1.32 {q2,q3}, [r12, :128]! + vsub.f32 q6, q8, q10 + vmul.f32 q8, q14, q2 + vst2.32 {q4,q5}, [r7, :128]! + vmul.f32 q10, q15, q3 + vmul.f32 q9, q13, q3 + vmul.f32 q11, q12, q2 + vmul.f32 q14, q14, q3 + vst2.32 {q6,q7}, [r9, :128]! + vmul.f32 q15, q15, q2 + vmul.f32 q12, q12, q3 + vmul.f32 q13, q13, q2 + vadd.f32 q10, q10, q8 + vsub.f32 q11, q11, q9 + vld1.32 {q8,q9}, [r4, :128] + vsub.f32 q14, q15, q14 + vadd.f32 q15, q13, q12 + vadd.f32 q13, q11, q10 + vadd.f32 q12, q15, q14 + vsub.f32 q15, q15, q14 + vsub.f32 q14, q11, q10 + vld1.32 {q10,q11}, [r6, :128] + vadd.f32 q0, q8, q13 + vadd.f32 q1, q9, q12 + vadd.f32 q2, q10, q15 + vsub.f32 q3, q11, q14 + vsub.f32 q4, q8, q13 + vst2.32 {q0,q1}, [r4, :128]! + vsub.f32 q5, q9, q12 + vsub.f32 q6, q10, q15 + vst2.32 {q2,q3}, [r6, :128]! + vadd.f32 q7, q11, q14 + vst2.32 {q4,q5}, [r8, :128]! + vst2.32 {q6,q7}, [r10, :128]! bne neon_x8_t_loop @bx lr @@ -315,12 +456,12 @@ _neon_ee_loop: vsub.f32 d12, d18, d15 vadd.f32 d15, d31, d26 ldr r2, [r12], #4 - ldr lr, [r12], #4 vtrn.32 q1, q3 + ldr lr, [r12], #4 vtrn.32 q0, q2 add r2, r0, r2, lsl #2 - add lr, r0, lr, lsl #2 vsub.f32 q4, q11, q10 + add lr, r0, lr, lsl #2 vsub.f32 q5, q14, q5 vsub.f32 d14, d30, d27 vst2.32 {q0,q1}, [r2, :128]! @@ -369,14 +510,14 @@ _neon_oo_loop: vadd.f32 q4, q12, q11 vtrn.32 q0, q2 ldr r2, [r12], #4 - ldr lr, [r12], #4 vadd.f32 d15, d19, d16 + ldr lr, [r12], #4 vsub.f32 d11, d19, d16 vsub.f32 d14, d18, d17 vadd.f32 d10, d18, d17 add r2, r0, r2, lsl #2 - add lr, r0, lr, lsl #2 vtrn.32 q1, q3 + add lr, r0, lr, lsl #2 vst2.32 {q0,q1}, [r2, :128]! vst2.32 {q2,q3}, [lr, :128]! vtrn.32 q4, q6 @@ -410,12 +551,12 @@ _neon_eo: vadd.f32 d8, d22, d21 vsub.f32 d10, d22, d21 ldr r2, [r12], #4 - ldr lr, [r12], #4 vld1.32 {d20, d21}, [r11, :128] + ldr lr, [r12], #4 vtrn.32 q9, q4 add r2, r0, r2, lsl #2 - add lr, r0, lr, lsl #2 vtrn.32 q8, q5 + add lr, r0, lr, lsl #2 vswp d9,d10 vst1.32 {d8,d9,d10,d11}, [lr, :128]! vld2.32 {q13}, [r10, :128]! @tag7 @@ -482,12 +623,12 @@ _neon_oe: vsub.f32 q9, q13, q11 vadd.f32 q11, q13, q11 ldr r2, [r12], #4 - ldr lr, [r12], #4 vtrn.32 d24, d25 + ldr lr, [r12], #4 vtrn.32 d20, d21 add r2, r0, r2, lsl #2 - add lr, r0, lr, lsl #2 vsub.f32 q8, q10, q12 + add lr, r0, lr, lsl #2 vadd.f32 q10, q10, q12 vadd.f32 q0, q11, q10 vsub.f32 d25, d19, d16 |