|
|
|
|
@ -41,7 +41,6 @@ static void _arm_radix4_butterfly_q15_mve(
|
|
|
|
|
q15x8_t vecTmp0, vecTmp1;
|
|
|
|
|
q15x8_t vecSum0, vecDiff0, vecSum1, vecDiff1;
|
|
|
|
|
q15x8_t vecA, vecB, vecC, vecD;
|
|
|
|
|
q15x8_t vecW;
|
|
|
|
|
uint32_t blkCnt;
|
|
|
|
|
uint32_t n1, n2;
|
|
|
|
|
uint32_t stage = 0;
|
|
|
|
|
@ -60,8 +59,6 @@ static void _arm_radix4_butterfly_q15_mve(
|
|
|
|
|
n2 >>= 2u;
|
|
|
|
|
|
|
|
|
|
for (int k = fftLen / 4u; k > 1; k >>= 2u)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < iter; i++)
|
|
|
|
|
{
|
|
|
|
|
q15_t const *p_rearranged_twiddle_tab_stride2 =
|
|
|
|
|
&S->rearranged_twiddle_stride2[
|
|
|
|
|
@ -71,15 +68,18 @@ static void _arm_radix4_butterfly_q15_mve(
|
|
|
|
|
q15_t const *p_rearranged_twiddle_tab_stride1 =
|
|
|
|
|
&S->rearranged_twiddle_stride1[
|
|
|
|
|
S->rearranged_twiddle_tab_stride1_arr[stage]];
|
|
|
|
|
q15_t const *pW1, *pW2, *pW3;
|
|
|
|
|
q15_t *inA = pSrc + CMPLX_DIM * i * n1;
|
|
|
|
|
|
|
|
|
|
q15_t * pBase = pSrc;
|
|
|
|
|
for (int i = 0; i < iter; i++)
|
|
|
|
|
{
|
|
|
|
|
q15_t *inA = pBase;
|
|
|
|
|
q15_t *inB = inA + n2 * CMPLX_DIM;
|
|
|
|
|
q15_t *inC = inB + n2 * CMPLX_DIM;
|
|
|
|
|
q15_t *inD = inC + n2 * CMPLX_DIM;
|
|
|
|
|
|
|
|
|
|
pW1 = p_rearranged_twiddle_tab_stride1;
|
|
|
|
|
pW2 = p_rearranged_twiddle_tab_stride2;
|
|
|
|
|
pW3 = p_rearranged_twiddle_tab_stride3;
|
|
|
|
|
q15_t const *pW1 = p_rearranged_twiddle_tab_stride1;
|
|
|
|
|
q15_t const *pW2 = p_rearranged_twiddle_tab_stride2;
|
|
|
|
|
q15_t const *pW3 = p_rearranged_twiddle_tab_stride3;
|
|
|
|
|
q15x8_t vecW;
|
|
|
|
|
|
|
|
|
|
blkCnt = n2 / 4;
|
|
|
|
|
/*
|
|
|
|
|
@ -147,6 +147,7 @@ static void _arm_radix4_butterfly_q15_mve(
|
|
|
|
|
|
|
|
|
|
blkCnt--;
|
|
|
|
|
}
|
|
|
|
|
pBase += CMPLX_DIM * n1;
|
|
|
|
|
}
|
|
|
|
|
n1 = n2;
|
|
|
|
|
n2 >>= 2u;
|
|
|
|
|
@ -276,7 +277,6 @@ static void _arm_radix4_butterfly_inverse_q15_mve(const arm_cfft_instance_q15 *S
|
|
|
|
|
q15x8_t vecTmp0, vecTmp1;
|
|
|
|
|
q15x8_t vecSum0, vecDiff0, vecSum1, vecDiff1;
|
|
|
|
|
q15x8_t vecA, vecB, vecC, vecD;
|
|
|
|
|
q15x8_t vecW;
|
|
|
|
|
uint32_t blkCnt;
|
|
|
|
|
uint32_t n1, n2;
|
|
|
|
|
uint32_t stage = 0;
|
|
|
|
|
@ -296,8 +296,6 @@ static void _arm_radix4_butterfly_inverse_q15_mve(const arm_cfft_instance_q15 *S
|
|
|
|
|
n2 >>= 2u;
|
|
|
|
|
|
|
|
|
|
for (int k = fftLen / 4u; k > 1; k >>= 2u)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < iter; i++)
|
|
|
|
|
{
|
|
|
|
|
q15_t const *p_rearranged_twiddle_tab_stride2 =
|
|
|
|
|
&S->rearranged_twiddle_stride2[
|
|
|
|
|
@ -307,15 +305,19 @@ static void _arm_radix4_butterfly_inverse_q15_mve(const arm_cfft_instance_q15 *S
|
|
|
|
|
q15_t const *p_rearranged_twiddle_tab_stride1 =
|
|
|
|
|
&S->rearranged_twiddle_stride1[
|
|
|
|
|
S->rearranged_twiddle_tab_stride1_arr[stage]];
|
|
|
|
|
q15_t const *pW1, *pW2, *pW3;
|
|
|
|
|
q15_t *inA = pSrc + CMPLX_DIM * i * n1;
|
|
|
|
|
|
|
|
|
|
q15_t * pBase = pSrc;
|
|
|
|
|
for (int i = 0; i < iter; i++)
|
|
|
|
|
{
|
|
|
|
|
q15_t *inA = pBase;
|
|
|
|
|
q15_t *inB = inA + n2 * CMPLX_DIM;
|
|
|
|
|
q15_t *inC = inB + n2 * CMPLX_DIM;
|
|
|
|
|
q15_t *inD = inC + n2 * CMPLX_DIM;
|
|
|
|
|
q15_t const *pW1 = p_rearranged_twiddle_tab_stride1;
|
|
|
|
|
q15_t const *pW2 = p_rearranged_twiddle_tab_stride2;
|
|
|
|
|
q15_t const *pW3 = p_rearranged_twiddle_tab_stride3;
|
|
|
|
|
q15x8_t vecW;
|
|
|
|
|
|
|
|
|
|
pW1 = p_rearranged_twiddle_tab_stride1;
|
|
|
|
|
pW2 = p_rearranged_twiddle_tab_stride2;
|
|
|
|
|
pW3 = p_rearranged_twiddle_tab_stride3;
|
|
|
|
|
|
|
|
|
|
blkCnt = n2 / 4;
|
|
|
|
|
/*
|
|
|
|
|
@ -382,6 +384,7 @@ static void _arm_radix4_butterfly_inverse_q15_mve(const arm_cfft_instance_q15 *S
|
|
|
|
|
|
|
|
|
|
blkCnt--;
|
|
|
|
|
}
|
|
|
|
|
pBase += CMPLX_DIM * n1;
|
|
|
|
|
}
|
|
|
|
|
n1 = n2;
|
|
|
|
|
n2 >>= 2u;
|
|
|
|
|
|