@@ -119,10 +119,10 @@ static inline void FFT4_FCU_INPLACE (ne10_fft_cpx_float32_t scratch_out[4])
119119 NE10_CPX_SUB (scratch_out [2 ], scratch [0 ], scratch [2 ]);
120120 NE10_CPX_ADD (scratch_out [0 ], scratch [0 ], scratch [2 ]);
121121
122- scratch_out [1 ].r = scratch [1 ].r + scratch [3 ].i ;
123- scratch_out [1 ].i = scratch [1 ].i - scratch [3 ].r ;
124- scratch_out [3 ].r = scratch [1 ].r - scratch [3 ].i ;
125- scratch_out [3 ].i = scratch [1 ].i + scratch [3 ].r ;
122+ scratch_out [1 ].r = vaddq_f32 ( scratch [1 ].r , scratch [3 ].i ) ;
123+ scratch_out [1 ].i = vsubq_f32 ( scratch [1 ].i , scratch [3 ].r ) ;
124+ scratch_out [3 ].r = vsubq_f32 ( scratch [1 ].r , scratch [3 ].i ) ;
125+ scratch_out [3 ].i = vaddq_f32 ( scratch [1 ].i , scratch [3 ].r ) ;
126126}
127127
128128static inline void NE10_LOAD_TW_AND_MUL (CPLX * scratch_in ,
@@ -203,34 +203,34 @@ static inline void NE10_FFT5_MUL_TW_NEON (CPLX scratch_out[5],
203203////////////////
204204static inline void NE10_FFT2_CONJ (CPLX scratch_out [2 ])
205205{
206- scratch_out [0 ].val [1 ] = - scratch_out [0 ].val [1 ];
207- scratch_out [1 ].val [1 ] = - scratch_out [1 ].val [1 ];
206+ scratch_out [0 ].val [1 ] = vnegq_f32 ( scratch_out [0 ].val [1 ]) ;
207+ scratch_out [1 ].val [1 ] = vnegq_f32 ( scratch_out [1 ].val [1 ]) ;
208208}
209209
210210static inline void NE10_FFT3_CONJ (CPLX scratch_out [3 ])
211211{
212212 NE10_FFT2_CONJ (scratch_out );
213- scratch_out [2 ].val [1 ] = - scratch_out [2 ].val [1 ];
213+ scratch_out [2 ].val [1 ] = vnegq_f32 ( scratch_out [2 ].val [1 ]) ;
214214}
215215
216216static inline void NE10_FFT4_CONJ (CPLX scratch_out [4 ])
217217{
218218 NE10_FFT3_CONJ (scratch_out );
219- scratch_out [3 ].val [1 ] = - scratch_out [3 ].val [1 ];
219+ scratch_out [3 ].val [1 ] = vnegq_f32 ( scratch_out [3 ].val [1 ]) ;
220220}
221221
222222static inline void NE10_FFT5_CONJ (CPLX scratch_out [5 ])
223223{
224224 NE10_FFT4_CONJ (scratch_out );
225- scratch_out [4 ].val [1 ] = - scratch_out [4 ].val [1 ];
225+ scratch_out [4 ].val [1 ] = vnegq_f32 ( scratch_out [4 ].val [1 ]) ;
226226}
227227
228228static inline void NE10_FFT8_CONJ (CPLX scratch_out [8 ])
229229{
230230 NE10_FFT5_CONJ (scratch_out );
231- scratch_out [5 ].val [1 ] = - scratch_out [5 ].val [1 ];
232- scratch_out [6 ].val [1 ] = - scratch_out [6 ].val [1 ];
233- scratch_out [7 ].val [1 ] = - scratch_out [7 ].val [1 ];
231+ scratch_out [5 ].val [1 ] = vnegq_f32 ( scratch_out [5 ].val [1 ]) ;
232+ scratch_out [6 ].val [1 ] = vnegq_f32 ( scratch_out [6 ].val [1 ]) ;
233+ scratch_out [7 ].val [1 ] = vnegq_f32 ( scratch_out [7 ].val [1 ]) ;
234234}
235235
236236/////////////////////////////////////////////////////////////////////////////
@@ -241,10 +241,10 @@ static inline void NE10_FFT2_SCALING (CPLX scratch_out[2],
241241 const REAL one_by_fft_neon )
242242{
243243#ifdef NE10_DSP_CFFT_SCALING
244- scratch_out [0 ].val [0 ] *= one_by_fft_neon ;
245- scratch_out [0 ].val [1 ] *= one_by_fft_neon ;
246- scratch_out [1 ].val [0 ] *= one_by_fft_neon ;
247- scratch_out [1 ].val [1 ] *= one_by_fft_neon ;
244+ scratch_out [0 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 0 ]. val [ 0 ] , one_by_fft_neon ) ;
245+ scratch_out [0 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 0 ]. val [ 1 ] , one_by_fft_neon ) ;
246+ scratch_out [1 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 1 ]. val [ 0 ] , one_by_fft_neon ) ;
247+ scratch_out [1 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 1 ]. val [ 1 ] , one_by_fft_neon ) ;
248248#else
249249 (void ) scratch_out ;
250250 (void ) one_by_fft_neon ;
@@ -256,8 +256,8 @@ static inline void NE10_FFT3_SCALING (CPLX scratch_out[3],
256256{
257257#ifdef NE10_DSP_CFFT_SCALING
258258 NE10_FFT2_SCALING (scratch_out , one_by_fft_neon );
259- scratch_out [2 ].val [0 ] *= one_by_fft_neon ;
260- scratch_out [2 ].val [1 ] *= one_by_fft_neon ;
259+ scratch_out [2 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 2 ]. val [ 0 ] , one_by_fft_neon ) ;
260+ scratch_out [2 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 2 ]. val [ 1 ] , one_by_fft_neon ) ;
261261#else
262262 (void ) scratch_out ;
263263 (void ) one_by_fft_neon ;
@@ -269,8 +269,8 @@ static inline void NE10_FFT4_SCALING (CPLX scratch_out[4],
269269{
270270#ifdef NE10_DSP_CFFT_SCALING
271271 NE10_FFT3_SCALING (scratch_out , one_by_fft_neon );
272- scratch_out [3 ].val [0 ] *= one_by_fft_neon ;
273- scratch_out [3 ].val [1 ] *= one_by_fft_neon ;
272+ scratch_out [3 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 3 ]. val [ 0 ] , one_by_fft_neon ) ;
273+ scratch_out [3 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 3 ]. val [ 1 ] , one_by_fft_neon ) ;
274274#else
275275 (void ) scratch_out ;
276276 (void ) one_by_fft_neon ;
@@ -282,8 +282,8 @@ static inline void NE10_FFT5_SCALING (CPLX scratch_out[5],
282282{
283283#ifdef NE10_DSP_CFFT_SCALING
284284 NE10_FFT4_SCALING (scratch_out , one_by_fft_neon );
285- scratch_out [4 ].val [0 ] *= one_by_fft_neon ;
286- scratch_out [4 ].val [1 ] *= one_by_fft_neon ;
285+ scratch_out [4 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 4 ]. val [ 0 ] , one_by_fft_neon ) ;
286+ scratch_out [4 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 4 ]. val [ 1 ] , one_by_fft_neon ) ;
287287#else
288288 (void ) scratch_out ;
289289 (void ) one_by_fft_neon ;
@@ -295,12 +295,12 @@ static inline void NE10_FFT8_SCALING (CPLX scratch_out[8],
295295{
296296#ifdef NE10_DSP_CFFT_SCALING
297297 NE10_FFT5_SCALING (scratch_out , one_by_fft_neon );
298- scratch_out [5 ].val [0 ] *= one_by_fft_neon ;
299- scratch_out [5 ].val [1 ] *= one_by_fft_neon ;
300- scratch_out [6 ].val [0 ] *= one_by_fft_neon ;
301- scratch_out [6 ].val [1 ] *= one_by_fft_neon ;
302- scratch_out [7 ].val [0 ] *= one_by_fft_neon ;
303- scratch_out [7 ].val [1 ] *= one_by_fft_neon ;
298+ scratch_out [5 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 5 ]. val [ 0 ] , one_by_fft_neon ) ;
299+ scratch_out [5 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 5 ]. val [ 1 ] , one_by_fft_neon ) ;
300+ scratch_out [6 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 6 ]. val [ 0 ] , one_by_fft_neon ) ;
301+ scratch_out [6 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 6 ]. val [ 1 ] , one_by_fft_neon ) ;
302+ scratch_out [7 ].val [0 ] = vmulq_n_f32 ( scratch_out [ 7 ]. val [ 0 ] , one_by_fft_neon ) ;
303+ scratch_out [7 ].val [1 ] = vmulq_n_f32 ( scratch_out [ 7 ]. val [ 1 ] , one_by_fft_neon ) ;
304304#else
305305 (void ) scratch_out ;
306306 (void ) one_by_fft_neon ;
@@ -704,20 +704,20 @@ static void ne10_radix_3_butterfly_float32_neon_##ISFIRSTSTAGE##_##ISINVERSE##_#
704704 NE10_CPX_SUB_NEON_F32 (s[0], in[1], in[2]); \
705705 s[3] = in[0]; \
706706 \
707- s[1].val[0] = - s[2].val[0] * HALF_NEON_F32; \
708- s[1].val[1] = - s[2].val[1] * HALF_NEON_F32; \
707+ s[1].val[0] = vnegq_f32(vmulq_f32( s[2].val[0] , HALF_NEON_F32)) ; \
708+ s[1].val[1] = vnegq_f32(vmulq_f32( s[2].val[1] , HALF_NEON_F32)) ; \
709709 \
710- s[1].val[0] += s[ 3].val[0]; \
711- s[1].val[1] += s[ 3].val[1]; \
712- s[0].val[0] *= TW_3IN_NEON_F32; \
713- s[0].val[1] *= TW_3IN_NEON_F32; \
710+ s[1].val[0] = vaddq_f32(s[1].val[0],s[ 3].val[0]) ; \
711+ s[1].val[1] = vaddq_f32(s[1].val[1],s[ 3].val[1]) ; \
712+ s[0].val[0] = vmulq_f32(s[0].val[0], TW_3IN_NEON_F32) ; \
713+ s[0].val[1] = vmulq_f32(s[0].val[1], TW_3IN_NEON_F32) ; \
714714 \
715- out[0].val[0] = s[3].val[0] + s[2].val[0]; \
716- out[0].val[1] = s[3].val[1] + s[2].val[1]; \
717- out[1].val[0] = s[1].val[0] - s[0].val[1]; \
718- out[1].val[1] = s[1].val[1] + s[0].val[0]; \
719- out[2].val[0] = s[1].val[0] + s[0].val[1]; \
720- out[2].val[1] = s[1].val[1] - s[0].val[0]; \
715+ out[0].val[0] = vaddq_f32( s[3].val[0] , s[2].val[0]) ; \
716+ out[0].val[1] = vaddq_f32( s[3].val[1] , s[2].val[1]) ; \
717+ out[1].val[0] = vsubq_f32( s[1].val[0] , s[0].val[1]) ; \
718+ out[1].val[1] = vaddq_f32( s[1].val[1] , s[0].val[0]) ; \
719+ out[2].val[0] = vaddq_f32( s[1].val[0] , s[0].val[1]) ; \
720+ out[2].val[1] = vsubq_f32( s[1].val[1] , s[0].val[0]) ; \
721721 \
722722 if (ISINVERSE == 1) \
723723 { \
0 commit comments