|
69 | 69 |
|
70 | 70 |
|
71 | 71 | /* result fits in 16 bits */ |
72 | | -#define MULT16_16_16(a,b) ((((spx_word16_t)(a))*((spx_word16_t)(b)))) |
| 72 | +#define MULT16_16_16(a,b) (((spx_word16_t)(a))*((spx_word16_t)(b))) |
| 73 | +/* result fits in 32 bits */ |
| 74 | +#define MULT16_32_32(a,b) (((spx_word16_t)(a))*((spx_word32_t)(b))) |
73 | 75 |
|
74 | 76 | /* (spx_word32_t)(spx_word16_t) gives TI compiler a hint that it's 16x16->32 multiply */ |
75 | 77 | #define MULT16_16(a,b) (((spx_word32_t)(spx_word16_t)(a))*((spx_word32_t)(spx_word16_t)(b))) |
76 | 78 |
|
77 | 79 | #define MAC16_16(c,a,b) (ADD32((c),MULT16_16((a),(b)))) |
78 | 80 |
|
79 | | -#define MULT16_32_P15(a,b) ADD32((a)*SHR((b),15), PSHR(MULT16_16((a),((b)&0x00007fff)),15)) |
80 | | -#define MULT16_32_Q15(a,b) ADD32((a)*SHR((b),15), SHR(MULT16_16((a),((b)&0x00007fff)),15)) |
81 | | -#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32((a)*SHR((b),15), SHR(MULT16_16((a),((b)&0x00007fff)),15))) |
| 81 | +#define MULT16_32_P15(a,b) ADD32(MULT16_32_32(a,SHR((b),15)), PSHR(MULT16_16((a),((b)&0x00007fff)),15)) |
| 82 | +#define MULT16_32_Q15(a,b) ADD32(MULT16_32_32(a,SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)) |
| 83 | +#define MAC16_32_Q15(c,a,b) ADD32(c,MULT16_32_Q15(a,b)) |
82 | 84 |
|
83 | 85 |
|
84 | 86 | #define MAC16_16_Q11(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),11))) |
|
0 commit comments