diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-21 11:07:57 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-21 11:07:57 -0500 |
commit | 17b197837fb5bf6361e4cae7fbe0d0163e74b8a8 (patch) | |
tree | 3f253af8b9e9cb8d872db33a8ae58eb034d7fec1 /celt/fixed_generic.h | |
parent | 29354ff6e05c9ead9454981a7404a9b9ea203d2e (diff) | |
download | opus-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.h | 6 |
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)) |