summaryrefslogtreecommitdiff
path: root/celt/fixed_generic.h
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2014-01-21 11:07:57 -0500
committerJean-Marc Valin <jmvalin@jmvalin.ca>2014-01-21 11:07:57 -0500
commit17b197837fb5bf6361e4cae7fbe0d0163e74b8a8 (patch)
tree3f253af8b9e9cb8d872db33a8ae58eb034d7fec1 /celt/fixed_generic.h
parent29354ff6e05c9ead9454981a7404a9b9ea203d2e (diff)
downloadopus-17b197837fb5bf6361e4cae7fbe0d0163e74b8a8.tar.gz
Speed up the comb filter on ARM by using MAC16_32_Q16()
Diffstat (limited to 'celt/fixed_generic.h')
-rw-r--r--celt/fixed_generic.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/celt/fixed_generic.h b/celt/fixed_generic.h
index ecf018a2..8d13fde7 100644
--- a/celt/fixed_generic.h
+++ b/celt/fixed_generic.h
@@ -113,7 +113,11 @@
/** 16x32 multiply, followed by a 15-bit shift right and 32-bit add.
b must fit in 31 bits.
Result fits in 32 bits. */
-#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
+#define MAC16_32_Q15(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
+
+/** 16x32 multiplication, followed by a 16-bit shift right and 32-bit add.
+ Results fits in 32 bits */
+#define MAC16_32_Q16(c,a,b) ADD32((c),ADD32(MULT16_16((a),SHR((b),16)), SHR(MULT16_16SU((a),((b)&0x0000ffff)),16)))
#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
#define MULT16_16_Q11(a,b) (SHR(MULT16_16((a),(b)),11))