90 uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->
M;
98 pStateCurnt = S->
pState + (numTaps - 1u);
102 blkCnt = outBlockSize / 2;
103 blkCntN2 = outBlockSize - (2 * blkCnt);
112 *pStateCurnt++ = *pSrc++;
128 tapCnt = numTaps >> 2;
142 acc0 = (
q31_t) ((((
q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
143 acc1 = (
q31_t) ((((
q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
153 acc0 = (
q31_t) ((((
q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
154 acc1 = (
q31_t) ((((
q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
165 acc0 = (
q31_t) ((((
q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
166 acc1 = (
q31_t) ((((
q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
177 acc0 = (
q31_t) ((((
q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
178 acc1 = (
q31_t) ((((
q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
189 tapCnt = numTaps % 0x4u;
201 acc0 = (
q31_t) ((((
q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
202 acc1 = (
q31_t) ((((
q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
210 pState = pState + S->
M * 2;
213 *pDst++ = (
q31_t) (acc0 << 1);
214 *pDst++ = (
q31_t) (acc1 << 1);
227 *pStateCurnt++ = *pSrc++;
241 tapCnt = numTaps >> 2;
254 sum0 = (
q31_t) ((((
q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
263 sum0 = (
q31_t) ((((
q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
272 sum0 = (
q31_t) ((((
q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
281 sum0 = (
q31_t) ((((
q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
288 tapCnt = numTaps % 0x4u;
299 sum0 = (
q31_t) ((((
q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
307 pState = pState + S->
M;
310 *pDst++ = (
q31_t) (sum0 << 1);
323 i = (numTaps - 1u) >> 2u;
328 *pStateCurnt++ = *pState++;
329 *pStateCurnt++ = *pState++;
330 *pStateCurnt++ = *pState++;
331 *pStateCurnt++ = *pState++;
337 i = (numTaps - 1u) % 0x04u;
342 *pStateCurnt++ = *pState++;
int64_t q63_t
64-bit fractional data type in 1.63 format.
int32_t q31_t
32-bit fractional data type in 1.31 format.
Instance structure for the Q31 FIR decimator.
void arm_fir_decimate_fast_q31(arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.