CMSIS-DSP: Improved Helium implementation of fir q7.
while (blkCnt > 0); \
}
+
+static void arm_fir_q7_49_64_mve(const arm_fir_instance_q7 * S,
+ const q7_t * __restrict pSrc,
+ q7_t * __restrict pDst, uint32_t blockSize)
+{
+ #define NBTAPS 64
+ FIR_Q7_MAIN_CORE();
+ #undef NBTAPS
+}
+
+
+void arm_fir_q7_33_48_mve(const arm_fir_instance_q7 * S,
+ const q7_t * __restrict pSrc,
+ q7_t * __restrict pDst, uint32_t blockSize)
+{
+ #define NBTAPS 48
+ FIR_Q7_MAIN_CORE();
+ #undef NBTAPS
+}
+
static void arm_fir_q7_17_32_mve(const arm_fir_instance_q7 * S,
const q7_t * __restrict pSrc,
q7_t * __restrict pDst, uint32_t blockSize)
@@ -196,6 +216,22 @@ void arm_fir_q7(
arm_fir_q7_17_32_mve(S, pSrc, pDst, blockSize);
return;
}
+ else if (numTaps <= 48)
+ {
+ /*
+ * [33 to 48 taps] specialized routine
+ */
+ arm_fir_q7_33_48_mve(S, pSrc, pDst, blockSize);
+ return;
+ }
+ else if (numTaps <= 64)
+ {
+ /*
+ * [49 to 64 taps] specialized routine
+ */
+ arm_fir_q7_49_64_mve(S, pSrc, pDst, blockSize);
+ return;
+ }
/*
* pState points to state array which contains previous frame (numTaps - 1) samples
