Project Ne10
An open, optimized software library for the ARM architecture.
Macros | Functions
NE10_rfft_float32.neonintrinsic.c File Reference
#include <arm_neon.h>
#include "NE10_types.h"
#include "NE10_macros.h"
#include "NE10_fft.h"
#include "NE10_dsp.h"
#include "NE10_fft.neonintrinsic.h"

Go to the source code of this file.

Macros

#define NE10_INV_BUTTERFLY_TMP(I1, I2, J1, J2, K1, K2, S1, S2)
 
#define NE10_INV_BUTTERFLY_TMP(I1, I2, J1, J2, K1, K2, S1, S2)
 

Functions

NE10_INLINE void ne10_radix8x4_r2c_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix8x4_c2r_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4x4_r2c_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4x4_c2r_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_first_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_first_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_other_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_other_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_last_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_last_butterfly_neon (float32x4_t *Fout_neon, const float32x4_t *Fin_neon, const ne10_int32_t out_step, const ne10_int32_t in_step, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t fstride, const ne10_int32_t mstride, const ne10_int32_t nfft, const ne10_fft_cpx_float32_t *twiddles)
 
NE10_INLINE void ne10_mixed_radix_r2c_butterfly_float32_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t *factors, const ne10_fft_cpx_float32_t *twiddles, ne10_fft_cpx_float32_t *buffer)
 
NE10_INLINE void ne10_mixed_radix_c2r_butterfly_float32_neon (ne10_fft_cpx_float32_t *Fout, const ne10_fft_cpx_float32_t *Fin, const ne10_int32_t *factors, const ne10_fft_cpx_float32_t *twiddles, ne10_fft_cpx_float32_t *buffer)
 
NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_first_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_first_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_second_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_second_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_other_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_other_butterfly (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage (ne10_fft_cpx_float32_t *dst, const ne10_fft_cpx_float32_t *src, const ne10_fft_cpx_float32_t *twiddles, const ne10_int32_t nfft)
 
void ne10_fft_r2c_1d_float32_neon (ne10_fft_cpx_float32_t *fout, ne10_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg)
 Specific implementation of ne10_fft_r2c_1d_float32 using NEON SIMD capabilities. More...
 
void ne10_fft_c2r_1d_float32_neon (ne10_float32_t *fout, ne10_fft_cpx_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg)
 Specific implementation of ne10_fft_c2r_1d_float32 using NEON SIMD capabilities. More...
 

Macro Definition Documentation

#define NE10_INV_BUTTERFLY_TMP (   I1,
  I2,
  J1,
  J2,
  K1,
  K2,
  S1,
  S2 
)
Value:
do { \
q_out ## I1 [I2] = ( q_in ## K1 [K2] + q_in ## S1 [S2] ); \
q_out ## J1 [J2] = ( q_in ## K1 [K2] - q_in ## S1 [S2] ); \
} while(0);
#define K1
#define K2
#define J1
#define I1
#define I2
#define J2
#define NE10_INV_BUTTERFLY_TMP (   I1,
  I2,
  J1,
  J2,
  K1,
  K2,
  S1,
  S2 
)
Value:
do { \
q_in ## I1 [I2] = ( q_out ## K1 [K2] + q_out ## S1 [S2] ); \
q_in ## J1 [J2] = ( q_out ## K1 [K2] - q_out ## S1 [S2] ); \
} while(0);
#define K1
#define K2
#define J1
#define I1
#define I2
#define J2

Function Documentation

NE10_INLINE void ne10_mixed_radix_c2r_butterfly_float32_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t factors,
const ne10_fft_cpx_float32_t twiddles,
ne10_fft_cpx_float32_t buffer 
)

Definition at line 610 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_mixed_radix_r2c_butterfly_float32_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t factors,
const ne10_fft_cpx_float32_t twiddles,
ne10_fft_cpx_float32_t buffer 
)

Definition at line 561 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 1663 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_first_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 754 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_other_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 1532 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_c2r_with_twiddles_first_stage_second_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 1048 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 1641 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_first_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 669 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_other_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 1264 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4_r2c_with_twiddles_last_stage_second_butterfly ( ne10_fft_cpx_float32_t dst,
const ne10_fft_cpx_float32_t src,
const ne10_fft_cpx_float32_t twiddles,
const ne10_int32_t  nfft 
)

Definition at line 840 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_c2r_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft 
)

Definition at line 166 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_first_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 229 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_last_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 452 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 519 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_c2r_with_twiddles_other_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 365 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_r2c_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft 
)

Definition at line 137 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_first_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 208 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_last_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 431 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 477 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix4x4_r2c_with_twiddles_other_butterfly_neon ( float32x4_t *  Fout_neon,
const float32x4_t *  Fin_neon,
const ne10_int32_t  out_step,
const ne10_int32_t  in_step,
const ne10_fft_cpx_float32_t twiddles 
)

Definition at line 254 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix8x4_c2r_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft 
)

Definition at line 91 of file NE10_rfft_float32.neonintrinsic.c.

NE10_INLINE void ne10_radix8x4_r2c_neon ( ne10_fft_cpx_float32_t Fout,
const ne10_fft_cpx_float32_t Fin,
const ne10_int32_t  fstride,
const ne10_int32_t  mstride,
const ne10_int32_t  nfft 
)

Definition at line 55 of file NE10_rfft_float32.neonintrinsic.c.