From 05a6e1afb3b0111e8fafcb8ca2d1ca8674390c11 Mon Sep 17 00:00:00 2001 From: Brad Midgley Date: Mon, 28 Jan 2008 17:32:36 +0000 Subject: arm-assembly from cidoca for MULA --- sbc/sbc_math.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'sbc') diff --git a/sbc/sbc_math.h b/sbc/sbc_math.h index 625d4dd0..68b0f197 100644 --- a/sbc/sbc_math.h +++ b/sbc/sbc_math.h @@ -65,5 +65,13 @@ typedef long long sbc_extended_t; #define ADD(dst, src) { dst += src; } #define SUB(dst, src) { dst -= src; } #define MUL(dst, a, b) { dst = (sbc_extended_t) (a) * (b); } -#define MULA(dst, a, b) { dst += (sbc_extended_t) (a) * (b); } #define DIV2(dst, src) { dst = ASR(src, 1); } + +#ifdef __arm__ +#define MULA(res, a, b) __asm__( \ + "smlal %Q0, %R0, %2, %3" \ + : "=&r" (res) \ + : "0" (res), "r" (a), "r" (b)); +#else +#define MULA(dst, a, b) { dst += (sbc_extended_t) (a) * (b); } +#endif -- cgit