|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _ARM_VEC_FFT_H_ |
|
|
#define _ARM_VEC_FFT_H_ |
|
|
|
|
|
#include "edge-impulse-sdk/CMSIS/DSP/Include/arm_math.h" |
|
|
#include "arm_helium_utils.h" |
|
|
|
|
|
#ifdef __cplusplus |
|
|
extern "C" |
|
|
{ |
|
|
#endif |
|
|
|
|
|
#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE) |
|
|
|
|
|
#define MVE_CMPLX_ADD_A_ixB(A, B) vcaddq_rot90(A,B) |
|
|
#define MVE_CMPLX_SUB_A_ixB(A,B) vcaddq_rot270(A,B) |
|
|
#define MVE_CMPLX_MULT_FLT_AxB(A,B) vcmlaq_rot90(vcmulq(A, B), A, B) |
|
|
#define MVE_CMPLX_MULT_FLT_Conj_AxB(A,B) vcmlaq_rot270(vcmulq(A, B), A, B) |
|
|
|
|
|
#define MVE_CMPLX_MULT_FX_AxB(A,B) vqdmladhxq(vqdmlsdhq((__typeof(A))vuninitializedq_s32(), A, B), A, B) |
|
|
#define MVE_CMPLX_MULT_FX_AxConjB(A,B) vqdmladhq(vqdmlsdhxq((__typeof(A))vuninitializedq_s32(), A, B), A, B) |
|
|
|
|
|
#define MVE_CMPLX_ADD_FX_A_ixB(A, B) vhcaddq_rot90(A,B) |
|
|
#define MVE_CMPLX_SUB_FX_A_ixB(A,B) vhcaddq_rot270(A,B) |
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
|
} |
|
|
#endif |
|
|
|
|
|
|
|
|
#endif |