summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Midgley <bmidgley@xmission.com>2008-01-30 20:39:33 +0000
committerBrad Midgley <bmidgley@xmission.com>2008-01-30 20:39:33 +0000
commite51de7f6fb5385c9df62842ce9cf92f9fd33f040 (patch)
tree6fc095a64f41f1f1934789abb027bb2707ef3e49
parent82540ead6bfe7d0398256b48500e6fbecb0e28e1 (diff)
arm assembly version of MULA
-rw-r--r--sbc/sbc_math.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sbc/sbc_math.h b/sbc/sbc_math.h
index 9aa8c366..8db67ca8 100644
--- a/sbc/sbc_math.h
+++ b/sbc/sbc_math.h
@@ -63,4 +63,14 @@ typedef long long sbc_extended_t;
#define SBC_FIXED_0(val) { val = 0; }
#define MUL(a, b) ((sbc_extended_t)(a) * (b))
+#ifdef __arm__
+#define MULA(a, b, res) ({ \
+ long long tmp = res; \
+ __asm__( \
+ "smlal %Q0, %R0, %2, %3" \
+ : "=&r" (tmp) \
+ : "0" (tmp), "r" (a), "r" (b)); \
+ tmp; })
+#else
#define MULA(a, b, res) ((sbc_extended_t)(a) * (b) + (res))
+#endif