[xiph-commits] r8894 - trunk/speex/libspeex
jm at motherfish-iii.xiph.org
jm at motherfish-iii.xiph.org
Wed Feb 9 01:13:38 PST 2005
Author: jm
Date: 2005-02-09 01:13:37 -0800 (Wed, 09 Feb 2005)
New Revision: 8894
Modified:
trunk/speex/libspeex/filters_arm4.h
Log:
Unrolled version of filter_mem2 and iir_mem2
Modified: trunk/speex/libspeex/filters_arm4.h
===================================================================
--- trunk/speex/libspeex/filters_arm4.h 2005-02-09 09:13:08 UTC (rev 8893)
+++ trunk/speex/libspeex/filters_arm4.h 2005-02-09 09:13:37 UTC (rev 8894)
@@ -58,7 +58,7 @@
: "=r" (dead1), "=r" (max_val), "=r" (dead3), "=r" (dead4),
"=r" (dead5), "=r" (dead6)
: "0" (x), "2" (len)
- : "cc", "memory");
+ : "cc");
sig_shift=0;
while (max_val>max_scale)
@@ -108,6 +108,117 @@
__asm__ __volatile__ (
"\tldrsh %6, [%1], #2\n"
"\tsmull %8, %9, %4, %6\n"
+#ifdef SHORTCUTS
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+ "\tldrsh %6, [%2], #2\n"
+ "\tldr %10, [%0, #4]\n"
+ "\tmov %8, %8, lsr #15\n"
+ "\tsmull %7, %11, %5, %6\n"
+ "\tldrsh %6, [%1], #2\n"
+ "\tadd %8, %8, %9, lsl #17\n"
+ "\tadd %10, %10, %8\n"
+ "\tsmull %8, %9, %4, %6\n"
+ "\tadd %10, %10, %7, lsr #15\n"
+ "\tadd %10, %10, %11, lsl #17\n"
+ "\tstr %10, [%0], #4 \n"
+
+
+#else
".filterloop%=: \n"
"\tldrsh %6, [%2], #2\n"
"\tldr %10, [%0, #4]\n"
@@ -122,7 +233,7 @@
"\tadd %10, %10, %11, lsl #17\n"
"\tstr %10, [%0], #4 \n"
"\t bne .filterloop%=\n"
-
+#endif
"\tmov %8, %8, lsr #15\n"
"\tadd %10, %8, %9, lsl #17\n"
"\tldrsh %6, [%2], #2\n"
@@ -156,6 +267,87 @@
"\tldrsh %4, [%1], #2\n"
"\tsmull %5, %6, %3, %4\n"
+#if SHORTCUTS
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %7, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %7, %7, %8\n"
+ "\tstr %7, [%0], #4 \n"
+
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %9, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %9, %9, %8\n"
+ "\tstr %9, [%0], #4 \n"
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %7, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %7, %7, %8\n"
+ "\tstr %7, [%0], #4 \n"
+
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %9, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %9, %9, %8\n"
+ "\tstr %9, [%0], #4 \n"
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %7, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %7, %7, %8\n"
+ "\tstr %7, [%0], #4 \n"
+
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %9, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %9, %9, %8\n"
+ "\tstr %9, [%0], #4 \n"
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %7, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %7, %7, %8\n"
+ "\tstr %7, [%0], #4 \n"
+
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %9, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %9, %9, %8\n"
+ "\tstr %9, [%0], #4 \n"
+
+ "\tldrsh %4, [%1], #2\n"
+ "\tmov %5, %5, lsr #15\n"
+ "\tldr %7, [%0, #4]\n"
+ "\tadd %8, %5, %6, lsl #17\n"
+ "\tsmull %5, %6, %3, %4\n"
+ "\tadd %7, %7, %8\n"
+ "\tstr %7, [%0], #4 \n"
+
+
+
+#else
".iirloop%=: \n"
"\tldr %7, [%0, #4]\n"
@@ -167,7 +359,8 @@
"\tstr %7, [%0], #4 \n"
"\tsubs %2, %2, #1\n"
"\t bne .iirloop%=\n"
-
+
+#endif
"\tmov %5, %5, lsr #15\n"
"\tadd %7, %5, %6, lsl #17\n"
"\tstr %7, [%0], #4 \n"
More information about the commits
mailing list