1 /****************************************************************************** 2 * @file arm_vec_fft.h 3 * @brief Private header file for CMSIS DSP Library 4 * @version V1.7.0 5 * @date 07. January 2020 6 ******************************************************************************/ 7 /* 8 * Copyright (c) 2010-2020 Arm Limited or its affiliates. All rights reserved. 9 * 10 * SPDX-License-Identifier: Apache-2.0 11 * 12 * Licensed under the Apache License, Version 2.0 (the License); you may 13 * not use this file except in compliance with the License. 14 * You may obtain a copy of the License at 15 * 16 * www.apache.org/licenses/LICENSE-2.0 17 * 18 * Unless required by applicable law or agreed to in writing, software 19 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 * See the License for the specific language governing permissions and 22 * limitations under the License. 23 */ 24 25 #ifndef _ARM_VEC_FFT_H_ 26 #define _ARM_VEC_FFT_H_ 27 28 #include "arm_math.h" 29 #include "arm_helium_utils.h" 30 31 #ifdef __cplusplus 32 extern "C" 33 { 34 #endif 35 36 #if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE) 37 38 #define MVE_CMPLX_ADD_A_ixB(A, B) vcaddq_rot90(A,B) 39 #define MVE_CMPLX_SUB_A_ixB(A,B) vcaddq_rot270(A,B) 40 #define MVE_CMPLX_MULT_FLT_AxB(A,B) vcmlaq_rot90(vcmulq(A, B), A, B) 41 #define MVE_CMPLX_MULT_FLT_Conj_AxB(A,B) vcmlaq_rot270(vcmulq(A, B), A, B) 42 43 #define MVE_CMPLX_MULT_FX_AxB(A,B) vqdmladhxq(vqdmlsdhq((__typeof(A))vuninitializedq_s32(), A, B), A, B); 44 #define MVE_CMPLX_MULT_FX_AxConjB(A,B) vqdmladhq(vqdmlsdhxq((__typeof(A))vuninitializedq_s32(), A, B), A, B); 45 46 #define MVE_CMPLX_ADD_FX_A_ixB(A, B) vhcaddq_rot90(A,B) 47 #define MVE_CMPLX_SUB_FX_A_ixB(A,B) vhcaddq_rot270(A,B) 48 49 50 #endif /* (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)*/ 51 52 53 #ifdef __cplusplus 54 } 55 #endif 56 57 58 #endif /* _ARM_VEC_FFT_H_ */