89 uint32_t tapCnt, blkCnt;
95 int32_t lShift = (15 - (int32_t) S->
postShift);
96 int32_t uShift = (32 - lShift);
99 #ifndef ARM_MATH_CM0_FAMILY 106 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
114 *pStateCurnt++ = *pSrc++;
126 tapCnt = numTaps >> 2u;
132 #ifndef UNALIGNED_SUPPORT_DISABLE 152 tapCnt = numTaps % 0x4u;
164 acc_l = acc & 0xffffffff;
167 acc_h = (acc >> 32) & 0xffffffff;
170 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
173 acc = __SSAT(acc, 16);
176 *pOut++ = (
q15_t) acc;
179 e = *pRef++ - (
q15_t) acc;
194 tapCnt = numTaps >> 2u;
199 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
200 *pb++ = (
q15_t) __SSAT((coef), 16);
201 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
202 *pb++ = (
q15_t) __SSAT((coef), 16);
203 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
204 *pb++ = (
q15_t) __SSAT((coef), 16);
205 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
206 *pb++ = (
q15_t) __SSAT((coef), 16);
213 tapCnt = numTaps % 0x4u;
218 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
219 *pb++ = (
q15_t) __SSAT((coef), 16);
238 tapCnt = (numTaps - 1u) >> 2;
243 #ifndef UNALIGNED_SUPPORT_DISABLE 248 *pStateCurnt++ = *pState++;
249 *pStateCurnt++ = *pState++;
250 *pStateCurnt++ = *pState++;
251 *pStateCurnt++ = *pState++;
259 tapCnt = (numTaps - 1u) % 0x4u;
264 *pStateCurnt++ = *pState++;
276 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
284 *pStateCurnt++ = *pSrc++;
308 acc_l = acc & 0xffffffff;
311 acc_h = (acc >> 32) & 0xffffffff;
314 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
317 acc = __SSAT(acc, 16);
320 *pOut++ = (
q15_t) acc;
323 e = *pRef++ - (
q15_t) acc;
343 coef = (
q31_t) * pb + (((
q31_t) alpha * (*px++)) >> 15);
344 *pb++ = (
q15_t) __SSAT((coef), 16);
363 tapCnt = (numTaps - 1u);
368 *pStateCurnt++ = *pState++;
void arm_lms_q15(const arm_lms_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 LMS 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.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
Instance structure for the Q15 LMS filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.