83 #ifndef ARM_MATH_CM0_FAMILY 91 q63_t acc0, acc1, acc2;
93 uint32_t i, tapCnt, blkCnt, tapCntN3;
97 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
107 blkCnt = blockSize / 3;
108 blockSize = blockSize - (3 * blkCnt);
110 tapCnt = numTaps / 3;
111 tapCntN3 = numTaps - (3 * tapCnt);
118 *pStateCurnt++ = *pSrc++;
119 *pStateCurnt++ = *pSrc++;
120 *pStateCurnt++ = *pSrc++;
150 acc0 += ((
q63_t) x0 * c0);
151 acc1 += ((
q63_t) x1 * c0);
152 acc2 += ((
q63_t) x2 * c0);
159 acc0 += ((
q63_t) x1 * c0);
160 acc1 += ((
q63_t) x2 * c0);
161 acc2 += ((
q63_t) x0 * c0);
171 acc0 += ((
q63_t) x2 * c0);
172 acc1 += ((
q63_t) x0 * c0);
173 acc2 += ((
q63_t) x1 * c0);
192 acc0 += ((
q63_t) x0 * c0);
193 acc1 += ((
q63_t) x1 * c0);
194 acc2 += ((
q63_t) x2 * c0);
209 *pDst++ = (
q31_t) (acc0 >> 31u);
210 *pDst++ = (
q31_t) (acc1 >> 31u);
211 *pDst++ = (
q31_t) (acc2 >> 31u);
220 while(blockSize > 0u)
223 *pStateCurnt++ = *pSrc++;
239 acc0 += (
q63_t) * (px++) * (*(pb++));
245 *pDst++ = (
q31_t) (acc0 >> 31u);
261 tapCnt = (numTaps - 1u) >> 2u;
266 *pStateCurnt++ = *pState++;
267 *pStateCurnt++ = *pState++;
268 *pStateCurnt++ = *pState++;
269 *pStateCurnt++ = *pState++;
276 tapCnt = (numTaps - 1u) % 0x4u;
281 *pStateCurnt++ = *pState++;
295 uint32_t i, tapCnt, blkCnt;
299 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
307 *pStateCurnt++ = *pSrc++;
324 acc += (
q63_t) * px++ * *pb++;
330 *pDst++ = (
q31_t) (acc >> 31u);
347 tapCnt = numTaps - 1u;
352 *pStateCurnt++ = *pState++;
void arm_fir_q31(const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR filter.
int64_t q63_t
64-bit fractional data type in 1.63 format.
Instance structure for the Q31 FIR filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.