79 #ifndef ARM_MATH_CM0_FAMILY 83 q31_t fcurr, fnext, gcurr = 0, gnext;
87 uint32_t blkCnt, tapCnt;
88 q15_t *px1, *px2, *pk, *pv;
94 #ifdef UNALIGNED_SUPPORT_DISABLE 125 fnext = fcurr - (((
q31_t) gcurr * (*pk)) >> 15);
126 fnext = __SSAT(fnext, 16);
128 gnext = (((
q31_t) fnext * (*pk++)) >> 15) + gcurr;
129 gnext = __SSAT(gnext, 16);
131 *px2++ = (
q15_t) gnext;
133 acc += (
q31_t) ((gnext * (*pv++)));
140 tapCnt = (numStages - 1u) >> 2;
150 fnext = fcurr - (((
q31_t) gcurr * (*pk)) >> 15);
151 fnext = __SSAT(fnext, 16);
153 gnext = (((
q31_t) fnext * (*pk++)) >> 15) + gcurr;
154 gnext1 = (
q15_t) __SSAT(gnext, 16);
156 *px2++ = (
q15_t) gnext1;
164 fcurr = fnext - (((
q31_t) gcurr * (*pk)) >> 15);
165 fcurr = __SSAT(fcurr, 16);
167 gnext = (((
q31_t) fcurr * (*pk++)) >> 15) + gcurr;
168 gnext2 = (
q15_t) __SSAT(gnext, 16);
170 *px2++ = (
q15_t) gnext2;
173 #ifndef UNALIGNED_SUPPORT_DISABLE 182 #ifndef ARM_MATH_BIG_ENDIAN 184 v = __PKHBT(v1, v2, 16);
188 v = __PKHBT(v2, v1, 16);
197 #ifndef ARM_MATH_BIG_ENDIAN 199 gnext = __PKHBT(gnext1, gnext2, 16);
203 gnext = __PKHBT(gnext2, gnext1, 16);
211 acc = __SMLALD(gnext, v, acc);
219 fnext = fcurr - (((
q31_t) gcurr * (*pk)) >> 15);
220 fnext = __SSAT(fnext, 16);
222 gnext = (((
q31_t) fnext * (*pk++)) >> 15) + gcurr;
223 gnext1 = (
q15_t) __SSAT(gnext, 16);
225 *px2++ = (
q15_t) gnext1;
233 fcurr = fnext - (((
q31_t) gcurr * (*pk)) >> 15);
234 fcurr = __SSAT(fcurr, 16);
236 gnext = (((
q31_t) fcurr * (*pk++)) >> 15) + gcurr;
237 gnext2 = (
q15_t) __SSAT(gnext, 16);
239 *px2++ = (
q15_t) gnext2;
242 #ifndef UNALIGNED_SUPPORT_DISABLE 251 #ifndef ARM_MATH_BIG_ENDIAN 253 v = __PKHBT(v1, v2, 16);
257 v = __PKHBT(v2, v1, 16);
265 #ifndef ARM_MATH_BIG_ENDIAN 267 gnext = __PKHBT(gnext1, gnext2, 16);
271 gnext = __PKHBT(gnext2, gnext1, 16);
279 acc = __SMLALD(gnext, v, acc);
288 tapCnt = (numStages - 1u) % 0x4u;
294 fnext = fcurr - (((
q31_t) gcurr * (*pk)) >> 15);
295 fnext = __SSAT(fnext, 16);
296 gnext = (((
q31_t) fnext * (*pk++)) >> 15) + gcurr;
297 gnext = __SSAT(gnext, 16);
300 *px2++ = (
q15_t) gnext;
309 out = (
q15_t) __SSAT(acc >> 15, 16);
310 *px2++ = (
q15_t) fnext;
316 pState = pState + 1u;
324 pStateCurnt = &S->
pState[0];
325 pState = &S->
pState[blockSize];
327 stgCnt = (numStages >> 2u);
332 #ifndef UNALIGNED_SUPPORT_DISABLE 339 *pStateCurnt++ = *pState++;
340 *pStateCurnt++ = *pState++;
341 *pStateCurnt++ = *pState++;
342 *pStateCurnt++ = *pState++;
352 stgCnt = (numStages) % 0x4u;
357 *pStateCurnt++ = *pState++;
367 q31_t fcurr, fnext = 0, gcurr = 0, gnext;
370 uint32_t blkCnt, tapCnt;
371 q15_t *px1, *px2, *pk, *pv;
407 fnext = fcurr - ((gcurr * (*pk)) >> 15);
408 fnext = __SSAT(fnext, 16);
410 gnext = ((fnext * (*pk++)) >> 15) + gcurr;
411 gnext = __SSAT(gnext, 16);
414 acc += (
q31_t) ((gnext * (*pv++)));
416 *px2++ = (
q15_t) gnext;
424 acc += (
q31_t) ((fnext * (*pv++)));
426 out = (
q15_t) __SSAT(acc >> 15, 16);
427 *px2++ = (
q15_t) fnext;
433 pState = pState + 1u;
441 pStateCurnt = &S->
pState[0];
442 pState = &S->
pState[blockSize];
449 *pStateCurnt++ = *pState++;
void arm_iir_lattice_q15(const arm_iir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 IIR lattice filter.
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.
Instance structure for the Q15 IIR lattice filter.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
int32_t q31_t
32-bit fractional data type in 1.31 format.