#include "Define_config.h"

#if (FLAG_SELECT_C_DSP == 0)
#include <xtensa/tie/xt_hifi2.h>
#define FLAG_DSP_ASM_ON

#define KHW_OPTI_20191216_HIFI
#define KHW_OPTI_20191216_HIFI_new
//#define OPT_fx_SolomonVoice_FFT_to_FFTpwr_ave

#define INTEGRATIONCHANGES4PREV
////////////////////////////////////////////////////////////////////////////
#ifdef INTEGRATIONCHANGES4PREV
#define Fx_vector_copy_s_OPT_DSP
#define OPT_Fx_vector_average
#define OPT_Fx_vector_Max
#define fx_SolomonVoice_FFTbin_gain_applying_OPT_DSP
#define OPT_Gain_averaging
#define OPT_WebRtcSpl_UpsampleBy2
#define OPT_WebRtcSpl_DownsampleBy2
#define OPT_Fn_vector_smoothing_over_3_rectangularwin_length
#define OPT_FN_f0_based_pre_Noise_suppression_forloop
#define OPT_fx_SolomonVoice_PwrBin_FixQ_BlkDeNorm
#define Fx_convolve_OPT_DSP
#define  FN_DVTX_AEC_NB_UPDATE_OPT_DSP
#define EC_DELAY_ESTIMATION_OPT_DSP
#define DVTXOP_block_norm_OPT_DSP

///////////////////////////////////////////////////////////////
#define Merge_FFTband_calc
#define SRCB_1016_OPT
#define OPT_int_sqrt_0_25_four
#define SRCB_FFT32_OPT						//hoon_test disable for BF test
#define Right_Shift_vecter_OPT_DSP //recheck
#define Multi_vecter_OPT_DSP //recheck
#define  fn_Adaptive_NC_DSP_OPT

//#define  fx_SolomonVoice_FFT_to_FFTpwr_OPT_DSP //Not required
#define OPT_DVTXOP_L_mpy_ls
#define OPT_DVTXOP_L_mpy_ll

#define BITMISMATCH_OK
#define BITMISMATCH_OK1
//#define BITMISMATCH_NOK2
#define BITMISMATCH_OK3

#define BM_SRCB_1019_OPT1//BitMisMatch
#define SRCB_1019_OPT1 //BitMisMatch
#ifdef BITMISMATCH_OK
#define  Fx_vector_gain_OPT_DSP // 3.5MCPS NBM (Not Bit Match)
#endif
#define Power_calculation_shift_OPT_DSP //BitMisMatch

//----zhuheng opt-------/
#define  fx_SolomonVoice_clipping_detection_OPT_DSP
#define  Tx_c_fft_OPT_DSP
#define  Tx_r_fft_OPT_DSP
#define  Log_OPT_DSP
#define  Merge_two_convolve_OPT_DSP
#define  FN_SOLOMONVOICEW_TX_AEC_loop1


// Bing xiao opt
#ifdef BITMISMATCH_OK1
#define fx_SolomonVoice_EchoPower_estimation_DSP_OPT  // not-bitexact with original(DVTXOP_L_mpy_ls), Modify C it's bit-exactly now
#endif

/********Kali opt***********/
//#define FNLMS_MEMCPY_RED	//hoon_test 1bit mismatch

//Beanforming opt
/*Kali*/
#define INLINE_BASIC_OPS
#define GSCMIC_OPT

//#define GSC_Opt_NonBitexact	// not bitexact
/*---SRCB-------------*/
#define BASIC_LL_OPS
#define fltfn_FreqBinGain_OPT_DSP
#define fltfx_SolomonVoice_FFT_to_FFTpwr_OPT_DSP
#define fltfn_LogPwrSum_OPT_DSP

#define Left_Shift_32to16_OPT_DSP
#define Right_Shift_32to16_OPT_DSP
#define V32to16_OPT_DSP
#define V16to32_OPT_DSP

#ifdef BITMISMATCH_NOK2
//1014 update
#define OPT_int_sqrt_0_25_fourX
#endif
#define FN_Mixing_FreqDomain_OPT_DSP
#define fn_MODULE_115_MaxNSR_filter_out_adjustment_OPT_DSP
#define fn_MODULE_100_maxNSR_filtering_OPT_DSP		//not bitexact

#ifdef BITMISMATCH_OK
#define fn_BF_PitchEnhance_4_Invcepstrum_DSP_OPT	//not bitexact - 1bitÆ²¾îÁü
#define fn_BF_PitchEnhance_1_preNS_OPT_DSP  //not bitexact, but bitexact to modified C code, ÇöÀç´Â bit exact ÃÖÀûÈ­·Î Àû¿ë, 1bit Æ²¾îÁü
#endif

//#define fn_BF_PitchEnhance_2_cepstrum_DSP_OPT
#define FN_BF_DSP_OPT
#define fn_MODULE_120_GSC_adjustment_DSP_OPT

#ifdef BITMISMATCH_OK1
#define fn_BF_PitchEnhance_5_cepstrumNS_modify		//not bitexact, but bitexact to modified C code
#define fltfn_LTSV_VAD_modify   //not bitexact, but bitexact to modified C code
#define fltfn_unbiasedMMSE_Npsd_SPP_modify  //not bitexact, but bitexact to modified C code
#define fn_BF_PitchEnhance_3_pitch_enhencement_DSP_OPT   //not bitexact, but bitexact to modified C code
#endif

/*---SRCB-------------*/
#define HOON_OPT_HIFI
#define HOON_OPT_HIFI_12
///////////////////////////////////////////////////////
/*SRCB 191021*/
#define Fx_vector_sum_squares_OPT_DSP
//#define  FN_2ndIIR_FILTERING_OPT
#define fx_SolomonVoice_64point_INVERSE_cepstrum_transform_DSP_OPT
#define MinGain_ApplyGain_DSP_OPT

/*SRCB 191025*/
#define fn_fDRC_OPT_DSP
#ifdef BITMISMATCH_OK3
//#define fx_SolomonVoice_FNLMS_error_cal_DSP_OPT //Not bitexact
#endif
#define Gain_averaging_DSP_OPT

// 12/11~12/13 optimization
//#define fx_SolomonVoice_AEC_ADFfiltering_OPT	//not bitmatched
#define OPT_int_sqrt_0_50_four
#define OPT_HIFI_MIN_MAX
#define OPT_FFT_HOON
#define OPT_COPY_FUNC

// 12/13 optimization
#define FN_BF_loop_DSP_OPT
#define  FN_SOLOMONVOICEW_TX_AGC_2ch_DSP_OPT1
#define  FN_SOLOMONVOICEW_TX_AGC_2ch_DSP_OPT2
#define  FN_SOLOMONVOICEW_TX_AGC_2ch_DSP_OPT3
#define  FN_SOLOMONVOICEW_TX_MBDRC_2ch_DSP_OPT1
#define  FN_SOLOMONVOICEW_TX_MBDRC_2ch_OPT
#endif
//#define fn_MODULE_115_MaxNSR_filter_out_adjustment_OPT_DSP
#define  FN_SOLOMONVOICEW_TX_FIRFilter_OPT_DSP
#define  fx_SolomonVoice_FFT_to_FFTpwr_ave_OPT_DSP
#define  IOLA_function_WB_Add_vector_OPT_DSP
#define SetWgscFreqUpdate_OPT_DSP
#define SetOnes
#define SetZeros
#define fltfn_NpsdBM_estimation_loop1
#define fx_SolomonVoice_recursiveAVG_ls_2_OPT_DSP
#define fx_SolomonVoice_recursiveAVG_ls_OPT_DSP
#define FN_VADACC_multi_constant_OPT_DSP
#define FN_2ndIIR_FILTERING_OPT_DSP
#define fx_SolomonVoice_NS_MEMCPY_OPT_DSP
#define fx_SolomonVoice_NS_1_OPT_DSP
#define FN_SOLOMONVOICEW_TX_MBDRC_shift_OPT_DSP
#define FN_SOLOMONVOICEW_TX_MBDRC_energy_OPT_DSP
#define FN_VADACC_freqmask_OPT_DSP
#define FN_VADACC_multi_OPT_DSP
#define SolomonVoiceWVADACCVectorSmooting_OPT_DSP
#define fx_SolomonVoice_recursiveAVG_ls_vector_OPT_DSP
#define fx_SolomonVoice_Npsd_ini_calculation_OPT_DSP
#define FN_VADACC_recursiveAVG_ls_vector_OPT_DSP
#define fx_SolomonVoice_DD_SNRprio_estimation_OPT_DSP
#define fltfn_NpsdBM_estimation_AVG_ls_vector_OPT_DSP
#define OVERFLOW_CHANGE
#define fx_SolomonVoice_FNLMS_error_cal_vector_OPT_DSP
#define fltfn_RecursiveVectorAvg_q_OPT_DSP
#define fx_SolomonVoice_iniSNR_smoothing_OPT_DSP
#define fx_SolomonVoice_aprioriSNR_freqSmoothing_OPT_DSP
#endif
