83 #ifndef ARM_MATH_CM0_FAMILY 93 q31_t state_in, state_out;
96 int32_t lShift = (15 - (int32_t) S->
postShift);
99 uint32_t sample, stage = (uint32_t) S->
numStages;
100 int32_t uShift = (32 - lShift);
125 sample = blockSize >> 1u;
136 out = __SMUAD(b0, in);
139 acc = __SMLALD(b1, state_in, out);
141 acc = __SMLALD(a1, state_out, acc);
145 acc_l = acc & 0xffffffff;
148 acc_h = (acc >> 32) & 0xffffffff;
151 out = (uint32_t) acc_l >> lShift | acc_h << uShift;
153 out = __SSAT(out, 16);
164 #ifndef ARM_MATH_BIG_ENDIAN 166 state_in = __PKHBT(in, state_in, 16);
167 state_out = __PKHBT(out, state_out, 16);
171 state_in = __PKHBT(state_in >> 16, (in >> 16), 16);
172 state_out = __PKHBT(state_out >> 16, (out), 16);
177 out = __SMUADX(b0, in);
179 acc = __SMLALD(b1, state_in, out);
181 acc = __SMLALD(a1, state_out, acc);
185 acc_l = acc & 0xffffffff;
188 acc_h = (acc >> 32) & 0xffffffff;
191 out = (uint32_t) acc_l >> lShift | acc_h << uShift;
193 out = __SSAT(out, 16);
197 #ifndef ARM_MATH_BIG_ENDIAN 199 *
__SIMD32(pOut)++ = __PKHBT(state_out, out, 16);
203 *
__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16);
215 #ifndef ARM_MATH_BIG_ENDIAN 217 state_in = __PKHBT(in >> 16, state_in, 16);
218 state_out = __PKHBT(out, state_out, 16);
222 state_in = __PKHBT(state_in >> 16, in, 16);
223 state_out = __PKHBT(state_out >> 16, out, 16);
236 if((blockSize & 0x1u) != 0u)
243 #ifndef ARM_MATH_BIG_ENDIAN 245 out = __SMUAD(b0, in);
249 out = __SMUADX(b0, in);
254 acc = __SMLALD(b1, state_in, out);
256 acc = __SMLALD(a1, state_out, acc);
260 acc_l = acc & 0xffffffff;
263 acc_h = (acc >> 32) & 0xffffffff;
266 out = (uint32_t) acc_l >> lShift | acc_h << uShift;
268 out = __SSAT(out, 16);
271 *pOut++ = (
q15_t) out;
282 #ifndef ARM_MATH_BIG_ENDIAN 284 state_in = __PKHBT(in, state_in, 16);
285 state_out = __PKHBT(out, state_out, 16);
289 state_in = __PKHBT(state_in >> 16, in, 16);
290 state_out = __PKHBT(state_out >> 16, out, 16);
319 q15_t b0, b1, b2, a1, a2;
320 q15_t Xn1, Xn2, Yn1, Yn2;
323 int32_t shift = (15 - (int32_t) S->
postShift);
326 uint32_t sample, stage = (uint32_t) S->
numStages;
357 acc = (
q31_t) b0 *Xn;
360 acc += (
q31_t) b1 *Xn1;
362 acc += (
q31_t) b2 *Xn2;
364 acc += (
q31_t) a1 *Yn1;
366 acc += (
q31_t) a2 *Yn2;
369 acc = __SSAT((acc >> shift), 16);
383 *pOut++ = (
q15_t) acc;
int64_t q63_t
64-bit fractional data type in 1.63 format.
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.
void arm_biquad_cascade_df1_q15(const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 Biquad cascade filter.