| Index: celt/fixed_generic.h
|
| diff --git a/celt/fixed_generic.h b/celt/fixed_generic.h
|
| index ecf018a2443a200ecb55afd3445ac499afd75c80..ac67d37ce8cea2a9e6dcd7caa19321217bb3ffcc 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))
|
| @@ -131,4 +135,17 @@
|
| /** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */
|
| #define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b)))
|
|
|
| +#if defined(MIPSr1_ASM)
|
| +#include "mips/fixed_generic_mipsr1.h"
|
| +#endif
|
| +
|
| +static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
|
| +{
|
| + x = PSHR32(x, SIG_SHIFT);
|
| + x = MAX32(x, -32768);
|
| + x = MIN32(x, 32767);
|
| + return EXTRACT16(x);
|
| +}
|
| +#define SIG2WORD16(x) (SIG2WORD16_generic(x))
|
| +
|
| #endif
|
|
|