87 q31_t state_in, state_out;
89 int32_t shift = (int32_t) (15 - S->
postShift);
120 sample = blockSize >> 1u;
131 out = __SMUAD(b0, in);
133 acc = __SMLAD(b1, state_in, out);
135 acc = __SMLAD(a1, state_out, acc);
138 out = __SSAT((acc >> shift), 16);
149 #ifndef ARM_MATH_BIG_ENDIAN 151 state_in = __PKHBT(in, state_in, 16);
152 state_out = __PKHBT(out, state_out, 16);
156 state_in = __PKHBT(state_in >> 16, (in >> 16), 16);
157 state_out = __PKHBT(state_out >> 16, (out), 16);
162 out = __SMUADX(b0, in);
164 acc = __SMLAD(b1, state_in, out);
166 acc = __SMLAD(a1, state_out, acc);
169 out = __SSAT((acc >> shift), 16);
174 #ifndef ARM_MATH_BIG_ENDIAN 176 *
__SIMD32(pOut)++ = __PKHBT(state_out, out, 16);
180 *
__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16);
193 #ifndef ARM_MATH_BIG_ENDIAN 195 state_in = __PKHBT(in >> 16, state_in, 16);
196 state_out = __PKHBT(out, state_out, 16);
200 state_in = __PKHBT(state_in >> 16, in, 16);
201 state_out = __PKHBT(state_out >> 16, out, 16);
214 if((blockSize & 0x1u) != 0u)
221 #ifndef ARM_MATH_BIG_ENDIAN 223 out = __SMUAD(b0, in);
227 out = __SMUADX(b0, in);
232 acc = __SMLAD(b1, state_in, out);
234 acc = __SMLAD(a1, state_out, acc);
237 out = __SSAT((acc >> shift), 16);
240 *pOut++ = (
q15_t) out;
251 #ifndef ARM_MATH_BIG_ENDIAN 253 state_in = __PKHBT(in, state_in, 16);
254 state_out = __PKHBT(out, state_out, 16);
258 state_in = __PKHBT(state_in >> 16, in, 16);
259 state_out = __PKHBT(state_out >> 16, out, 16);
void arm_biquad_cascade_df1_fast_q15(const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-...
int16_t q15_t
16-bit fractional data type in 1.15 format.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
Instance structure for the Q15 Biquad cascade filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.