Project Ne10
An open, optimized software library for the ARM architecture.
Macros | Functions
NE10_fft_generic_int32.h File Reference
#include "NE10_types.h"
#include "NE10_macros.h"
#include "NE10_fft.h"

Go to the source code of this file.

Macros

#define NE10_CPX_MUL_S32(Z, A, B)
 
#define NE10_S_MUL_S32(A, S)   (((NE10_F2I32_SAMPPROD) (A) * (S)) >> 31)
 

Functions

template<int RADIX>
void FFT_MUL_TW (ne10_fft_cpx_int32_t out[RADIX], const ne10_fft_cpx_int32_t in[RADIX], const ne10_fft_cpx_int32_t tw[RADIX])
 Multiply input with twiddles. More...
 
template<>
void FFT_MUL_TW< 2 > (ne10_fft_cpx_int32_t out[2], const ne10_fft_cpx_int32_t in[2], const ne10_fft_cpx_int32_t tw[1])
 
template<int RADIX>
void FFT_MUL_TW (ne10_fft_cpx_int32_t out[RADIX], const ne10_fft_cpx_int32_t in[RADIX], const ne10_fft_cpx_int32_t tw[RADIX-1])
 
template<int RADIX>
void FFT_FCU (ne10_fft_cpx_int32_t scratch_out[RADIX], const ne10_fft_cpx_int32_t scratch_in[RADIX])
 Basic fixed-point butterfly used in each stage. More...
 
template<>
void FFT_FCU< 2 > (ne10_fft_cpx_int32_t scratch_out[2], const ne10_fft_cpx_int32_t scratch_in[2])
 Basic fixed-point Radix-2 butterfly used in each stage. More...
 
template<>
void FFT_FCU< 3 > (ne10_fft_cpx_int32_t Fout[3], const ne10_fft_cpx_int32_t Fin[3])
 Basic fixed-point radix-3 butterfly used in each stage. More...
 
template<>
void FFT_FCU< 4 > (ne10_fft_cpx_int32_t scratch_out[4], const ne10_fft_cpx_int32_t scratch_in[4])
 Basic fixed-point radix-4 butterfly used in each stage. More...
 
template<>
void FFT_FCU< 5 > (ne10_fft_cpx_int32_t Fout[5], const ne10_fft_cpx_int32_t Fin[5])
 Basic fixed-point radix-5 butterfly used in each stage. More...
 
template<class T >
void NE10_CONJ_S (T &)
 Conjugate a fix-point complex scalar/NEON vector. More...
 
template<>
void NE10_CONJ_S< ne10_fft_cpx_int32_t > (ne10_fft_cpx_int32_t &scalar)
 
template<int RADIX, class T >
void NE10_CONJ (T in[RADIX])
 Conjugate a fix-point complex array. More...
 
template<>
void NE10_CONJ< 1, ne10_fft_cpx_int32_t > (ne10_fft_cpx_int32_t in[1])
 
template<class T >
NE10_CPX_LOAD_S (const T *ptr)
 
template<class T >
void NE10_CPX_STORE_S (T *Fout, const T in)
 
template<int RADIX, class T >
void NE10_LOAD_BY_STEP (T out[RADIX], const T *Fin, const ne10_int32_t in_step)
 Load a fixed-size array from given buffer, by given step. More...
 
template<>
void NE10_LOAD_BY_STEP< 1, ne10_fft_cpx_int32_t > (ne10_fft_cpx_int32_t out[0], const ne10_fft_cpx_int32_t *Fin, const ne10_int32_t)
 
template<int RADIX, class T >
void NE10_STORE_BY_STEP (T *Fout, const T in[RADIX], const ne10_int32_t out_step)
 Store a fixed-size array to given buffer, by given step. More...
 
template<>
void NE10_STORE_BY_STEP< 1, ne10_fft_cpx_int32_t > (ne10_fft_cpx_int32_t *Fout, const ne10_fft_cpx_int32_t in[1], const ne10_int32_t)
 
template<int RADIX>
void NE10_SCALED (ne10_fft_cpx_int32_t out[RADIX], const ne10_int32_t scaling)
 Scale a fixed-size array by given divider. More...
 
template<>
void NE10_SCALED< 1 > (ne10_fft_cpx_int32_t out[1], const ne10_int32_t scaling)
 

Macro Definition Documentation

#define NE10_CPX_MUL_S32 (   Z,
  A,
 
)
Value:
do { \
ne10_int32_t ARBR = ((NE10_F2I32_SAMPPROD) A.r * B.r) >> 31; \
ne10_int32_t ARBI = ((NE10_F2I32_SAMPPROD) A.r * B.i) >> 31; \
ne10_int32_t AIBR = ((NE10_F2I32_SAMPPROD) A.i * B.r) >> 31; \
ne10_int32_t AIBI = ((NE10_F2I32_SAMPPROD) A.i * B.i) >> 31; \
Z.r = ARBR - AIBI; \
Z.i = ARBI + AIBR; \
} while (0)
int32_t ne10_int32_t
Definition: NE10_types.h:76
#define NE10_F2I32_SAMPPROD
Definition: NE10_macros.h:83

Definition at line 54 of file NE10_fft_generic_int32.h.

#define NE10_S_MUL_S32 (   A,
 
)    (((NE10_F2I32_SAMPPROD) (A) * (S)) >> 31)

Definition at line 64 of file NE10_fft_generic_int32.h.

Function Documentation

template<int RADIX>
void FFT_FCU ( ne10_fft_cpx_int32_t  scratch_out[RADIX],
const ne10_fft_cpx_int32_t  scratch_in[RADIX] 
)
inline

Basic fixed-point butterfly used in each stage.

Template Parameters
RADIXRadix of butterfly.
Parameters
[out]scratch_outOutput array.
[in]scratch_inInput array.
template<>
void FFT_FCU< 2 > ( ne10_fft_cpx_int32_t  scratch_out[2],
const ne10_fft_cpx_int32_t  scratch_in[2] 
)
inline

Basic fixed-point Radix-2 butterfly used in each stage.

Parameters
[out]scratch_outOutput array.
[in]scratch_inInput array.

Definition at line 118 of file NE10_fft_generic_int32.h.

template<>
void FFT_FCU< 3 > ( ne10_fft_cpx_int32_t  Fout[3],
const ne10_fft_cpx_int32_t  Fin[3] 
)
inline

Basic fixed-point radix-3 butterfly used in each stage.

Parameters
[out]scratch_outOutput array.
[in]scratch_inInput array.

Definition at line 131 of file NE10_fft_generic_int32.h.

template<>
void FFT_FCU< 4 > ( ne10_fft_cpx_int32_t  scratch_out[4],
const ne10_fft_cpx_int32_t  scratch_in[4] 
)
inline

Basic fixed-point radix-4 butterfly used in each stage.

Parameters
[out]scratch_outOutput array.
[in]scratch_inInput array.

Definition at line 173 of file NE10_fft_generic_int32.h.

template<>
void FFT_FCU< 5 > ( ne10_fft_cpx_int32_t  Fout[5],
const ne10_fft_cpx_int32_t  Fin[5] 
)
inline

Basic fixed-point radix-5 butterfly used in each stage.

Parameters
[out]scratch_outOutput array.
[in]scratch_inInput array.

Definition at line 198 of file NE10_fft_generic_int32.h.

template<int RADIX>
void FFT_MUL_TW ( ne10_fft_cpx_int32_t  out[RADIX],
const ne10_fft_cpx_int32_t  in[RADIX],
const ne10_fft_cpx_int32_t  tw[RADIX] 
)
inline

Multiply input with twiddles.

Template Parameters
RADIXLength of given fix-point complex array
Parameters
[out]outOutput array.
[in]inInput array.
[in]twTwiddles array.
template<int RADIX>
void FFT_MUL_TW ( ne10_fft_cpx_int32_t  out[RADIX],
const ne10_fft_cpx_int32_t  in[RADIX],
const ne10_fft_cpx_int32_t  tw[RADIX-1] 
)
inline

Definition at line 88 of file NE10_fft_generic_int32.h.

template<>
void FFT_MUL_TW< 2 > ( ne10_fft_cpx_int32_t  out[2],
const ne10_fft_cpx_int32_t  in[2],
const ne10_fft_cpx_int32_t  tw[1] 
)
inline

Definition at line 79 of file NE10_fft_generic_int32.h.

template<int RADIX, class T >
void NE10_CONJ ( in[RADIX])
inline

Conjugate a fix-point complex array.

Template Parameters
RADIXLength of given fix-point complex array
Parameters
[out]inGiven array

Definition at line 278 of file NE10_fft_generic_int32.h.

template<>
void NE10_CONJ< 1, ne10_fft_cpx_int32_t > ( ne10_fft_cpx_int32_t  in[1])
inline

Definition at line 285 of file NE10_fft_generic_int32.h.

template<class T >
void NE10_CONJ_S ( T &  )
inline

Conjugate a fix-point complex scalar/NEON vector.

template<>
void NE10_CONJ_S< ne10_fft_cpx_int32_t > ( ne10_fft_cpx_int32_t scalar)
inline

Definition at line 267 of file NE10_fft_generic_int32.h.

template<class T >
T NE10_CPX_LOAD_S ( const T *  ptr)
inline

Definition at line 291 of file NE10_fft_generic_int32.h.

template<class T >
void NE10_CPX_STORE_S ( T *  Fout,
const T  in 
)
inline

Definition at line 297 of file NE10_fft_generic_int32.h.

template<int RADIX, class T >
void NE10_LOAD_BY_STEP ( out[RADIX],
const T *  Fin,
const ne10_int32_t  in_step 
)
inline

Load a fixed-size array from given buffer, by given step.

Template Parameters
RADIXLength of array.
Parameters
[out]outArray to which data are loaded
[in]FinPointing to buffer from which data are loaded
[in]in_stepStep between loaded data in Fin

Definition at line 324 of file NE10_fft_generic_int32.h.

template<>
void NE10_LOAD_BY_STEP< 1, ne10_fft_cpx_int32_t > ( ne10_fft_cpx_int32_t  out[0],
const ne10_fft_cpx_int32_t Fin,
const ne10_int32_t   
)
inline

Definition at line 315 of file NE10_fft_generic_int32.h.

template<int RADIX>
void NE10_SCALED ( ne10_fft_cpx_int32_t  out[RADIX],
const ne10_int32_t  scaling 
)
inline

Scale a fixed-size array by given divider.

Template Parameters
RADIXLength of array.
Parameters
[out]outArray whose elements are scaled
[in]scalingDivider by which array is divided

Definition at line 364 of file NE10_fft_generic_int32.h.

template<>
void NE10_SCALED< 1 > ( ne10_fft_cpx_int32_t  out[1],
const ne10_int32_t  scaling 
)
inline

Definition at line 372 of file NE10_fft_generic_int32.h.

template<int RADIX, class T >
void NE10_STORE_BY_STEP ( T *  Fout,
const T  in[RADIX],
const ne10_int32_t  out_step 
)
inline

Store a fixed-size array to given buffer, by given step.

Template Parameters
RADIXLength of array.
Parameters
[out]FoutPointing to buffer to which data are stored
[in]outArray to from data are stored
[in]out_stepStep between stored data in Fout

Definition at line 340 of file NE10_fft_generic_int32.h.

template<>
void NE10_STORE_BY_STEP< 1, ne10_fft_cpx_int32_t > ( ne10_fft_cpx_int32_t Fout,
const ne10_fft_cpx_int32_t  in[1],
const ne10_int32_t   
)
inline

Definition at line 349 of file NE10_fft_generic_int32.h.