Loading lib_com/options.h +2 −3 Original line number Diff line number Diff line Loading @@ -95,9 +95,8 @@ #define HARMONIZE_ACELP_ENC /* VA: basop issue 2400: Remove duplicated main ACELP encoder function */ #define FIX_2392_MSAN_DESTROY_DEC /* VA: basop issue 2392: fix MSAN in ivas_destroy_dec_fx() */ #define OPT_241x_ACELP_FAST /* before 0.32 1.338 4.291 2.524 total 107.916 -> 0.32 1.306 3.985 2.442*/ #define OPT_241x_ACELP_FAST_2 //#define OPT_241x_ACELP_FAST_3 #define OPT_241x_ACELP_FAST /* VA: basop issue 2426, optimisation of acelp_fast_fx ( reduc. compl. by 0.35 wmops ) */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading lib_enc/cod4t64_fast_fx.c +1 −33 Original line number Diff line number Diff line Loading @@ -321,16 +321,11 @@ void acelp_fast_fx( IF( s64 ) { Word16 new_exp1 = W_norm( s64 ); #ifdef OPT_241x_ACELP_FAST_2 dndn_fx = W_extract_h( W_shl( s64, new_exp1 ) ); // exp1 - 31 dndn_e = sub( 63 - 1, new_exp1 ); #else dndn_fx = W_extract_h( W_shl( s64, new_exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifndef OPT_241x_ACELP_FAST dndn_e = sub( 31, sub( add( add( shl( Q_dn, 1 ), 1 ), new_exp1 ), 32 ) ); #else dndn_e = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), new_exp1 ), 32 ) ); #endif #endif } Loading @@ -356,16 +351,11 @@ void acelp_fast_fx( IF( s64 ) { Word16 new_exp1 = W_norm( s64 ); #ifdef OPT_241x_ACELP_FAST_2 cncn_track[q] = W_extract_h( W_shl( s64, new_exp1 ) ); // exp1 - 31 cncn_track_e[q] = sub( 63 - 1, new_exp1 ); #else cncn_track[q] = W_extract_h( W_shl( s64, new_exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifndef OPT_241x_ACELP_FAST cncn_track_e[q] = sub( 31, sub( add( add( shl( q_cn, 1 ), 1 ), new_exp1 ), 32 ) ); #else cncn_track_e[q] = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), new_exp1 ), 32 ) ); #endif #endif } cncn_fx = BASOP_Util_Add_Mant32Exp( cncn_fx, cncn_e, cncn_track[q], cncn_track_e[q], &cncn_e ); // Q(cncn_e) Loading Loading @@ -503,7 +493,7 @@ void acelp_fast_fx( test(); test(); /* skip certain tracks if number of pulses is lower than number of tracks */ #ifdef OPT_241x_ACELP_FAST_3 #ifdef OPT_241x_ACELP_FAST /* Just need a negative number, it doesn't need to be scaled */ IF( EQ_16( nb_pulse, 2 ) && EQ_16( nb_tracks, NB_TRACK_FCB_4T ) ) { max_track[NB_TRACK_FCB_4T - 3] = L_deposit_l( -1 ); Loading @@ -528,24 +518,14 @@ void acelp_fast_fx( #else IF( EQ_16( nb_pulse, 2 ) && EQ_16( nb_tracks, NB_TRACK_FCB_4T ) ) { #ifndef OPT_241x_ACELP_FAST max_track[NB_TRACK_FCB_4T - 3] = L_shl( -1, Q_dn ); // Q_dn move32(); max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dn ); // Q_dn #else max_track[NB_TRACK_FCB_4T - 3] = L_shl( -1, Q_dncn ); // Q_dn move32(); max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } ELSE IF( EQ_16( nb_pulse, 3 ) && EQ_16( codetrackpos, TRACKPOS_FIXED_FIRST ) ) { #ifndef OPT_241x_ACELP_FAST max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dn ); // Q_dn #else max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } Loading @@ -554,11 +534,7 @@ void acelp_fast_fx( i = maximum_32_fx( max_track, nb_tracks, &L_tmp1 ); track_order[q] = i; move16(); #ifndef OPT_241x_ACELP_FAST max_track[i] = L_shl( -1, Q_dn ); // Q_dn #else max_track[i] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } #endif Loading Loading @@ -713,14 +689,10 @@ void acelp_fast_fx( } exp1 = W_norm( s64 ); dndn_fx = W_extract_h( W_shl( s64, exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifdef OPT_241x_ACELP_FAST_2 dndn_e = sub( 63 - 1, exp1 ); #else #ifndef OPT_241x_ACELP_FAST dndn_e = sub( 31, sub( add( add( shl( Q_dn, 1 ), 1 ), exp1 ), 32 ) ); #else dndn_e = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), exp1 ), 32 ) ); #endif #endif IF( dndn_fx == 0 ) { Loading Loading @@ -1058,14 +1030,10 @@ void acelp_fast_fx( s64 = W_mult0_32_32( crit_num, crit_num ); // 2*Q_dn exp = W_norm( s64 ); crit_num = W_extract_h( W_shl( s64, exp ) ); // 2*Q_dn + exp - 32 #ifdef OPT_241x_ACELP_FAST_2 q_crit_num = sub( exp, 32 ); #else #ifndef OPT_241x_ACELP_FAST q_crit_num = add( shl( Q_dn, 1 ), sub( exp, 32 ) ); #else q_crit_num = add( shl( Q_dncn, 1 ), sub( exp, 32 ) ); #endif #endif // crit_den = sum2_fx( y_tmp, L_subfr ); // 2*q_H s64 = 0; Loading Loading
lib_com/options.h +2 −3 Original line number Diff line number Diff line Loading @@ -95,9 +95,8 @@ #define HARMONIZE_ACELP_ENC /* VA: basop issue 2400: Remove duplicated main ACELP encoder function */ #define FIX_2392_MSAN_DESTROY_DEC /* VA: basop issue 2392: fix MSAN in ivas_destroy_dec_fx() */ #define OPT_241x_ACELP_FAST /* before 0.32 1.338 4.291 2.524 total 107.916 -> 0.32 1.306 3.985 2.442*/ #define OPT_241x_ACELP_FAST_2 //#define OPT_241x_ACELP_FAST_3 #define OPT_241x_ACELP_FAST /* VA: basop issue 2426, optimisation of acelp_fast_fx ( reduc. compl. by 0.35 wmops ) */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading
lib_enc/cod4t64_fast_fx.c +1 −33 Original line number Diff line number Diff line Loading @@ -321,16 +321,11 @@ void acelp_fast_fx( IF( s64 ) { Word16 new_exp1 = W_norm( s64 ); #ifdef OPT_241x_ACELP_FAST_2 dndn_fx = W_extract_h( W_shl( s64, new_exp1 ) ); // exp1 - 31 dndn_e = sub( 63 - 1, new_exp1 ); #else dndn_fx = W_extract_h( W_shl( s64, new_exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifndef OPT_241x_ACELP_FAST dndn_e = sub( 31, sub( add( add( shl( Q_dn, 1 ), 1 ), new_exp1 ), 32 ) ); #else dndn_e = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), new_exp1 ), 32 ) ); #endif #endif } Loading @@ -356,16 +351,11 @@ void acelp_fast_fx( IF( s64 ) { Word16 new_exp1 = W_norm( s64 ); #ifdef OPT_241x_ACELP_FAST_2 cncn_track[q] = W_extract_h( W_shl( s64, new_exp1 ) ); // exp1 - 31 cncn_track_e[q] = sub( 63 - 1, new_exp1 ); #else cncn_track[q] = W_extract_h( W_shl( s64, new_exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifndef OPT_241x_ACELP_FAST cncn_track_e[q] = sub( 31, sub( add( add( shl( q_cn, 1 ), 1 ), new_exp1 ), 32 ) ); #else cncn_track_e[q] = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), new_exp1 ), 32 ) ); #endif #endif } cncn_fx = BASOP_Util_Add_Mant32Exp( cncn_fx, cncn_e, cncn_track[q], cncn_track_e[q], &cncn_e ); // Q(cncn_e) Loading Loading @@ -503,7 +493,7 @@ void acelp_fast_fx( test(); test(); /* skip certain tracks if number of pulses is lower than number of tracks */ #ifdef OPT_241x_ACELP_FAST_3 #ifdef OPT_241x_ACELP_FAST /* Just need a negative number, it doesn't need to be scaled */ IF( EQ_16( nb_pulse, 2 ) && EQ_16( nb_tracks, NB_TRACK_FCB_4T ) ) { max_track[NB_TRACK_FCB_4T - 3] = L_deposit_l( -1 ); Loading @@ -528,24 +518,14 @@ void acelp_fast_fx( #else IF( EQ_16( nb_pulse, 2 ) && EQ_16( nb_tracks, NB_TRACK_FCB_4T ) ) { #ifndef OPT_241x_ACELP_FAST max_track[NB_TRACK_FCB_4T - 3] = L_shl( -1, Q_dn ); // Q_dn move32(); max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dn ); // Q_dn #else max_track[NB_TRACK_FCB_4T - 3] = L_shl( -1, Q_dncn ); // Q_dn move32(); max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } ELSE IF( EQ_16( nb_pulse, 3 ) && EQ_16( codetrackpos, TRACKPOS_FIXED_FIRST ) ) { #ifndef OPT_241x_ACELP_FAST max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dn ); // Q_dn #else max_track[NB_TRACK_FCB_4T - 1] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } Loading @@ -554,11 +534,7 @@ void acelp_fast_fx( i = maximum_32_fx( max_track, nb_tracks, &L_tmp1 ); track_order[q] = i; move16(); #ifndef OPT_241x_ACELP_FAST max_track[i] = L_shl( -1, Q_dn ); // Q_dn #else max_track[i] = L_shl( -1, Q_dncn ); // Q_dn #endif move32(); } #endif Loading Loading @@ -713,14 +689,10 @@ void acelp_fast_fx( } exp1 = W_norm( s64 ); dndn_fx = W_extract_h( W_shl( s64, exp1 ) ); // 2 * Q_dyn + exp1 - 31 #ifdef OPT_241x_ACELP_FAST_2 dndn_e = sub( 63 - 1, exp1 ); #else #ifndef OPT_241x_ACELP_FAST dndn_e = sub( 31, sub( add( add( shl( Q_dn, 1 ), 1 ), exp1 ), 32 ) ); #else dndn_e = sub( 31, sub( add( add( shl( Q_dncn, 1 ), 1 ), exp1 ), 32 ) ); #endif #endif IF( dndn_fx == 0 ) { Loading Loading @@ -1058,14 +1030,10 @@ void acelp_fast_fx( s64 = W_mult0_32_32( crit_num, crit_num ); // 2*Q_dn exp = W_norm( s64 ); crit_num = W_extract_h( W_shl( s64, exp ) ); // 2*Q_dn + exp - 32 #ifdef OPT_241x_ACELP_FAST_2 q_crit_num = sub( exp, 32 ); #else #ifndef OPT_241x_ACELP_FAST q_crit_num = add( shl( Q_dn, 1 ), sub( exp, 32 ) ); #else q_crit_num = add( shl( Q_dncn, 1 ), sub( exp, 32 ) ); #endif #endif // crit_den = sum2_fx( y_tmp, L_subfr ); // 2*q_H s64 = 0; Loading