51#include "NE10_fft_generic_int32.neonintrinsic.h"
53template<
bool is_inverse>
54inline void ne10_mixed_radix_generic_butterfly_int32_neon_dispatch (
57 const ne10_int32_t *factors,
60 ne10_int32_t is_scaled_flag)
62 ne10_int32_t stage_count = factors[0];
63 ne10_int32_t fstride = factors[1];
64 ne10_int32_t radix = factors[stage_count << 1];
68 ne10_int32_t nfft = fstride * radix;
70 void (*ne10_mixed_butterfly_f) (CPLX *,
const CPLX *,
const ne10_int32_t *,
74 ne10_int32_t, ne10_int32_t, ne10_int32_t) = NULL;
76 if (is_scaled_flag == 1)
78 ne10_mixed_butterfly_f =
79 ne10_mixed_radix_generic_butterfly_int32_neon_impl<is_inverse, true>;
83 ne10_mixed_butterfly_f =
84 ne10_mixed_radix_generic_butterfly_int32_neon_impl<is_inverse, false>;
87 if (is_scaled_flag == 1)
90 ne10_c2c_1d_last_stage_neon<is_inverse, true>;
95 ne10_c2c_1d_last_stage_neon<is_inverse, false>;
98 ne10_mixed_butterfly_f ((CPLX *) buffer,
104 ne10_last_stage_f ((CPLX *) Fout,
105 (
const CPLX *) buffer,
112void ne10_mixed_radix_generic_butterfly_int32_neon (
115 const ne10_int32_t *factors,
118 ne10_int32_t is_scaled_flag)
120 ne10_mixed_radix_generic_butterfly_int32_neon_dispatch <false> (
121 Fout, Fin, factors, twiddles, buffer, is_scaled_flag);
124void ne10_mixed_radix_generic_butterfly_inverse_int32_neon (
127 const ne10_int32_t *factors,
130 ne10_int32_t is_scaled_flag)
132 ne10_mixed_radix_generic_butterfly_int32_neon_dispatch <true> (
133 Fout, Fin, factors, twiddles, buffer, is_scaled_flag);
structure for the 32 bits fixed point FFT function.