| #include "edge-impulse-sdk/dsp/config.hpp" |
| #if EIDSP_LOAD_CMSIS_DSP_SOURCES |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/basic_math_functions.h" |
|
|
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) |
|
|
| #include "edge-impulse-sdk/CMSIS/DSP/Include/arm_helium_utils.h" |
|
|
| void arm_clip_f32(const float32_t * pSrc, |
| float32_t * pDst, |
| float32_t low, |
| float32_t high, |
| uint32_t numSamples) |
| { |
| uint32_t blkCnt; |
| f32x4_t curVec0, curVec1; |
| f32x4_t vecLow, vecHigh; |
|
|
| vecLow = vdupq_n_f32(low); |
| vecHigh = vdupq_n_f32(high); |
|
|
| curVec0 = vld1q(pSrc); |
| pSrc += 4; |
| |
| |
| |
| |
| |
| blkCnt = numSamples >> 3; |
| while (blkCnt--) |
| { |
| curVec0 = vmaxnmq(curVec0, vecLow); |
| curVec1 = vld1q(pSrc); |
| pSrc += 4; |
| curVec0 = vminnmq(curVec0, vecHigh); |
| vst1q(pDst, curVec0); |
| pDst += 4; |
| curVec1 = vmaxnmq(curVec1, vecLow); |
| curVec0 = vld1q(pSrc); |
| pSrc += 4; |
| curVec1 = vminnmq(curVec1, vecHigh); |
| vst1q(pDst, curVec1); |
| pDst += 4; |
| } |
| |
| |
| |
| blkCnt = numSamples - ((numSamples >> 3) << 3); |
| if (blkCnt >= 4) |
| { |
| curVec0 = vmaxnmq(curVec0, vecLow); |
| curVec0 = vminnmq(curVec0, vecHigh); |
| vst1q(pDst, curVec0); |
| pDst += 4; |
| curVec0 = vld1q(pSrc); |
| pSrc += 4; |
| } |
|
|
| if (blkCnt > 0) |
| { |
| mve_pred16_t p0 = vctp32q(blkCnt & 3); |
| curVec0 = vmaxnmq(curVec0, vecLow); |
| curVec0 = vminnmq(curVec0, vecHigh); |
| vstrwq_p(pDst, curVec0, p0); |
| } |
| } |
|
|
| #else |
| void arm_clip_f32(const float32_t * pSrc, |
| float32_t * pDst, |
| float32_t low, |
| float32_t high, |
| uint32_t numSamples) |
| { |
| uint32_t i; |
| for (i = 0; i < numSamples; i++) |
| { |
| if (pSrc[i] > high) |
| pDst[i] = high; |
| else if (pSrc[i] < low) |
| pDst[i] = low; |
| else |
| pDst[i] = pSrc[i]; |
| } |
| } |
| #endif |
|
|
| |
| |
| |
|
|
| #endif |
|
|