diff kf_bfly4.S @ 11:abdcde012978

backup
author Peter Meerwald <p.meerwald@bct-electronic.com>
date Thu, 22 Sep 2011 15:19:18 +0200
parents 05f6ab0a17c0
children 655dc5c14169
line wrap: on
line diff
--- a/kf_bfly4.S	Wed Sep 21 15:20:58 2011 +0200
+++ b/kf_bfly4.S	Thu Sep 22 15:19:18 2011 +0200
@@ -20,69 +20,72 @@
 	mov	r4, r3, asl #1
 	add	r6, r4, r3
 	add	ip, r2, #264
-	ldr	r2, [r2, #4]
-	cmp	r2, #0
-	beq	.forward
+
 	mov	r8, r1, asl #4
 	mov	r7, r1, asl #5
 	add	r1, r1, r1, asl #1
-	mov	r1, r1, asl #4
-	add	r2, r0, #0
+	ldr	r2, [r2, #4]
 	add	r5, r0, r3, asl #4
 	add	r4, r0, r4, asl #4
+	mov	r1, r1, asl #4
+	mov	sl, ip
+	cmp	r2, #0
+	beq	.forward
+	add	r2, r0, #0
 	add	r0, r0, r6, asl #4
-	mov	sl, ip
 	mov	r6, ip
 .inverse_loop:
     // C_MUL(scratch[0], Fout[m], *tw1);
     vld1.32     {d18,d19}, [r5]
     vld1.32     {d16,d17}, [ip]
 	vmul.f32	d20, d18, d16
+	vmul.f32	d21, d16, d19
+        // load Fout[m2], *tw2
+        vld1.32     {d14,d15}, [r4]
+        vld1.32     {d12,d13}, [r6]
 	vmls.f32	d20, d19, d17
-	vmul.f32	d21, d16, d19
 	vmla.f32	d21, d18, d17
 	
 	// C_MUL(scratch[3], Fout[m2], *tw2);
-    vld1.32     {d18,d19}, [r4]
-    vld1.32     {d16,d17}, [r6]
-	vmul.f32	d22, d18, d16
-	vmls.f32	d22, d19, d17
-	vmul.f32	d23, d16, d19
-	vmla.f32	d23, d18, d17
+	vmul.f32	d22, d14, d12
+	vmul.f32	d23, d12, d15
+        // load Fout[m3], *tw3
+        vld1.32     {d18,d19}, [r0]
+        vld1.32     {d16,d17}, [sl]
+	vmls.f32	d22, d15, d13
+	vmla.f32	d23, d14, d13
 
     // C_MUL(scratch[2], Fout[m3], *tw3);
-    vld1.32     {d18,d19}, [r0]
-    vld1.32     {d16,d17}, [sl]
 	vmul.f32	d24, d18, d16
+	vmul.f32	d25, d16, d19
+	
+    // C_SUB(scratch[1], *Fout, scratch[3]);
+    vld1.32     {d14,d15}, [r2]
+    vsub.f32   q13, q7, q11
+
 	vmls.f32	d24, d19, d17
-	vmul.f32	d25, d16, d19
 	vmla.f32	d25, d18, d17
 
-    // C_SUB(scratch[1], *Fout, scratch[3]);
-    vld1.32     {d16,d17}, [r2]
-    vsubq.f32   q13, q8, q11
-
     // C_ADDTO(*Fout, scratch[3]);
-    vaddq.f32   q8, q8, q11
+    vadd.f32   q7, q7, q11
+        // C_ADD(scratch[3], scratch[0], scratch[2]);
+        vadd.f32   q11, q10, q12
 	vst1.32     {d16,d17}, [r2]
 	
-    // C_ADD(scratch[3], scratch[0], scratch[2]);
-    vaddq.f32   q11, q10, q12
-	
     // C_SUB(Fout[m2], *Fout, scratch[3]);
-    vsubq.f32   q9, q8, q11
+    vsub.f32   q9, q7, q11
     vst1.32     {d18,d19}, [r4]!
     
     // C_ADDTO(*Fout, scratch[3]);
-    vaddq.f32   q8, q8, q11
-    vst1.32     {d16,d17}, [r2]!
+    vadd.f32   q7, q7, q11
+    vst1.32     {d14,d15}, [r2]!
 
 	add	ip, ip, r8
 	add	r6, r6, r7
 	add	sl, sl, r1
 
     // C_SUB(scratch[3], scratch[0], scratch[2]);
-    vsubq.f32   q11, q10, q12
+    vsub.f32   q11, q10, q12
 
     // Fout[m].r = scratch[1].r - scratch[3].i;
     // Fout[m].i = scratch[1].i + scratch[3].r;
@@ -100,66 +103,61 @@
 	bne	.inverse_loop
 	b	.done
 .forward:
-	mov	r8, r1, asl #4
-	mov	r7, r1, asl #5
-	add	r1, r1, r1, asl #1
-	mov	r1, r1, asl #4
 	add	r2, r0, #0
-	add	r5, r0, r3, asl #4
-	add	r4, r0, r4, asl #4
 	add	r0, r0, r6, asl #4
-	mov	sl, ip
 	mov	r6, ip
 .forward_loop:
     // C_MUL(scratch[0], Fout[m], *tw1);
     vld1.32     {d18,d19}, [r5]
     vld1.32     {d16,d17}, [ip]
 	vmul.f32	d20, d18, d16
+	vmul.f32	d21, d16, d19
+        // load Fout[m2], *tw2
+        vld1.32     {d14,d15}, [r4]
+        vld1.32     {d12,d13}, [r6]
 	vmls.f32	d20, d19, d17
-	vmul.f32	d21, d16, d19
 	vmla.f32	d21, d18, d17
 	
 	// C_MUL(scratch[3], Fout[m2], *tw2);
-    vld1.32     {d18,d19}, [r4]
-    vld1.32     {d16,d17}, [r6]
-	vmul.f32	d22, d18, d16
-	vmls.f32	d22, d19, d17
-	vmul.f32	d23, d16, d19
-	vmla.f32	d23, d18, d17
+	vmul.f32	d22, d14, d12
+	vmul.f32	d23, d12, d15
+        // load Fout[m3], *tw3
+        vld1.32     {d18,d19}, [r0]
+        vld1.32     {d16,d17}, [sl]
+	vmls.f32	d22, d15, d13
+	vmla.f32	d23, d14, d13
 
     // C_MUL(scratch[2], Fout[m3], *tw3);
-    vld1.32     {d18,d19}, [r0]
-    vld1.32     {d16,d17}, [sl]
 	vmul.f32	d24, d18, d16
+	vmul.f32	d25, d16, d19
+	
+    // C_SUB(scratch[1], *Fout, scratch[3]);
+    vld1.32     {d14,d15}, [r2]
+    vsub.f32   q13, q7, q11
+
 	vmls.f32	d24, d19, d17
-	vmul.f32	d25, d16, d19
 	vmla.f32	d25, d18, d17
 
-    // C_SUB(scratch[1], *Fout, scratch[3]);
-    vld1.32     {d16,d17}, [r2]
-    vsubq.f32   q13, q8, q11
-
     // C_ADDTO(*Fout, scratch[3]);
-    vaddq.f32   q8, q8, q11
+    vadd.f32   q7, q7, q11
+        // C_ADD(scratch[3], scratch[0], scratch[2]);
+        vadd.f32   q11, q10, q12
 	vst1.32     {d16,d17}, [r2]
 	
-    // C_ADD(scratch[3], scratch[0], scratch[2]);
-    vaddq.f32   q11, q10, q12
-	
     // C_SUB(Fout[m2], *Fout, scratch[3]);
-    vsubq.f32   q9, q8, q11
+    vsub.f32   q9, q7, q11
     vst1.32     {d18,d19}, [r4]!
     
     // C_ADDTO(*Fout, scratch[3]);
-    vaddq.f32   q8, q8, q11
-    vst1.32     {d16,d17}, [r2]!
+    vadd.f32   q7, q7, q11
+    vst1.32     {d14,d15}, [r2]!
 
 	add	ip, ip, r8
 	add	r6, r6, r7
 	add	sl, sl, r1
 
     // C_SUB(scratch[3], scratch[0], scratch[2]);
-    vsubq.f32   q11, q10, q12
+    vsub.f32   q11, q10, q12
 
     // Fout[m].r = scratch[1].r - scratch[3].i;
     // Fout[m].i = scratch[1].i + scratch[3].r;

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.