From bbc3749eb6f7bea239d293c7c0e463a543bce113 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 11:08:21 +0200 Subject: [PATCH 01/16] added macro in options.h --- lib_com/options.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_com/options.h b/lib_com/options.h index 49f6e68e9..42437ae2f 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -75,6 +75,7 @@ #define ISSUE_1796_replace_shl_o /* FhG: replace shl_ro by overflow-free alternatives - BE*/ #define ISSUE_1836_replace_overflow_libcom /* FhG: replace overflow operators by non-overflow-alternatives - BE */ +#define ISSUE_1836_replace_overflow_libcom__remnant /* FhG: replace remaining overflow operators by non-overflow-alternatives in lib_com - BE */ #define ISSUE_1866_replace_overflow_libdec /* FhG: BE - Replace BASOPoverflow operators all over the lib_dec module if Overflow result is not used */ #define FIX_1917_DIRAC_RENDER_PTR_INCR /* FhG: fix wrong pointer increment in ivas_dirac_dec_render_sf_fx() for object rendering */ -- GitLab From 7d63fe2de64eb0906ba0ab290a1c18fe448a6942 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 11:16:21 +0200 Subject: [PATCH 02/16] replace old macros with '__remmnant' macros --- lib_com/weight_a_fx.c | 6 + lib_com/wi_fx.c | 418 +++++++++++++++++++++++++++++++++++++----- lib_com/window_fx.c | 13 +- 3 files changed, 392 insertions(+), 45 deletions(-) diff --git a/lib_com/weight_a_fx.c b/lib_com/weight_a_fx.c index 7bea66ea0..9f11efcde 100644 --- a/lib_com/weight_a_fx.c +++ b/lib_com/weight_a_fx.c @@ -100,10 +100,12 @@ void weight_a_fx( Word16 i, fac; Word32 Amax; Word16 shift; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow; Overflow = 0; move32(); +#endif #endif fac = gamma; /* Q15 */ @@ -122,7 +124,11 @@ void weight_a_fx( move16(); FOR( i = 1; i < m; i++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + ap[i] = round_fx_sat( L_shl( L_mult0( a[i], fac ), shift ) ); /* Q11 + shift */ //??sat +#else ap[i] = round_fx_o( L_shl( L_mult0( a[i], fac ), shift ), &Overflow ); /* Q11 + shift */ +#endif move16(); fac = mult_r( fac, gamma ); /* Q15 */ } diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 5a8ad35c5..16709e272 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -264,9 +264,11 @@ static Word16 DTFS_alignment_weight_fx( Word16 tmplpc_fx[M + 1]; Word16 exp, tmp; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif diff_fx = 0; /* to avoid compilation warnings */ move16(); @@ -320,10 +322,17 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + ab1[k] = round_fx_sat( L_mac0_sat( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k] ) ); /* Q(-15) */ //??sat + ab2[k] = round_fx_sat( L_msu0_sat( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k] ) ); /* Q(-15) */ //??sat + move16(); + move16(); +#else ab1[k] = round_fx_o( L_mac0_o( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ ab2[k] = round_fx_o( L_msu0_o( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ move16(); move16(); +#endif } start = sub( Eshift, Adiff_fx ); @@ -344,8 +353,13 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + corr_fx = L_mac0_sat( corr_fx, ab1[k], cos_table[s_and( temp, 511 )] ); //??sat + corr_fx = L_mac0_sat( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )] ); //??sat +#else corr_fx = L_mac0_o( corr_fx, ab1[k], cos_table[s_and( temp, 511 )], &Overflow ); corr_fx = L_mac0_o( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )], &Overflow ); +#endif move32(); move32(); temp = add( temp, temp1 ); @@ -358,12 +372,20 @@ static Word16 DTFS_alignment_weight_fx( move16(); } - temp1 = round_fx_o( (Word32) L_shl_o( corr_fx, Qcorr, &Overflow ), &Overflow ); /* Q(Qcorr-16) */ -#ifdef ISSUE_1796_replace_shl_o - wcorr_fx = L_mult_o( temp1, shl_sat( temp, 2 ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + temp1 = round_fx_sat( (Word32) L_shl_sat( corr_fx, Qcorr ) ); /* Q(Qcorr-16) */ //??sat //??sat + wcorr_fx = L_mult_sat( temp1, shl_sat( temp, 2 ) ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ //??sat //!!sat + IF( GE_16( Qmaxcorr, Qcorr ) ) + { + diff_corr = L_sub_sat( wcorr_fx, L_shl_sat( maxcorr_fx, sub( Qcorr, Qmaxcorr ) ) ); /* Qcorr */ + } + ELSE + { + diff_corr = L_sub_sat( L_shl_sat( wcorr_fx, sub( Qmaxcorr, Qcorr ) ), maxcorr_fx ); /* Qmaxcorr */ + } #else - wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ -#endif + temp1 = round_fx_o( (Word32) L_shl_o( corr_fx, Qcorr, &Overflow ), &Overflow ); /* Q(Qcorr-16) */ + wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ IF( GE_16( Qmaxcorr, Qcorr ) ) { diff_corr = L_sub_o( wcorr_fx, L_shl_o( maxcorr_fx, sub( Qcorr, Qmaxcorr ), &Overflow ), &Overflow ); /* Qcorr */ @@ -372,6 +394,7 @@ static Word16 DTFS_alignment_weight_fx( { diff_corr = L_sub_o( L_shl_o( wcorr_fx, sub( Qmaxcorr, Qcorr ), &Overflow ), maxcorr_fx, &Overflow ); /* Qmaxcorr */ } +#endif IF( diff_corr > 0 ) { @@ -421,9 +444,11 @@ Word16 DTFS_alignment_full_fx( Word16 n, fshift_fx; Word32 corr_fx, maxcorr_fx; Word16 Eshift, Adiff_fx; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif /* Calculating the expected alignment shift */ @@ -457,8 +482,13 @@ Word16 DTFS_alignment_full_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + ab1[k] = round_fx_sat( L_mac_sat( L_mult_sat( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat + ab2[k] = round_fx_sat( L_msu_sat( L_mult_sat( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat +#else ab1[k] = round_fx_o( L_mac_o( L_mult_o( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ ab2[k] = round_fx_o( L_msu_o( L_mult_o( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ +#endif } IF( FR_flag == 0 ) { @@ -488,9 +518,15 @@ Word16 DTFS_alignment_full_fx( temp1 = add( n, shl( X2_DTFS_fx.lag_fx, 1 ) ); /* add lag_fx in Q1to make positive */ FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + corr_fx = L_mac_sat( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat + corr_fx = L_mac_sat( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat + temp = add_sat( temp, temp1 ); //??sat +#else corr_fx = L_mac_o( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); corr_fx = L_mac_o( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); temp = add_o( temp, temp1, &Overflow ); +#endif } IF( GT_32( corr_fx, maxcorr_fx ) ) @@ -596,9 +632,11 @@ void Q2phaseShift_fx( Word16 k; Word16 temp, HalfLag; Word32 temp2; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif temp2 = L_deposit_l( 0 ); @@ -610,9 +648,15 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat //??sat //??sat + X_fx->b_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat //??sat //??sat + temp2 = L_add_sat( temp2, (Word32) ph ); //??sat +#else X_fx->a_fx[k] = round_fx_o( L_msu_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_mac_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = L_add_o( temp2, (Word32) ph, &Overflow ); +#endif move16(); move16(); } @@ -624,9 +668,15 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat + X_fx->b_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat + temp2 = add_sat( (Word16) temp2, negate( ph ) ); //??sat +#else X_fx->a_fx[k] = round_fx_o( L_mac_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_msu_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = add_o( (Word16) temp2, negate( ph ), &Overflow ); +#endif move16(); move16(); } @@ -730,9 +780,11 @@ void DTFS_to_fs_fx( Word32 La[MAXLAG_WI], Lb[MAXLAG_WI], Labmax; Word16 exp, tmp; Word32 L_tmp1; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif IF( !FR_flag ) @@ -769,7 +821,16 @@ void DTFS_to_fs_fx( move16(); exp = norm_s( X_fx->lag_fx ); - tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ + tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp1 = L_mult( 12800, tmp ); /* Q(30-exp) */ + diff_fx = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat + + exp = norm_s( diff_fx ); + tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ + L_tmp1 = L_mult_sat( X_fx->upper_cut_off_freq_fx, tmp ); /* Q(30-exp) */ //??sat + nH_band = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat +#else L_tmp1 = L_mult_o( 12800, tmp, &Overflow ); /* Q(30-exp) */ diff_fx = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ @@ -777,7 +838,8 @@ void DTFS_to_fs_fx( tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ L_tmp1 = L_mult_o( X_fx->upper_cut_off_freq_fx, tmp, &Overflow ); /* Q(30-exp) */ nH_band = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ - nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ +#endif + nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ if ( GE_16( sub( X_fx->upper_cut_off_freq_fx, shr( (Word16) L_mult( diff_fx, nH_band ), 1 ) ), diff_fx ) ) { @@ -800,8 +862,13 @@ void DTFS_to_fs_fx( exp = norm_s( N ); tmp = div_s( shl( 1, ( sub( 14, exp ) ) ), N ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp = L_shl_sat( tmp, add( exp, 6 ) ); //??sat + inv_lag = round_fx_sat( L_tmp ); //??sat +#else L_tmp = L_shl_o( tmp, add( exp, 6 ), &Overflow ); inv_lag = round_fx_o( L_tmp, &Overflow ); +#endif Lx0 = L_deposit_h( x[0] ); Labmax = L_deposit_l( 0 ); FOR( k = 1; k <= nH; k++ ) @@ -815,8 +882,13 @@ void DTFS_to_fs_fx( move16(); FOR( n = 1; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac0_sat( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*cos(sum) */ //??sat + L_b = L_mac0_sat( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*sin(sum) */ //??sat +#else L_a = L_mac0_o( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*cos(sum) */ L_b = L_mac0_o( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*sin(sum) */ +#endif sum = add( sum, temp ); } La[k] = L_shr( L_a, 6 ); /* Q8 of a[k]*2.0 */ @@ -853,13 +925,22 @@ void DTFS_to_fs_fx( temp_neg = negate( temp ); FOR( n = 0; n < N - 1; n += 2 ) { - L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat + L_a = L_mac_sat( L_a, x[n + 1], temp_neg ); //??sat +#else + L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ L_a = L_mac_o( L_a, x[n + 1], temp_neg, &Overflow ); +#endif /*temp= negate(temp); */ } if ( s_and( N, 1 ) ) /*if N is odd we need to calculate last */ { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat +#else L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ +#endif } La[k] = L_shl( L_a, 7 ); @@ -884,6 +965,30 @@ void DTFS_to_fs_fx( move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + FOR( k = 1; k <= nH; k++ ) + { + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + move16(); + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*2.0/N */ + X_fx->b_fx[k] = round_fx_sat( L_shl_sat( Lb[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + move16(); + X_fx->b_fx[k] = mult_r_sat( X_fx->b_fx[k], inv_lag ); //??sat + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of b[k]*2.0/N */ + } + + /* IF ( N%2 == 0 ) */ + IF( s_and( N, 1 ) == 0 ) + { + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat + move16(); + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*1.0/N */ + X_fx->b_fx[k] = 0; + move16(); + } +#else FOR( k = 1; k <= nH; k++ ) { X_fx->a_fx[k] = round_fx_o( L_shl_o( La[k], temp, &Overflow ), &Overflow ); /* Q(8+temp-16)=Q(temp-8) */ @@ -906,6 +1011,7 @@ void DTFS_to_fs_fx( X_fx->b_fx[k] = 0; move16(); } +#endif X_fx->Q = sub( temp, 4 ); move16(); @@ -1201,9 +1307,11 @@ void DTFS_zeroFilter_fx( Word16 temp, temp1, temp2; Word32 L_temp1, L_temp2; Word16 Qmin, Qab[MAXLAG_WI], na, nb; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif Qmin = 32767; move16(); @@ -1221,6 +1329,22 @@ void DTFS_zeroFilter_fx( FOR( n = 0; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); //??sat + temp2 = add( temp2, temp ); + } + + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + + /* Calculate the circular convolution */ + L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); + L_temp1 = L_msu_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1) */ //??sat + L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); + + L_temp2 = L_mac_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1) */ //??sat +#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); temp2 = add( temp2, temp ); @@ -1233,7 +1357,8 @@ void DTFS_zeroFilter_fx( L_temp1 = L_mult_o( temp1, X_fx->a_fx[k], &Overflow ); L_temp1 = L_msu_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1) */ L_temp2 = L_mult_o( temp1, X_fx->b_fx[k], &Overflow ); - L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ + L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ +#endif /* normalization */ na = norm_l( L_temp1 ); if ( L_temp1 == 0 ) @@ -1253,8 +1378,13 @@ void DTFS_zeroFilter_fx( nb = na; move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp1, nb ) ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ //??sat + X_fx->b_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp2, nb ) ); /* Q(Q+nb-3) */ //??sat +#else X_fx->a_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp1, nb, &Overflow ), &Overflow ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ X_fx->b_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp2, nb, &Overflow ), &Overflow ); /* Q(Q+nb-3) */ +#endif move32(); move32(); @@ -1270,14 +1400,14 @@ void DTFS_zeroFilter_fx( /* bring to the same Q */ FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1796_replace_shl_o - X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); //??sat #else X_fx->a_fx[k] = shl_o( X_fx->a_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif move16(); /* Q(Q+Qab[k]+Qmin-Qab[k]=Q(Q+Qmin) */ -#ifdef ISSUE_1796_replace_shl_o - X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); //??sat #else X_fx->b_fx[k] = shl_o( X_fx->b_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif @@ -1525,9 +1655,11 @@ Word32 DTFS_getEngy_fx( Word32 en_fx = 0; move32(); Word16 temp_a_fx, temp_b_fx; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); @@ -1537,15 +1669,23 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); +#endif } en_fx = L_shr( en_fx, 1 ); temp_a_fx = X_fx->a_fx[0]; move16(); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); +#endif /* IF (X_fx->lag_fx%2 == 0) */ IF( s_and( X_fx->lag_fx, 1 ) == 0 ) { @@ -1553,9 +1693,13 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); +#endif } return en_fx; /* 2*X1.Q+1=Q13 */ @@ -1586,6 +1730,23 @@ Word32 DTFS_getEngy_P2A_fx( Word16 k, HalfLag_fx; Word32 en_fx = 0; move32(); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); + HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); + FOR( k = 1; k <= HalfLag_fx; k++ ) + { + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + } + en_fx = L_shr( en_fx, 1 ); + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[0], X_fx->a_fx[0] ); //??sat + /* IF (X_fx->lag_fx%2 == 0) */ + IF( s_and( X_fx->lag_fx, 1 ) == 0 ) + { + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + } +#else #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -1605,7 +1766,7 @@ Word32 DTFS_getEngy_P2A_fx( en_fx = L_mac0_o( en_fx, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); en_fx = L_mac0_o( en_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); } - +#endif return en_fx; /* 2*X1.Q */ } @@ -1732,17 +1893,23 @@ void DTFS_car2pol_fx( Word32 Ltemp_fx; Word32 Lacc_fx; Word16 exp, tmp, frac; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag_fx = s_min( shr( sub( X_fx->lag_fx, 1 ), 1 ), X_fx->nH_fx ); FOR( k = 1; k <= HalfLag_fx; k++ ) { - Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ + Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc_fx = L_mac_sat( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); /* a[k]^2+b[k]^2, 2Q+1 */ //??sat +#else Lacc_fx = L_mac_o( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); /* a[k]^2+b[k]^2, 2Q+1 */ - Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ +#endif + Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ IF( Lacc_fx ) { @@ -1849,10 +2016,12 @@ Word32 DTFS_setEngyHarm_fx( move32(); Word16 expp = 0; move16(); +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif +#endif f_low_fx = mult( f1_fx, X_fx->lag_fx ); /* Q0 */ @@ -1864,7 +2033,11 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { - Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_mac0_sat( Lacc, X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*X1.Q */ //??sat +#else + Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ +#endif Lacc_max = L_max( Lacc_max, Lacc ); count = add( count, 1 ); @@ -1879,8 +2052,13 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp = L_mult_sat( X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + Lacc = L_add_sat( Lacc, L_shr( L_tmp, expp ) ); /* 2*X1.Q-expp */ //??sat +#else L_tmp = L_mult_o( X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); Lacc = L_add_o( Lacc, L_shr( L_tmp, expp ), &Overflow ); /* 2*X1.Q-expp */ +#endif count = add( count, 1 ); } } @@ -1893,7 +2071,11 @@ Word32 DTFS_setEngyHarm_fx( exp = norm_s( count ); tmp = div_s( shl( 1, sub( 14, exp ) ), count ); /* 29 - exp */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en1_fx = L_shl_sat( Mult_32_16( Lacc, tmp ), sub( exp, 14 ) ); //??sat +#else en1_fx = L_shl_o( Mult_32_16( Lacc, tmp ), sub( exp, 14 ), &Overflow ); +#endif test(); IF( en1_fx > 0 && en2_fx > 0 ) { @@ -1904,7 +2086,11 @@ Word32 DTFS_setEngyHarm_fx( expb = norm_l( en1_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = round_fx_sat( L_shl( en1_fx, expb ) ); //??sat +#else fracb = round_fx_o( L_shl_o( en1_fx, expb, &Overflow ), &Overflow ); +#endif IF( GE_32( Lacc_max, 2147483647 /*1.Q31*/ ) ) { expb = sub( 30, add( expb, sub( shl( X_fx->Q, 1 ), expp ) ) ); @@ -1942,7 +2128,11 @@ Word32 DTFS_setEngyHarm_fx( { /*L_temp_fx =(Word32)Mpy_32_16(extract_h(factor_fx),extract_l(factor_fx), X_fx->a_fx[k]); move32(); */ /* Q(temp+X1.Q-15) */ L_temp_fx = Mult_32_16( factor_fx, X_fx->a_fx[k] ); /* Q(temp+X1.Q-15) */ - X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_temp_fx ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ //??sat +#else + X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ +#endif move16(); } @@ -2006,9 +2196,11 @@ static void cubicPhase_fx( Word16 num_flag, den_flag; Word32 N2; Word16 dbgshft; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif num_flag = 0; move16(); @@ -2077,8 +2269,11 @@ static void cubicPhase_fx( Ltemp3 = L_mult( N, c1 ); /* Q20 */ Ltemp3 = L_sub( Ltemp3, L_shl( Ltemp1, 1 ) ); /* Ltemp3=N*c1-2*Ltemp1, Q20 */ - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + IF( GE_32( L_abs( Ltemp3 ), L_shl_sat( Ltemp2, 8 ) ) ) //??sat +#else IF( GE_32( L_abs( Ltemp3 ), L_shl_o( Ltemp2, 8, &Overflow ) ) ) +#endif { Lacc = L_add( MIN_32, 0 ); if ( Ltemp3 > 0 ) @@ -2091,7 +2286,11 @@ static void cubicPhase_fx( ELSE { expa = norm_l( Ltemp3 ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( Ltemp3, expa ) ); +#else fraca = extract_h( L_shl_o( Ltemp3, expa, &Overflow ) ); +#endif expa = sub( 30, add( expa, 20 ) ); if ( fraca < 0 ) { @@ -2100,7 +2299,11 @@ static void cubicPhase_fx( } expb = norm_l( Ltemp2 ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = extract_h( L_shl( Ltemp2, expb ) ); //??sat +#else fracb = extract_h( L_shl_o( Ltemp2, expb, &Overflow ) ); +#endif expb = sub( 30, expb ); if ( fracb < 0 ) { @@ -2117,8 +2320,8 @@ static void cubicPhase_fx( fracb = negate( fracb ); } scale = shr( sub( fracb, fraca ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fraca = shl_sat( fraca, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = shl_sat( fraca, scale ); //??sat #else fraca = shl_o( fraca, scale, &Overflow ); #endif @@ -2137,8 +2340,13 @@ static void cubicPhase_fx( tmp = negate( tmp ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_shl_sat( tmp, add( exp, 34 ) ); //??sat + Lacc = L_add_sat( Lacc, 0x08000 ); //??sat +#else Lacc = L_shl_o( tmp, add( exp, 34 ), &Overflow ); Lacc = L_add_o( Lacc, 0x08000, &Overflow ); +#endif c0 = extract_h( Lacc ); /* c0 in Q33 */ } @@ -2264,7 +2472,11 @@ static void cubicPhase_fx( Ltemp3 = L_add( Ltemp3, 1 ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp3 = L_shl_sat( Mult_32_16( L_shl_sat( Ltemp3, 7 ), c0 ), 2 ); /* Ltemp3=c0*n^3, Q27 */ //??sat //?sat +#else Ltemp3 = L_shl_o( Mult_32_16( L_shl_o( Ltemp3, 7, &Overflow ), c0 ), 2, &Overflow ); /* Ltemp3=c0*n^3, Q27 */ +#endif Ltemp2 = L_shl( Mult_32_16( N2, c1 ), 1 ); /* Ltemp2 = (Word32)L_mult_su(c1,(UNS_Word16)n2); : Ltemp2=c1*n^2, Q27 */ Ltemp1 = L_shl( L_mult( c2, n ), 7 ); /* Ltemp1=c2*n, Q27 */ @@ -2322,9 +2534,11 @@ void DTFS_to_erb_fx( Word32 sum_a_fx[NUM_ERB_WB], Ltemp_fx, L_tmp, L_temp; Word16 exp, tmp; Word16 expa, expb, fraca, fracb, scale; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif const Word16 *erb_fx = NULL; num_erb_fx = NUM_ERB_NB; @@ -2390,7 +2604,11 @@ void DTFS_to_erb_fx( FOR( i = 0; i < num_erb_fx; i++ ) { - out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + out_fx[i] = round_fx_sat( L_shl_sat( sum_a_fx[i], n ) ); /* Q13 */ //?�sat //??sat +#else + out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ +#endif move16(); IF( GT_16( count[i], 1 ) ) { @@ -2462,9 +2680,11 @@ void erb_slot_fx( Word16 exp, tmp; Word32 L_tmp1, L_tmp; Word16 fraca, fracb, expa, expb, scale; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif const Word16 *erb_fx = NULL; /*move16(); */ @@ -2547,7 +2767,33 @@ void erb_slot_fx( } FOR( j = 0; j < num_erb_fx; j++ ) { - mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + mfreq_fx[j] = round_fx_sat( L_shl_sat( mf_fx[j], 11 ) ); /* Q15 */ //??sat //??sat + move16(); + IF( GT_16( out_fx[j], 1 ) ) + { + expb = norm_l( mf_fx[j] ); + fracb = round_fx_sat( L_shl_sat( mf_fx[j], expb ) ); //??sat //??sat + expb = sub( 30, add( expb, 20 ) ); + + + expa = norm_l( out_fx[j] ); + fraca = extract_h( L_shl( out_fx[j], expa ) ); + expa = sub( 30, expa ); + + scale = shr( sub( fraca, fracb ), 15 ); + fracb = shl( fracb, scale ); + expb = sub( expb, scale ); + + tmp = div_s( fracb, fraca ); + exp = sub( expb, expa ); + L_tmp = L_shl_sat( tmp, add( exp, 16 ) ); //??sat + + mfreq_fx[j] = round_fx_sat( L_tmp ); //??sat + move16(); + } +#else + mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ move16(); IF( GT_16( out_fx[j], 1 ) ) { @@ -2571,6 +2817,7 @@ void erb_slot_fx( mfreq_fx[j] = round_fx_o( L_tmp, &Overflow ); move16(); } +#endif } return; } @@ -2620,9 +2867,11 @@ void DTFS_erb_inv_fx( move16(); move16(); move16(); +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif IF( EQ_16( num_erb_fx, NUM_ERB_NB ) ) @@ -2708,7 +2957,11 @@ void DTFS_erb_inv_fx( d2h = 31; move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[i] = round_fx_sat( L_shl_sat( Ltemp_fx, d2h ) ); /* Q(28-n+d2h) */ //??sat //??sat +#else X_fx->a_fx[i] = round_fx_o( L_shl_o( Ltemp_fx, d2h, &Overflow ), &Overflow ); /* Q(28-n+d2h) */ +#endif move16(); q[i] = add( sub( 28, n ), d2h ); move16(); @@ -3450,9 +3703,11 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W Word16 expa, expb, fraca, fracb, scale; Word16 exp, tmp; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif L_sum = DTFS_getEngy_P2A_fx( &X_fx ); /* 2Q */ DTFS_fast_fs_inv_fx( &X_fx, time_fx, 256, 8 ); @@ -3497,18 +3752,28 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W ELSE { expa = norm_l( maxPosEn_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( maxPosEn_fx, expa ) ); + expa = sub( 30, add( expa, 1 ) ); + + + expb = norm_l( L_sum ); + fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat +#else fraca = extract_h( L_shl_o( maxPosEn_fx, expa, &Overflow ) ); expa = sub( 30, add( expa, 1 ) ); expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); +#endif + expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fracb = shl_sat( fracb, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = shl_sat( fracb, scale ); //??sat #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -3535,18 +3800,27 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W { expa = norm_l( maxNegEn_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( maxNegEn_fx, expa ) ); //??sat + expa = sub( Q29, expa ); // 30 - expa - 1; + + + expb = norm_l( L_sum ); + fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat +#else fraca = extract_h( L_shl_o( maxNegEn_fx, expa, &Overflow ) ); expa = sub( Q29, expa ); // 30 - expa - 1; expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); +#endif expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fracb = shl_sat( fracb, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = shl_sat( fracb, scale ); //??sat #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -4029,9 +4303,11 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Word32 Ltemp_fx, L_tmp; Word32 Lacc_fx; Word16 exp, tmp, exp1; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif retX_fx->lag_fx = X1_fx->lag_fx; @@ -4042,8 +4318,13 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE FOR( k = 1; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc_fx = L_mult_sat( X1_fx->a_fx[k], X1_fx->a_fx[k] ); //??sat + Lacc_fx = L_mac_sat( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k] ); /* 2*Q+1 */ //??sat +#else Lacc_fx = L_mult_o( X1_fx->a_fx[k], X1_fx->a_fx[k], &Overflow ); - Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ + Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ +#endif exp = norm_l( Lacc_fx ); tmp = extract_h( L_shl( Lacc_fx, exp ) ); @@ -4085,6 +4366,17 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE d1h = extract_h( Ltemp_fx ); d1l = extract_l( Ltemp_fx ); Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat + sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + retX_fx->b_fx[k] = mult_r( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ + move16(); + + Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat + cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + retX_fx->a_fx[k] = mult_r( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ +#else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ sn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->b_fx[k] = mult_ro( X2_fx.a_fx[k], sn, &Overflow ); /* X2_fx.Q */ @@ -4094,6 +4386,7 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->a_fx[k], d1h, &Overflow ), &Overflow ); /* cos(w) in Q(q+Q+1) */ cn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->a_fx[k] = mult_ro( X2_fx.a_fx[k], cn, &Overflow ); /* X2_fx.Q */ +#endif move16(); } k = sub( k, 1 ); @@ -4147,9 +4440,11 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, Word32 en; Word16 exp, tmp, expa, fraca, expb, fracb, scale; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif en = L_deposit_l( 0 ); @@ -4185,8 +4480,12 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Re */ - Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ - n = add( n, k4 ); /* n=4*i*k */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_mac_sat( Lacc, curr_lpc[i], cos_tab[n % M_fx] ); /* Q28 */ //??sat +#else + Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ +#endif + n = add( n, k4 ); /* n=4*i*k */ } Re = L_shr( Lacc, 1 ); /* Q27 */ @@ -4196,13 +4495,21 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Im */ - Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ - n = add( n, k4 ); /* n=4*i*k */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_msu_sat( Lacc, curr_lpc[i], sin_tab[n % M_fx] ); /* Q28 */ //??sat +#else + Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ +#endif + n = add( n, k4 ); /* n=4*i*k */ } - Im = L_shr( Lacc, 1 ); /* Q27 */ - /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ - Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ - Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ + Im = L_shr( Lacc, 1 ); /* Q27 */ + /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_add_sat( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ) ); /* Lacc=Re^2+Im^2 in Q23 */ //??sat +#else + Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ +#endif + Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ /* Ltemp=(Word32)L_sat32_40(divide_dp(Ltemp,Lacc,-19,1)); : Ltemp in Q(2Q-13) */ if ( Lacc < 0 ) @@ -4228,7 +4535,11 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, tmp = div_s( fracb, fraca ); /* 15-exp */ exp = sub( expb, expa ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp = L_shl_sat( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ) ); //??sat +#else Ltemp = L_shl_o( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ), &Overflow ); +#endif } ELSE { @@ -4277,9 +4588,11 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ Word16 k, n, na, nb; Word16 Qmin, Qab[MAXLAG_WI]; Word16 exp, tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif Qmin = 32767; move16(); @@ -4294,21 +4607,37 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat +#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ +#endif temp2 = add( temp2, k ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + /* Calculate the circular convolution */ + sum = L_mac_sat( L_mult( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ - temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ - temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ + L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); + L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat + L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); + L_temp2 = L_msu_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat +#else + temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ + temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ /* Calculate the circular convolution */ sum = L_mac_o( L_mult_o( temp1, temp1, &Overflow ), temp2, temp2, &Overflow ); /* Q(12+12+1)=Q(25) */ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); L_temp1 = L_mac_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ + L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ +#endif IF( sum ) { exp = norm_l( sum ); @@ -4407,9 +4736,11 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word Word32 sum; Word16 k, n, n1, n2; Word16 exp, tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag = s_min( shr( X_fx.lag_fx, 1 ), X_fx.nH_fx ); @@ -4423,8 +4754,13 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { +#ifndef ISSUE_1836_replace_overflow_libcom__remnant sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ +#else + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat +#endif temp2 = add( temp2, k ); } diff --git a/lib_com/window_fx.c b/lib_com/window_fx.c index 84302ff08..a182719fb 100644 --- a/lib_com/window_fx.c +++ b/lib_com/window_fx.c @@ -20,7 +20,6 @@ #include "rom_basop_util.h" #include "prot_fx.h" - void ham_cos_window( Word16 *fh, /* o: 0Q15 */ const Word16 n1, /* i: */ @@ -29,10 +28,12 @@ void ham_cos_window( { Word16 i; Word32 cte, cc; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); #endif +#endif assert( n1 >= 102 ); /* if n1 is too low -> overflow in div_l */ @@ -46,7 +47,11 @@ void ham_cos_window( { /* fh_f[i] = 0.54f - 0.46f * (Float32)cos(cc); */ BASOP_SATURATE_WARNING_OFF_EVS +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fh[i] = sub_sat( P54_0Q15, mult_r( getCosWord16( round_fx_sat( L_shl_sat( cc, 9 ) ) ), P92_0Q15 ) ); /*0Q15*/ //??sat //??sat //??sat +#else fh[i] = sub_o( P54_0Q15, mult_r( getCosWord16( round_fx_o( L_shl_o( cc, 9, &Overflow ), &Overflow ) ), P92_0Q15 ), &Overflow ); /*0Q15*/ +#endif move16(); BASOP_SATURATE_WARNING_ON_EVS cc = L_add( cc, cte ); /*0Q15*/ @@ -63,10 +68,10 @@ void ham_cos_window( FOR( i = n1; i < n1 + n2; i++ ) { /* fh_f[i] = (Float32)cos(cc); */ -#ifdef ISSUE_1796_replace_shl_o - fh[i] = shl_sat( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1 ); /*0Q15*/ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fh[i] = shl_sat( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1 ); /*0Q15*/ //??sat #else - fh[i] = shl_o( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1, &Overflow ); /*0Q15*/ + fh[i] = shl_o( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1, &Overflow ); /*0Q15*/ #endif move16(); cc = L_add( cc, cte ); -- GitLab From eeee0fd7ea5af4409da4f5bb918c380e0802092c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 12:20:15 +0200 Subject: [PATCH 03/16] use wi_fx from main - return rev 7d63fe --- lib_com/wi_fx.c | 418 +++++------------------------------------------- 1 file changed, 41 insertions(+), 377 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 16709e272..5a8ad35c5 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -264,11 +264,9 @@ static Word16 DTFS_alignment_weight_fx( Word16 tmplpc_fx[M + 1]; Word16 exp, tmp; Word32 L_tmp; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif diff_fx = 0; /* to avoid compilation warnings */ move16(); @@ -322,17 +320,10 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - ab1[k] = round_fx_sat( L_mac0_sat( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k] ) ); /* Q(-15) */ //??sat - ab2[k] = round_fx_sat( L_msu0_sat( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k] ) ); /* Q(-15) */ //??sat - move16(); - move16(); -#else ab1[k] = round_fx_o( L_mac0_o( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ ab2[k] = round_fx_o( L_msu0_o( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ move16(); move16(); -#endif } start = sub( Eshift, Adiff_fx ); @@ -353,13 +344,8 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - corr_fx = L_mac0_sat( corr_fx, ab1[k], cos_table[s_and( temp, 511 )] ); //??sat - corr_fx = L_mac0_sat( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )] ); //??sat -#else corr_fx = L_mac0_o( corr_fx, ab1[k], cos_table[s_and( temp, 511 )], &Overflow ); corr_fx = L_mac0_o( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )], &Overflow ); -#endif move32(); move32(); temp = add( temp, temp1 ); @@ -372,20 +358,12 @@ static Word16 DTFS_alignment_weight_fx( move16(); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - temp1 = round_fx_sat( (Word32) L_shl_sat( corr_fx, Qcorr ) ); /* Q(Qcorr-16) */ //??sat //??sat - wcorr_fx = L_mult_sat( temp1, shl_sat( temp, 2 ) ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ //??sat //!!sat - IF( GE_16( Qmaxcorr, Qcorr ) ) - { - diff_corr = L_sub_sat( wcorr_fx, L_shl_sat( maxcorr_fx, sub( Qcorr, Qmaxcorr ) ) ); /* Qcorr */ - } - ELSE - { - diff_corr = L_sub_sat( L_shl_sat( wcorr_fx, sub( Qmaxcorr, Qcorr ) ), maxcorr_fx ); /* Qmaxcorr */ - } -#else temp1 = round_fx_o( (Word32) L_shl_o( corr_fx, Qcorr, &Overflow ), &Overflow ); /* Q(Qcorr-16) */ - wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ +#ifdef ISSUE_1796_replace_shl_o + wcorr_fx = L_mult_o( temp1, shl_sat( temp, 2 ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ +#else + wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ +#endif IF( GE_16( Qmaxcorr, Qcorr ) ) { diff_corr = L_sub_o( wcorr_fx, L_shl_o( maxcorr_fx, sub( Qcorr, Qmaxcorr ), &Overflow ), &Overflow ); /* Qcorr */ @@ -394,7 +372,6 @@ static Word16 DTFS_alignment_weight_fx( { diff_corr = L_sub_o( L_shl_o( wcorr_fx, sub( Qmaxcorr, Qcorr ), &Overflow ), maxcorr_fx, &Overflow ); /* Qmaxcorr */ } -#endif IF( diff_corr > 0 ) { @@ -444,11 +421,9 @@ Word16 DTFS_alignment_full_fx( Word16 n, fshift_fx; Word32 corr_fx, maxcorr_fx; Word16 Eshift, Adiff_fx; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif /* Calculating the expected alignment shift */ @@ -482,13 +457,8 @@ Word16 DTFS_alignment_full_fx( FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - ab1[k] = round_fx_sat( L_mac_sat( L_mult_sat( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat - ab2[k] = round_fx_sat( L_msu_sat( L_mult_sat( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat -#else ab1[k] = round_fx_o( L_mac_o( L_mult_o( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ ab2[k] = round_fx_o( L_msu_o( L_mult_o( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ -#endif } IF( FR_flag == 0 ) { @@ -518,15 +488,9 @@ Word16 DTFS_alignment_full_fx( temp1 = add( n, shl( X2_DTFS_fx.lag_fx, 1 ) ); /* add lag_fx in Q1to make positive */ FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - corr_fx = L_mac_sat( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat - corr_fx = L_mac_sat( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat - temp = add_sat( temp, temp1 ); //??sat -#else corr_fx = L_mac_o( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); corr_fx = L_mac_o( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); temp = add_o( temp, temp1, &Overflow ); -#endif } IF( GT_32( corr_fx, maxcorr_fx ) ) @@ -632,11 +596,9 @@ void Q2phaseShift_fx( Word16 k; Word16 temp, HalfLag; Word32 temp2; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif temp2 = L_deposit_l( 0 ); @@ -648,15 +610,9 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat //??sat //??sat - X_fx->b_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat //??sat //??sat - temp2 = L_add_sat( temp2, (Word32) ph ); //??sat -#else X_fx->a_fx[k] = round_fx_o( L_msu_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_mac_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = L_add_o( temp2, (Word32) ph, &Overflow ); -#endif move16(); move16(); } @@ -668,15 +624,9 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat - X_fx->b_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat - temp2 = add_sat( (Word16) temp2, negate( ph ) ); //??sat -#else X_fx->a_fx[k] = round_fx_o( L_mac_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_msu_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = add_o( (Word16) temp2, negate( ph ), &Overflow ); -#endif move16(); move16(); } @@ -780,11 +730,9 @@ void DTFS_to_fs_fx( Word32 La[MAXLAG_WI], Lb[MAXLAG_WI], Labmax; Word16 exp, tmp; Word32 L_tmp1; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif IF( !FR_flag ) @@ -821,16 +769,7 @@ void DTFS_to_fs_fx( move16(); exp = norm_s( X_fx->lag_fx ); - tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp1 = L_mult( 12800, tmp ); /* Q(30-exp) */ - diff_fx = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat - - exp = norm_s( diff_fx ); - tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ - L_tmp1 = L_mult_sat( X_fx->upper_cut_off_freq_fx, tmp ); /* Q(30-exp) */ //??sat - nH_band = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat -#else + tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ L_tmp1 = L_mult_o( 12800, tmp, &Overflow ); /* Q(30-exp) */ diff_fx = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ @@ -838,8 +777,7 @@ void DTFS_to_fs_fx( tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ L_tmp1 = L_mult_o( X_fx->upper_cut_off_freq_fx, tmp, &Overflow ); /* Q(30-exp) */ nH_band = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ -#endif - nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ + nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ if ( GE_16( sub( X_fx->upper_cut_off_freq_fx, shr( (Word16) L_mult( diff_fx, nH_band ), 1 ) ), diff_fx ) ) { @@ -862,13 +800,8 @@ void DTFS_to_fs_fx( exp = norm_s( N ); tmp = div_s( shl( 1, ( sub( 14, exp ) ) ), N ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp = L_shl_sat( tmp, add( exp, 6 ) ); //??sat - inv_lag = round_fx_sat( L_tmp ); //??sat -#else L_tmp = L_shl_o( tmp, add( exp, 6 ), &Overflow ); inv_lag = round_fx_o( L_tmp, &Overflow ); -#endif Lx0 = L_deposit_h( x[0] ); Labmax = L_deposit_l( 0 ); FOR( k = 1; k <= nH; k++ ) @@ -882,13 +815,8 @@ void DTFS_to_fs_fx( move16(); FOR( n = 1; n < N; n++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac0_sat( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*cos(sum) */ //??sat - L_b = L_mac0_sat( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*sin(sum) */ //??sat -#else L_a = L_mac0_o( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*cos(sum) */ L_b = L_mac0_o( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*sin(sum) */ -#endif sum = add( sum, temp ); } La[k] = L_shr( L_a, 6 ); /* Q8 of a[k]*2.0 */ @@ -925,22 +853,13 @@ void DTFS_to_fs_fx( temp_neg = negate( temp ); FOR( n = 0; n < N - 1; n += 2 ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat - L_a = L_mac_sat( L_a, x[n + 1], temp_neg ); //??sat -#else - L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ + L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ L_a = L_mac_o( L_a, x[n + 1], temp_neg, &Overflow ); -#endif /*temp= negate(temp); */ } if ( s_and( N, 1 ) ) /*if N is odd we need to calculate last */ { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat -#else L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ -#endif } La[k] = L_shl( L_a, 7 ); @@ -965,30 +884,6 @@ void DTFS_to_fs_fx( move16(); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - FOR( k = 1; k <= nH; k++ ) - { - X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat - move16(); - X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat - move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*2.0/N */ - X_fx->b_fx[k] = round_fx_sat( L_shl_sat( Lb[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat - move16(); - X_fx->b_fx[k] = mult_r_sat( X_fx->b_fx[k], inv_lag ); //??sat - move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of b[k]*2.0/N */ - } - - /* IF ( N%2 == 0 ) */ - IF( s_and( N, 1 ) == 0 ) - { - X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat - X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat - move16(); - move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*1.0/N */ - X_fx->b_fx[k] = 0; - move16(); - } -#else FOR( k = 1; k <= nH; k++ ) { X_fx->a_fx[k] = round_fx_o( L_shl_o( La[k], temp, &Overflow ), &Overflow ); /* Q(8+temp-16)=Q(temp-8) */ @@ -1011,7 +906,6 @@ void DTFS_to_fs_fx( X_fx->b_fx[k] = 0; move16(); } -#endif X_fx->Q = sub( temp, 4 ); move16(); @@ -1307,11 +1201,9 @@ void DTFS_zeroFilter_fx( Word16 temp, temp1, temp2; Word32 L_temp1, L_temp2; Word16 Qmin, Qab[MAXLAG_WI], na, nb; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif Qmin = 32767; move16(); @@ -1329,22 +1221,6 @@ void DTFS_zeroFilter_fx( FOR( n = 0; n < N; n++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); //??sat - temp2 = add( temp2, temp ); - } - - temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat - temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat - - /* Calculate the circular convolution */ - L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); - L_temp1 = L_msu_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1) */ //??sat - L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - - L_temp2 = L_mac_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1) */ //??sat -#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); temp2 = add( temp2, temp ); @@ -1357,8 +1233,7 @@ void DTFS_zeroFilter_fx( L_temp1 = L_mult_o( temp1, X_fx->a_fx[k], &Overflow ); L_temp1 = L_msu_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1) */ L_temp2 = L_mult_o( temp1, X_fx->b_fx[k], &Overflow ); - L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ -#endif + L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ /* normalization */ na = norm_l( L_temp1 ); if ( L_temp1 == 0 ) @@ -1378,13 +1253,8 @@ void DTFS_zeroFilter_fx( nb = na; move16(); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp1, nb ) ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ //??sat - X_fx->b_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp2, nb ) ); /* Q(Q+nb-3) */ //??sat -#else X_fx->a_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp1, nb, &Overflow ), &Overflow ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ X_fx->b_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp2, nb, &Overflow ), &Overflow ); /* Q(Q+nb-3) */ -#endif move32(); move32(); @@ -1400,14 +1270,14 @@ void DTFS_zeroFilter_fx( /* bring to the same Q */ FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); //??sat +#ifdef ISSUE_1796_replace_shl_o + X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); #else X_fx->a_fx[k] = shl_o( X_fx->a_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif move16(); /* Q(Q+Qab[k]+Qmin-Qab[k]=Q(Q+Qmin) */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); //??sat +#ifdef ISSUE_1796_replace_shl_o + X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); #else X_fx->b_fx[k] = shl_o( X_fx->b_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif @@ -1655,11 +1525,9 @@ Word32 DTFS_getEngy_fx( Word32 en_fx = 0; move32(); Word16 temp_a_fx, temp_b_fx; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); @@ -1669,23 +1537,15 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat - en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat -#else + en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); -#endif } en_fx = L_shr( en_fx, 1 ); temp_a_fx = X_fx->a_fx[0]; move16(); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat -#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); -#endif /* IF (X_fx->lag_fx%2 == 0) */ IF( s_and( X_fx->lag_fx, 1 ) == 0 ) { @@ -1693,13 +1553,9 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat - en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat -#else + en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); -#endif } return en_fx; /* 2*X1.Q+1=Q13 */ @@ -1730,23 +1586,6 @@ Word32 DTFS_getEngy_P2A_fx( Word16 k, HalfLag_fx; Word32 en_fx = 0; move32(); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); - HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); - FOR( k = 1; k <= HalfLag_fx; k++ ) - { - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat - } - en_fx = L_shr( en_fx, 1 ); - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[0], X_fx->a_fx[0] ); //??sat - /* IF (X_fx->lag_fx%2 == 0) */ - IF( s_and( X_fx->lag_fx, 1 ) == 0 ) - { - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat - } -#else #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -1766,7 +1605,7 @@ Word32 DTFS_getEngy_P2A_fx( en_fx = L_mac0_o( en_fx, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); en_fx = L_mac0_o( en_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); } -#endif + return en_fx; /* 2*X1.Q */ } @@ -1893,23 +1732,17 @@ void DTFS_car2pol_fx( Word32 Ltemp_fx; Word32 Lacc_fx; Word16 exp, tmp, frac; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif HalfLag_fx = s_min( shr( sub( X_fx->lag_fx, 1 ), 1 ), X_fx->nH_fx ); FOR( k = 1; k <= HalfLag_fx; k++ ) { - Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc_fx = L_mac_sat( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); /* a[k]^2+b[k]^2, 2Q+1 */ //??sat -#else + Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ Lacc_fx = L_mac_o( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); /* a[k]^2+b[k]^2, 2Q+1 */ -#endif - Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ + Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ IF( Lacc_fx ) { @@ -2016,12 +1849,10 @@ Word32 DTFS_setEngyHarm_fx( move32(); Word16 expp = 0; move16(); -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif -#endif f_low_fx = mult( f1_fx, X_fx->lag_fx ); /* Q0 */ @@ -2033,11 +1864,7 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_mac0_sat( Lacc, X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*X1.Q */ //??sat -#else - Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ -#endif + Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ Lacc_max = L_max( Lacc_max, Lacc ); count = add( count, 1 ); @@ -2052,13 +1879,8 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp = L_mult_sat( X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - Lacc = L_add_sat( Lacc, L_shr( L_tmp, expp ) ); /* 2*X1.Q-expp */ //??sat -#else L_tmp = L_mult_o( X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); Lacc = L_add_o( Lacc, L_shr( L_tmp, expp ), &Overflow ); /* 2*X1.Q-expp */ -#endif count = add( count, 1 ); } } @@ -2071,11 +1893,7 @@ Word32 DTFS_setEngyHarm_fx( exp = norm_s( count ); tmp = div_s( shl( 1, sub( 14, exp ) ), count ); /* 29 - exp */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - en1_fx = L_shl_sat( Mult_32_16( Lacc, tmp ), sub( exp, 14 ) ); //??sat -#else en1_fx = L_shl_o( Mult_32_16( Lacc, tmp ), sub( exp, 14 ), &Overflow ); -#endif test(); IF( en1_fx > 0 && en2_fx > 0 ) { @@ -2086,11 +1904,7 @@ Word32 DTFS_setEngyHarm_fx( expb = norm_l( en1_fx ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = round_fx_sat( L_shl( en1_fx, expb ) ); //??sat -#else fracb = round_fx_o( L_shl_o( en1_fx, expb, &Overflow ), &Overflow ); -#endif IF( GE_32( Lacc_max, 2147483647 /*1.Q31*/ ) ) { expb = sub( 30, add( expb, sub( shl( X_fx->Q, 1 ), expp ) ) ); @@ -2128,11 +1942,7 @@ Word32 DTFS_setEngyHarm_fx( { /*L_temp_fx =(Word32)Mpy_32_16(extract_h(factor_fx),extract_l(factor_fx), X_fx->a_fx[k]); move32(); */ /* Q(temp+X1.Q-15) */ L_temp_fx = Mult_32_16( factor_fx, X_fx->a_fx[k] ); /* Q(temp+X1.Q-15) */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_temp_fx ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ //??sat -#else - X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ -#endif + X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ move16(); } @@ -2196,11 +2006,9 @@ static void cubicPhase_fx( Word16 num_flag, den_flag; Word32 N2; Word16 dbgshft; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif num_flag = 0; move16(); @@ -2269,11 +2077,8 @@ static void cubicPhase_fx( Ltemp3 = L_mult( N, c1 ); /* Q20 */ Ltemp3 = L_sub( Ltemp3, L_shl( Ltemp1, 1 ) ); /* Ltemp3=N*c1-2*Ltemp1, Q20 */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - IF( GE_32( L_abs( Ltemp3 ), L_shl_sat( Ltemp2, 8 ) ) ) //??sat -#else + IF( GE_32( L_abs( Ltemp3 ), L_shl_o( Ltemp2, 8, &Overflow ) ) ) -#endif { Lacc = L_add( MIN_32, 0 ); if ( Ltemp3 > 0 ) @@ -2286,11 +2091,7 @@ static void cubicPhase_fx( ELSE { expa = norm_l( Ltemp3 ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = extract_h( L_shl( Ltemp3, expa ) ); -#else fraca = extract_h( L_shl_o( Ltemp3, expa, &Overflow ) ); -#endif expa = sub( 30, add( expa, 20 ) ); if ( fraca < 0 ) { @@ -2299,11 +2100,7 @@ static void cubicPhase_fx( } expb = norm_l( Ltemp2 ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = extract_h( L_shl( Ltemp2, expb ) ); //??sat -#else fracb = extract_h( L_shl_o( Ltemp2, expb, &Overflow ) ); -#endif expb = sub( 30, expb ); if ( fracb < 0 ) { @@ -2320,8 +2117,8 @@ static void cubicPhase_fx( fracb = negate( fracb ); } scale = shr( sub( fracb, fraca ), 15 ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = shl_sat( fraca, scale ); //??sat +#ifdef ISSUE_1796_replace_shl_o + fraca = shl_sat( fraca, scale ); #else fraca = shl_o( fraca, scale, &Overflow ); #endif @@ -2340,13 +2137,8 @@ static void cubicPhase_fx( tmp = negate( tmp ); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_shl_sat( tmp, add( exp, 34 ) ); //??sat - Lacc = L_add_sat( Lacc, 0x08000 ); //??sat -#else Lacc = L_shl_o( tmp, add( exp, 34 ), &Overflow ); Lacc = L_add_o( Lacc, 0x08000, &Overflow ); -#endif c0 = extract_h( Lacc ); /* c0 in Q33 */ } @@ -2472,11 +2264,7 @@ static void cubicPhase_fx( Ltemp3 = L_add( Ltemp3, 1 ); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp3 = L_shl_sat( Mult_32_16( L_shl_sat( Ltemp3, 7 ), c0 ), 2 ); /* Ltemp3=c0*n^3, Q27 */ //??sat //?sat -#else Ltemp3 = L_shl_o( Mult_32_16( L_shl_o( Ltemp3, 7, &Overflow ), c0 ), 2, &Overflow ); /* Ltemp3=c0*n^3, Q27 */ -#endif Ltemp2 = L_shl( Mult_32_16( N2, c1 ), 1 ); /* Ltemp2 = (Word32)L_mult_su(c1,(UNS_Word16)n2); : Ltemp2=c1*n^2, Q27 */ Ltemp1 = L_shl( L_mult( c2, n ), 7 ); /* Ltemp1=c2*n, Q27 */ @@ -2534,11 +2322,9 @@ void DTFS_to_erb_fx( Word32 sum_a_fx[NUM_ERB_WB], Ltemp_fx, L_tmp, L_temp; Word16 exp, tmp; Word16 expa, expb, fraca, fracb, scale; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif const Word16 *erb_fx = NULL; num_erb_fx = NUM_ERB_NB; @@ -2604,11 +2390,7 @@ void DTFS_to_erb_fx( FOR( i = 0; i < num_erb_fx; i++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - out_fx[i] = round_fx_sat( L_shl_sat( sum_a_fx[i], n ) ); /* Q13 */ //?�sat //??sat -#else - out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ -#endif + out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ move16(); IF( GT_16( count[i], 1 ) ) { @@ -2680,11 +2462,9 @@ void erb_slot_fx( Word16 exp, tmp; Word32 L_tmp1, L_tmp; Word16 fraca, fracb, expa, expb, scale; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif const Word16 *erb_fx = NULL; /*move16(); */ @@ -2767,33 +2547,7 @@ void erb_slot_fx( } FOR( j = 0; j < num_erb_fx; j++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - mfreq_fx[j] = round_fx_sat( L_shl_sat( mf_fx[j], 11 ) ); /* Q15 */ //??sat //??sat - move16(); - IF( GT_16( out_fx[j], 1 ) ) - { - expb = norm_l( mf_fx[j] ); - fracb = round_fx_sat( L_shl_sat( mf_fx[j], expb ) ); //??sat //??sat - expb = sub( 30, add( expb, 20 ) ); - - - expa = norm_l( out_fx[j] ); - fraca = extract_h( L_shl( out_fx[j], expa ) ); - expa = sub( 30, expa ); - - scale = shr( sub( fraca, fracb ), 15 ); - fracb = shl( fracb, scale ); - expb = sub( expb, scale ); - - tmp = div_s( fracb, fraca ); - exp = sub( expb, expa ); - L_tmp = L_shl_sat( tmp, add( exp, 16 ) ); //??sat - - mfreq_fx[j] = round_fx_sat( L_tmp ); //??sat - move16(); - } -#else - mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ + mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ move16(); IF( GT_16( out_fx[j], 1 ) ) { @@ -2817,7 +2571,6 @@ void erb_slot_fx( mfreq_fx[j] = round_fx_o( L_tmp, &Overflow ); move16(); } -#endif } return; } @@ -2867,11 +2620,9 @@ void DTFS_erb_inv_fx( move16(); move16(); move16(); -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif IF( EQ_16( num_erb_fx, NUM_ERB_NB ) ) @@ -2957,11 +2708,7 @@ void DTFS_erb_inv_fx( d2h = 31; move16(); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[i] = round_fx_sat( L_shl_sat( Ltemp_fx, d2h ) ); /* Q(28-n+d2h) */ //??sat //??sat -#else X_fx->a_fx[i] = round_fx_o( L_shl_o( Ltemp_fx, d2h, &Overflow ), &Overflow ); /* Q(28-n+d2h) */ -#endif move16(); q[i] = add( sub( 28, n ), d2h ); move16(); @@ -3703,11 +3450,9 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W Word16 expa, expb, fraca, fracb, scale; Word16 exp, tmp; Word32 L_tmp; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif L_sum = DTFS_getEngy_P2A_fx( &X_fx ); /* 2Q */ DTFS_fast_fs_inv_fx( &X_fx, time_fx, 256, 8 ); @@ -3752,28 +3497,18 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W ELSE { expa = norm_l( maxPosEn_fx ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = extract_h( L_shl( maxPosEn_fx, expa ) ); - expa = sub( 30, add( expa, 1 ) ); - - - expb = norm_l( L_sum ); - fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat -#else fraca = extract_h( L_shl_o( maxPosEn_fx, expa, &Overflow ) ); expa = sub( 30, add( expa, 1 ) ); expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); -#endif - expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = shl_sat( fracb, scale ); //??sat +#ifdef ISSUE_1796_replace_shl_o + fracb = shl_sat( fracb, scale ); #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -3800,27 +3535,18 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W { expa = norm_l( maxNegEn_fx ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = extract_h( L_shl( maxNegEn_fx, expa ) ); //??sat - expa = sub( Q29, expa ); // 30 - expa - 1; - - - expb = norm_l( L_sum ); - fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat -#else fraca = extract_h( L_shl_o( maxNegEn_fx, expa, &Overflow ) ); expa = sub( Q29, expa ); // 30 - expa - 1; expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); -#endif expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = shl_sat( fracb, scale ); //??sat +#ifdef ISSUE_1796_replace_shl_o + fracb = shl_sat( fracb, scale ); #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -4303,11 +4029,9 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Word32 Ltemp_fx, L_tmp; Word32 Lacc_fx; Word16 exp, tmp, exp1; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif retX_fx->lag_fx = X1_fx->lag_fx; @@ -4318,13 +4042,8 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE FOR( k = 1; k <= HalfLag; k++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc_fx = L_mult_sat( X1_fx->a_fx[k], X1_fx->a_fx[k] ); //??sat - Lacc_fx = L_mac_sat( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k] ); /* 2*Q+1 */ //??sat -#else Lacc_fx = L_mult_o( X1_fx->a_fx[k], X1_fx->a_fx[k], &Overflow ); - Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ -#endif + Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ exp = norm_l( Lacc_fx ); tmp = extract_h( L_shl( Lacc_fx, exp ) ); @@ -4366,17 +4085,6 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE d1h = extract_h( Ltemp_fx ); d1l = extract_l( Ltemp_fx ); Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat - sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->b_fx[k] = mult_r( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ - move16(); - - Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat - cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->a_fx[k] = mult_r( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ -#else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ sn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->b_fx[k] = mult_ro( X2_fx.a_fx[k], sn, &Overflow ); /* X2_fx.Q */ @@ -4386,7 +4094,6 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->a_fx[k], d1h, &Overflow ), &Overflow ); /* cos(w) in Q(q+Q+1) */ cn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->a_fx[k] = mult_ro( X2_fx.a_fx[k], cn, &Overflow ); /* X2_fx.Q */ -#endif move16(); } k = sub( k, 1 ); @@ -4440,11 +4147,9 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, Word32 en; Word16 exp, tmp, expa, fraca, expb, fracb, scale; Word32 L_tmp; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif en = L_deposit_l( 0 ); @@ -4480,12 +4185,8 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Re */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_mac_sat( Lacc, curr_lpc[i], cos_tab[n % M_fx] ); /* Q28 */ //??sat -#else - Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ -#endif - n = add( n, k4 ); /* n=4*i*k */ + Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ + n = add( n, k4 ); /* n=4*i*k */ } Re = L_shr( Lacc, 1 ); /* Q27 */ @@ -4495,21 +4196,13 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Im */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_msu_sat( Lacc, curr_lpc[i], sin_tab[n % M_fx] ); /* Q28 */ //??sat -#else - Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ -#endif - n = add( n, k4 ); /* n=4*i*k */ + Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ + n = add( n, k4 ); /* n=4*i*k */ } - Im = L_shr( Lacc, 1 ); /* Q27 */ - /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_add_sat( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ) ); /* Lacc=Re^2+Im^2 in Q23 */ //??sat -#else - Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ -#endif - Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ + Im = L_shr( Lacc, 1 ); /* Q27 */ + /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ + Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ + Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ /* Ltemp=(Word32)L_sat32_40(divide_dp(Ltemp,Lacc,-19,1)); : Ltemp in Q(2Q-13) */ if ( Lacc < 0 ) @@ -4535,11 +4228,7 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, tmp = div_s( fracb, fraca ); /* 15-exp */ exp = sub( expb, expa ); -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp = L_shl_sat( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ) ); //??sat -#else Ltemp = L_shl_o( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ), &Overflow ); -#endif } ELSE { @@ -4588,11 +4277,9 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ Word16 k, n, na, nb; Word16 Qmin, Qab[MAXLAG_WI]; Word16 exp, tmp; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif Qmin = 32767; move16(); @@ -4607,37 +4294,21 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat -#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ -#endif temp2 = add( temp2, k ); } -#ifdef ISSUE_1836_replace_overflow_libcom__remnant - temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat - temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat - /* Calculate the circular convolution */ - sum = L_mac_sat( L_mult( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ - L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); - L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat - L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat -#else - temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ - temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ + temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ + temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ /* Calculate the circular convolution */ sum = L_mac_o( L_mult_o( temp1, temp1, &Overflow ), temp2, temp2, &Overflow ); /* Q(12+12+1)=Q(25) */ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); L_temp1 = L_mac_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ -#endif + L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ IF( sum ) { exp = norm_l( sum ); @@ -4736,11 +4407,9 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word Word32 sum; Word16 k, n, n1, n2; Word16 exp, tmp; -#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); -#endif #endif HalfLag = s_min( shr( X_fx.lag_fx, 1 ), X_fx.nH_fx ); @@ -4754,13 +4423,8 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { -#ifndef ISSUE_1836_replace_overflow_libcom__remnant sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ -#else - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat -#endif temp2 = add( temp2, k ); } -- GitLab From d288a18e801bf39a55ca32b314f76d9b4e0a0e16 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 13:32:13 +0200 Subject: [PATCH 04/16] get modified wi_fx.c - deactivated macro since l.3000 --- lib_com/wi_fx.c | 422 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 381 insertions(+), 41 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 5a8ad35c5..64cba671a 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -264,9 +264,11 @@ static Word16 DTFS_alignment_weight_fx( Word16 tmplpc_fx[M + 1]; Word16 exp, tmp; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif diff_fx = 0; /* to avoid compilation warnings */ move16(); @@ -320,10 +322,17 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + ab1[k] = round_fx_sat( L_mac0_sat( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k] ) ); /* Q(-15) */ //??sat + ab2[k] = round_fx_sat( L_msu0_sat( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k] ) ); /* Q(-15) */ //??sat + move16(); + move16(); +#else ab1[k] = round_fx_o( L_mac0_o( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ ab2[k] = round_fx_o( L_msu0_o( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k], &Overflow ), &Overflow ); /* Q(-15) */ move16(); move16(); +#endif } start = sub( Eshift, Adiff_fx ); @@ -344,8 +353,13 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + corr_fx = L_mac0_sat( corr_fx, ab1[k], cos_table[s_and( temp, 511 )] ); //??sat + corr_fx = L_mac0_sat( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )] ); //??sat +#else corr_fx = L_mac0_o( corr_fx, ab1[k], cos_table[s_and( temp, 511 )], &Overflow ); corr_fx = L_mac0_o( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )], &Overflow ); +#endif move32(); move32(); temp = add( temp, temp1 ); @@ -358,12 +372,20 @@ static Word16 DTFS_alignment_weight_fx( move16(); } - temp1 = round_fx_o( (Word32) L_shl_o( corr_fx, Qcorr, &Overflow ), &Overflow ); /* Q(Qcorr-16) */ -#ifdef ISSUE_1796_replace_shl_o - wcorr_fx = L_mult_o( temp1, shl_sat( temp, 2 ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + temp1 = round_fx_sat( (Word32) L_shl_sat( corr_fx, Qcorr ) ); /* Q(Qcorr-16) */ //??sat //??sat + wcorr_fx = L_mult_sat( temp1, shl_sat( temp, 2 ) ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ //??sat //!!sat + IF( GE_16( Qmaxcorr, Qcorr ) ) + { + diff_corr = L_sub_sat( wcorr_fx, L_shl_sat( maxcorr_fx, sub( Qcorr, Qmaxcorr ) ) ); /* Qcorr */ + } + ELSE + { + diff_corr = L_sub_sat( L_shl_sat( wcorr_fx, sub( Qmaxcorr, Qcorr ) ), maxcorr_fx ); /* Qmaxcorr */ + } #else - wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ -#endif + temp1 = round_fx_o( (Word32) L_shl_o( corr_fx, Qcorr, &Overflow ), &Overflow ); /* Q(Qcorr-16) */ + wcorr_fx = L_mult_o( temp1, shl_o( temp, 2, &Overflow ), &Overflow ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ IF( GE_16( Qmaxcorr, Qcorr ) ) { diff_corr = L_sub_o( wcorr_fx, L_shl_o( maxcorr_fx, sub( Qcorr, Qmaxcorr ), &Overflow ), &Overflow ); /* Qcorr */ @@ -372,6 +394,7 @@ static Word16 DTFS_alignment_weight_fx( { diff_corr = L_sub_o( L_shl_o( wcorr_fx, sub( Qmaxcorr, Qcorr ), &Overflow ), maxcorr_fx, &Overflow ); /* Qmaxcorr */ } +#endif IF( diff_corr > 0 ) { @@ -421,9 +444,11 @@ Word16 DTFS_alignment_full_fx( Word16 n, fshift_fx; Word32 corr_fx, maxcorr_fx; Word16 Eshift, Adiff_fx; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif /* Calculating the expected alignment shift */ @@ -457,8 +482,13 @@ Word16 DTFS_alignment_full_fx( FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + ab1[k] = round_fx_sat( L_mac_sat( L_mult_sat( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat + ab2[k] = round_fx_sat( L_msu_sat( L_mult_sat( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat +#else ab1[k] = round_fx_o( L_mac_o( L_mult_o( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ ab2[k] = round_fx_o( L_msu_o( L_mult_o( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ +#endif } IF( FR_flag == 0 ) { @@ -488,9 +518,15 @@ Word16 DTFS_alignment_full_fx( temp1 = add( n, shl( X2_DTFS_fx.lag_fx, 1 ) ); /* add lag_fx in Q1to make positive */ FOR( k = 0; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + corr_fx = L_mac_sat( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat + corr_fx = L_mac_sat( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat + temp = add_sat( temp, temp1 ); //??sat +#else corr_fx = L_mac_o( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); corr_fx = L_mac_o( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); temp = add_o( temp, temp1, &Overflow ); +#endif } IF( GT_32( corr_fx, maxcorr_fx ) ) @@ -596,9 +632,11 @@ void Q2phaseShift_fx( Word16 k; Word16 temp, HalfLag; Word32 temp2; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif temp2 = L_deposit_l( 0 ); @@ -610,9 +648,15 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat //??sat //??sat + X_fx->b_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat //??sat //??sat + temp2 = L_add_sat( temp2, (Word32) ph ); //??sat +#else X_fx->a_fx[k] = round_fx_o( L_msu_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_mac_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = L_add_o( temp2, (Word32) ph, &Overflow ); +#endif move16(); move16(); } @@ -624,9 +668,15 @@ void Q2phaseShift_fx( FOR( k = 0; k <= HalfLag; k++ ) { temp = X_fx->a_fx[k]; +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat + X_fx->b_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat + temp2 = add_sat( (Word16) temp2, negate( ph ) ); //??sat +#else X_fx->a_fx[k] = round_fx_o( L_mac_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_msu_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); temp2 = add_o( (Word16) temp2, negate( ph ), &Overflow ); +#endif move16(); move16(); } @@ -730,9 +780,11 @@ void DTFS_to_fs_fx( Word32 La[MAXLAG_WI], Lb[MAXLAG_WI], Labmax; Word16 exp, tmp; Word32 L_tmp1; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif IF( !FR_flag ) @@ -769,7 +821,16 @@ void DTFS_to_fs_fx( move16(); exp = norm_s( X_fx->lag_fx ); - tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ + tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp1 = L_mult( 12800, tmp ); /* Q(30-exp) */ + diff_fx = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat + + exp = norm_s( diff_fx ); + tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ + L_tmp1 = L_mult_sat( X_fx->upper_cut_off_freq_fx, tmp ); /* Q(30-exp) */ //??sat + nH_band = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat +#else L_tmp1 = L_mult_o( 12800, tmp, &Overflow ); /* Q(30-exp) */ diff_fx = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ @@ -777,7 +838,8 @@ void DTFS_to_fs_fx( tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ L_tmp1 = L_mult_o( X_fx->upper_cut_off_freq_fx, tmp, &Overflow ); /* Q(30-exp) */ nH_band = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ - nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ +#endif + nH_4kHz = mult( 10240, ( X_fx->lag_fx ) ); /* 4000/12800 in Q15 */ if ( GE_16( sub( X_fx->upper_cut_off_freq_fx, shr( (Word16) L_mult( diff_fx, nH_band ), 1 ) ), diff_fx ) ) { @@ -800,8 +862,13 @@ void DTFS_to_fs_fx( exp = norm_s( N ); tmp = div_s( shl( 1, ( sub( 14, exp ) ) ), N ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp = L_shl_sat( tmp, add( exp, 6 ) ); //??sat + inv_lag = round_fx_sat( L_tmp ); //??sat +#else L_tmp = L_shl_o( tmp, add( exp, 6 ), &Overflow ); inv_lag = round_fx_o( L_tmp, &Overflow ); +#endif Lx0 = L_deposit_h( x[0] ); Labmax = L_deposit_l( 0 ); FOR( k = 1; k <= nH; k++ ) @@ -815,8 +882,13 @@ void DTFS_to_fs_fx( move16(); FOR( n = 1; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac0_sat( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*cos(sum) */ //??sat + L_b = L_mac0_sat( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*sin(sum) */ //??sat +#else L_a = L_mac0_o( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*cos(sum) */ L_b = L_mac0_o( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*sin(sum) */ +#endif sum = add( sum, temp ); } La[k] = L_shr( L_a, 6 ); /* Q8 of a[k]*2.0 */ @@ -853,13 +925,22 @@ void DTFS_to_fs_fx( temp_neg = negate( temp ); FOR( n = 0; n < N - 1; n += 2 ) { - L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat + L_a = L_mac_sat( L_a, x[n + 1], temp_neg ); //??sat +#else + L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ L_a = L_mac_o( L_a, x[n + 1], temp_neg, &Overflow ); +#endif /*temp= negate(temp); */ } if ( s_and( N, 1 ) ) /*if N is odd we need to calculate last */ { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat +#else L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ +#endif } La[k] = L_shl( L_a, 7 ); @@ -884,6 +965,30 @@ void DTFS_to_fs_fx( move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + FOR( k = 1; k <= nH; k++ ) + { + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + move16(); + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*2.0/N */ + X_fx->b_fx[k] = round_fx_sat( L_shl_sat( Lb[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + move16(); + X_fx->b_fx[k] = mult_r_sat( X_fx->b_fx[k], inv_lag ); //??sat + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of b[k]*2.0/N */ + } + + /* IF ( N%2 == 0 ) */ + IF( s_and( N, 1 ) == 0 ) + { + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat + move16(); + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*1.0/N */ + X_fx->b_fx[k] = 0; + move16(); + } +#else FOR( k = 1; k <= nH; k++ ) { X_fx->a_fx[k] = round_fx_o( L_shl_o( La[k], temp, &Overflow ), &Overflow ); /* Q(8+temp-16)=Q(temp-8) */ @@ -906,6 +1011,7 @@ void DTFS_to_fs_fx( X_fx->b_fx[k] = 0; move16(); } +#endif X_fx->Q = sub( temp, 4 ); move16(); @@ -1201,9 +1307,11 @@ void DTFS_zeroFilter_fx( Word16 temp, temp1, temp2; Word32 L_temp1, L_temp2; Word16 Qmin, Qab[MAXLAG_WI], na, nb; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif Qmin = 32767; move16(); @@ -1221,6 +1329,22 @@ void DTFS_zeroFilter_fx( FOR( n = 0; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); //??sat + temp2 = add( temp2, temp ); + } + + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + + /* Calculate the circular convolution */ + L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); + L_temp1 = L_msu_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1) */ //??sat + L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); + + L_temp2 = L_mac_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1) */ //??sat +#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); temp2 = add( temp2, temp ); @@ -1233,7 +1357,8 @@ void DTFS_zeroFilter_fx( L_temp1 = L_mult_o( temp1, X_fx->a_fx[k], &Overflow ); L_temp1 = L_msu_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1) */ L_temp2 = L_mult_o( temp1, X_fx->b_fx[k], &Overflow ); - L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ + L_temp2 = L_mac_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1) */ +#endif /* normalization */ na = norm_l( L_temp1 ); if ( L_temp1 == 0 ) @@ -1253,8 +1378,13 @@ void DTFS_zeroFilter_fx( nb = na; move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp1, nb ) ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ //??sat + X_fx->b_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp2, nb ) ); /* Q(Q+nb-3) */ //??sat +#else X_fx->a_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp1, nb, &Overflow ), &Overflow ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ X_fx->b_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp2, nb, &Overflow ), &Overflow ); /* Q(Q+nb-3) */ +#endif move32(); move32(); @@ -1270,14 +1400,14 @@ void DTFS_zeroFilter_fx( /* bring to the same Q */ FOR( k = 0; k <= HalfLag; k++ ) { -#ifdef ISSUE_1796_replace_shl_o - X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); //??sat #else X_fx->a_fx[k] = shl_o( X_fx->a_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif move16(); /* Q(Q+Qab[k]+Qmin-Qab[k]=Q(Q+Qmin) */ -#ifdef ISSUE_1796_replace_shl_o - X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); //??sat #else X_fx->b_fx[k] = shl_o( X_fx->b_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif @@ -1525,9 +1655,11 @@ Word32 DTFS_getEngy_fx( Word32 en_fx = 0; move32(); Word16 temp_a_fx, temp_b_fx; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); @@ -1537,15 +1669,23 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); +#endif } en_fx = L_shr( en_fx, 1 ); temp_a_fx = X_fx->a_fx[0]; move16(); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); +#endif /* IF (X_fx->lag_fx%2 == 0) */ IF( s_and( X_fx->lag_fx, 1 ) == 0 ) { @@ -1553,9 +1693,13 @@ Word32 DTFS_getEngy_fx( move16(); temp_b_fx = X_fx->b_fx[k]; move16(); - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat +#else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); +#endif } return en_fx; /* 2*X1.Q+1=Q13 */ @@ -1586,6 +1730,23 @@ Word32 DTFS_getEngy_P2A_fx( Word16 k, HalfLag_fx; Word32 en_fx = 0; move32(); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + HalfLag_fx = shr( sub( X_fx->lag_fx, 1 ), 1 ); + HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); + FOR( k = 1; k <= HalfLag_fx; k++ ) + { + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + } + en_fx = L_shr( en_fx, 1 ); + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[0], X_fx->a_fx[0] ); //??sat + /* IF (X_fx->lag_fx%2 == 0) */ + IF( s_and( X_fx->lag_fx, 1 ) == 0 ) + { + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + } +#else #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -1605,7 +1766,7 @@ Word32 DTFS_getEngy_P2A_fx( en_fx = L_mac0_o( en_fx, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); en_fx = L_mac0_o( en_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); } - +#endif return en_fx; /* 2*X1.Q */ } @@ -1732,17 +1893,23 @@ void DTFS_car2pol_fx( Word32 Ltemp_fx; Word32 Lacc_fx; Word16 exp, tmp, frac; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag_fx = s_min( shr( sub( X_fx->lag_fx, 1 ), 1 ), X_fx->nH_fx ); FOR( k = 1; k <= HalfLag_fx; k++ ) { - Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ + Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc_fx = L_mac_sat( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); /* a[k]^2+b[k]^2, 2Q+1 */ //??sat +#else Lacc_fx = L_mac_o( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); /* a[k]^2+b[k]^2, 2Q+1 */ - Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ +#endif + Lacc_fx = L_shr( Lacc_fx, 3 ); /* Lacc=(a[k]^2+b[k]^2)/4, 2Q */ IF( Lacc_fx ) { @@ -1849,10 +2016,12 @@ Word32 DTFS_setEngyHarm_fx( move32(); Word16 expp = 0; move16(); +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif +#endif f_low_fx = mult( f1_fx, X_fx->lag_fx ); /* Q0 */ @@ -1864,7 +2033,11 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { - Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_mac0_sat( Lacc, X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*X1.Q */ //??sat +#else + Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ +#endif Lacc_max = L_max( Lacc_max, Lacc ); count = add( count, 1 ); @@ -1879,8 +2052,13 @@ Word32 DTFS_setEngyHarm_fx( Lacc = L_deposit_l( 0 ); FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + L_tmp = L_mult_sat( X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat + Lacc = L_add_sat( Lacc, L_shr( L_tmp, expp ) ); /* 2*X1.Q-expp */ //??sat +#else L_tmp = L_mult_o( X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); Lacc = L_add_o( Lacc, L_shr( L_tmp, expp ), &Overflow ); /* 2*X1.Q-expp */ +#endif count = add( count, 1 ); } } @@ -1893,7 +2071,11 @@ Word32 DTFS_setEngyHarm_fx( exp = norm_s( count ); tmp = div_s( shl( 1, sub( 14, exp ) ), count ); /* 29 - exp */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + en1_fx = L_shl_sat( Mult_32_16( Lacc, tmp ), sub( exp, 14 ) ); //??sat +#else en1_fx = L_shl_o( Mult_32_16( Lacc, tmp ), sub( exp, 14 ), &Overflow ); +#endif test(); IF( en1_fx > 0 && en2_fx > 0 ) { @@ -1904,7 +2086,11 @@ Word32 DTFS_setEngyHarm_fx( expb = norm_l( en1_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = round_fx_sat( L_shl( en1_fx, expb ) ); //??sat +#else fracb = round_fx_o( L_shl_o( en1_fx, expb, &Overflow ), &Overflow ); +#endif IF( GE_32( Lacc_max, 2147483647 /*1.Q31*/ ) ) { expb = sub( 30, add( expb, sub( shl( X_fx->Q, 1 ), expp ) ) ); @@ -1942,7 +2128,11 @@ Word32 DTFS_setEngyHarm_fx( { /*L_temp_fx =(Word32)Mpy_32_16(extract_h(factor_fx),extract_l(factor_fx), X_fx->a_fx[k]); move32(); */ /* Q(temp+X1.Q-15) */ L_temp_fx = Mult_32_16( factor_fx, X_fx->a_fx[k] ); /* Q(temp+X1.Q-15) */ - X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[k] = round_fx_sat( L_temp_fx ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ //??sat +#else + X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ +#endif move16(); } @@ -2006,9 +2196,11 @@ static void cubicPhase_fx( Word16 num_flag, den_flag; Word32 N2; Word16 dbgshft; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif num_flag = 0; move16(); @@ -2077,8 +2269,11 @@ static void cubicPhase_fx( Ltemp3 = L_mult( N, c1 ); /* Q20 */ Ltemp3 = L_sub( Ltemp3, L_shl( Ltemp1, 1 ) ); /* Ltemp3=N*c1-2*Ltemp1, Q20 */ - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + IF( GE_32( L_abs( Ltemp3 ), L_shl_sat( Ltemp2, 8 ) ) ) //??sat +#else IF( GE_32( L_abs( Ltemp3 ), L_shl_o( Ltemp2, 8, &Overflow ) ) ) +#endif { Lacc = L_add( MIN_32, 0 ); if ( Ltemp3 > 0 ) @@ -2091,7 +2286,11 @@ static void cubicPhase_fx( ELSE { expa = norm_l( Ltemp3 ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( Ltemp3, expa ) ); +#else fraca = extract_h( L_shl_o( Ltemp3, expa, &Overflow ) ); +#endif expa = sub( 30, add( expa, 20 ) ); if ( fraca < 0 ) { @@ -2100,7 +2299,11 @@ static void cubicPhase_fx( } expb = norm_l( Ltemp2 ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = extract_h( L_shl( Ltemp2, expb ) ); //??sat +#else fracb = extract_h( L_shl_o( Ltemp2, expb, &Overflow ) ); +#endif expb = sub( 30, expb ); if ( fracb < 0 ) { @@ -2117,8 +2320,8 @@ static void cubicPhase_fx( fracb = negate( fracb ); } scale = shr( sub( fracb, fraca ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fraca = shl_sat( fraca, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = shl_sat( fraca, scale ); //??sat #else fraca = shl_o( fraca, scale, &Overflow ); #endif @@ -2137,8 +2340,13 @@ static void cubicPhase_fx( tmp = negate( tmp ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_shl_sat( tmp, add( exp, 34 ) ); //??sat + Lacc = L_add_sat( Lacc, 0x08000 ); //??sat +#else Lacc = L_shl_o( tmp, add( exp, 34 ), &Overflow ); Lacc = L_add_o( Lacc, 0x08000, &Overflow ); +#endif c0 = extract_h( Lacc ); /* c0 in Q33 */ } @@ -2264,7 +2472,11 @@ static void cubicPhase_fx( Ltemp3 = L_add( Ltemp3, 1 ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp3 = L_shl_sat( Mult_32_16( L_shl_sat( Ltemp3, 7 ), c0 ), 2 ); /* Ltemp3=c0*n^3, Q27 */ //??sat //?sat +#else Ltemp3 = L_shl_o( Mult_32_16( L_shl_o( Ltemp3, 7, &Overflow ), c0 ), 2, &Overflow ); /* Ltemp3=c0*n^3, Q27 */ +#endif Ltemp2 = L_shl( Mult_32_16( N2, c1 ), 1 ); /* Ltemp2 = (Word32)L_mult_su(c1,(UNS_Word16)n2); : Ltemp2=c1*n^2, Q27 */ Ltemp1 = L_shl( L_mult( c2, n ), 7 ); /* Ltemp1=c2*n, Q27 */ @@ -2322,9 +2534,11 @@ void DTFS_to_erb_fx( Word32 sum_a_fx[NUM_ERB_WB], Ltemp_fx, L_tmp, L_temp; Word16 exp, tmp; Word16 expa, expb, fraca, fracb, scale; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif const Word16 *erb_fx = NULL; num_erb_fx = NUM_ERB_NB; @@ -2390,7 +2604,11 @@ void DTFS_to_erb_fx( FOR( i = 0; i < num_erb_fx; i++ ) { - out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + out_fx[i] = round_fx_sat( L_shl_sat( sum_a_fx[i], n ) ); /* Q13 */ //?�sat //??sat +#else + out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ +#endif move16(); IF( GT_16( count[i], 1 ) ) { @@ -2462,9 +2680,11 @@ void erb_slot_fx( Word16 exp, tmp; Word32 L_tmp1, L_tmp; Word16 fraca, fracb, expa, expb, scale; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif const Word16 *erb_fx = NULL; /*move16(); */ @@ -2547,7 +2767,33 @@ void erb_slot_fx( } FOR( j = 0; j < num_erb_fx; j++ ) { - mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + mfreq_fx[j] = round_fx_sat( L_shl_sat( mf_fx[j], 11 ) ); /* Q15 */ //??sat //??sat + move16(); + IF( GT_16( out_fx[j], 1 ) ) + { + expb = norm_l( mf_fx[j] ); + fracb = round_fx_sat( L_shl_sat( mf_fx[j], expb ) ); //??sat //??sat + expb = sub( 30, add( expb, 20 ) ); + + + expa = norm_l( out_fx[j] ); + fraca = extract_h( L_shl( out_fx[j], expa ) ); + expa = sub( 30, expa ); + + scale = shr( sub( fraca, fracb ), 15 ); + fracb = shl( fracb, scale ); + expb = sub( expb, scale ); + + tmp = div_s( fracb, fraca ); + exp = sub( expb, expa ); + L_tmp = L_shl_sat( tmp, add( exp, 16 ) ); //??sat + + mfreq_fx[j] = round_fx_sat( L_tmp ); //??sat + move16(); + } +#else + mfreq_fx[j] = round_fx_o( L_shl_o( mf_fx[j], 11, &Overflow ), &Overflow ); /* Q15 */ move16(); IF( GT_16( out_fx[j], 1 ) ) { @@ -2571,6 +2817,7 @@ void erb_slot_fx( mfreq_fx[j] = round_fx_o( L_tmp, &Overflow ); move16(); } +#endif } return; } @@ -2620,9 +2867,11 @@ void DTFS_erb_inv_fx( move16(); move16(); move16(); +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif IF( EQ_16( num_erb_fx, NUM_ERB_NB ) ) @@ -2708,7 +2957,11 @@ void DTFS_erb_inv_fx( d2h = 31; move16(); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + X_fx->a_fx[i] = round_fx_sat( L_shl_sat( Ltemp_fx, d2h ) ); /* Q(28-n+d2h) */ //??sat //??sat +#else X_fx->a_fx[i] = round_fx_o( L_shl_o( Ltemp_fx, d2h, &Overflow ), &Overflow ); /* Q(28-n+d2h) */ +#endif move16(); q[i] = add( sub( 28, n ), d2h ); move16(); @@ -2753,6 +3006,10 @@ void DTFS_erb_inv_fx( /* CALLED FROM : TX/RX */ /*===================================================================*/ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant +#undef ISSUE_1836_replace_overflow_libcom__remnant +#endif + void erb_add_fx( Word16 *curr_erb_fx, /* i/o: current ERB */ Word16 l_fx, /* i : current lag */ @@ -3450,9 +3707,11 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W Word16 expa, expb, fraca, fracb, scale; Word16 exp, tmp; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif L_sum = DTFS_getEngy_P2A_fx( &X_fx ); /* 2Q */ DTFS_fast_fs_inv_fx( &X_fx, time_fx, 256, 8 ); @@ -3497,18 +3756,28 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W ELSE { expa = norm_l( maxPosEn_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( maxPosEn_fx, expa ) ); + expa = sub( 30, add( expa, 1 ) ); + + + expb = norm_l( L_sum ); + fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat +#else fraca = extract_h( L_shl_o( maxPosEn_fx, expa, &Overflow ) ); expa = sub( 30, add( expa, 1 ) ); expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); +#endif + expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fracb = shl_sat( fracb, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = shl_sat( fracb, scale ); //??sat #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -3535,18 +3804,27 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W { expa = norm_l( maxNegEn_fx ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fraca = extract_h( L_shl( maxNegEn_fx, expa ) ); //??sat + expa = sub( Q29, expa ); // 30 - expa - 1; + + + expb = norm_l( L_sum ); + fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat +#else fraca = extract_h( L_shl_o( maxNegEn_fx, expa, &Overflow ) ); expa = sub( Q29, expa ); // 30 - expa - 1; expb = norm_l( L_sum ); fracb = round_fx_o( L_shl_o( L_sum, expb, &Overflow ), &Overflow ); +#endif expb = sub( 30, add( expb, shl( X_fx.Q, 1 ) ) ); scale = shr( sub( fraca, fracb ), 15 ); -#ifdef ISSUE_1796_replace_shl_o - fracb = shl_sat( fracb, scale ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + fracb = shl_sat( fracb, scale ); //??sat #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -4029,9 +4307,11 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Word32 Ltemp_fx, L_tmp; Word32 Lacc_fx; Word16 exp, tmp, exp1; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif retX_fx->lag_fx = X1_fx->lag_fx; @@ -4042,8 +4322,13 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE FOR( k = 1; k <= HalfLag; k++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc_fx = L_mult_sat( X1_fx->a_fx[k], X1_fx->a_fx[k] ); //??sat + Lacc_fx = L_mac_sat( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k] ); /* 2*Q+1 */ //??sat +#else Lacc_fx = L_mult_o( X1_fx->a_fx[k], X1_fx->a_fx[k], &Overflow ); - Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ + Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ +#endif exp = norm_l( Lacc_fx ); tmp = extract_h( L_shl( Lacc_fx, exp ) ); @@ -4085,6 +4370,17 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE d1h = extract_h( Ltemp_fx ); d1l = extract_l( Ltemp_fx ); Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat + sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + retX_fx->b_fx[k] = mult_r( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ + move16(); + + Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat + cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + retX_fx->a_fx[k] = mult_r( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ +#else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ sn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->b_fx[k] = mult_ro( X2_fx.a_fx[k], sn, &Overflow ); /* X2_fx.Q */ @@ -4094,6 +4390,7 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->a_fx[k], d1h, &Overflow ), &Overflow ); /* cos(w) in Q(q+Q+1) */ cn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ retX_fx->a_fx[k] = mult_ro( X2_fx.a_fx[k], cn, &Overflow ); /* X2_fx.Q */ +#endif move16(); } k = sub( k, 1 ); @@ -4147,9 +4444,11 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, Word32 en; Word16 exp, tmp, expa, fraca, expb, fracb, scale; Word32 L_tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif en = L_deposit_l( 0 ); @@ -4185,8 +4484,12 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Re */ - Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ - n = add( n, k4 ); /* n=4*i*k */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_mac_sat( Lacc, curr_lpc[i], cos_tab[n % M_fx] ); /* Q28 */ //??sat +#else + Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ +#endif + n = add( n, k4 ); /* n=4*i*k */ } Re = L_shr( Lacc, 1 ); /* Q27 */ @@ -4196,13 +4499,21 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, FOR( i = 0; i < M + 1; i++ ) { /* Compute Im */ - Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ - n = add( n, k4 ); /* n=4*i*k */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_msu_sat( Lacc, curr_lpc[i], sin_tab[n % M_fx] ); /* Q28 */ //??sat +#else + Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ +#endif + n = add( n, k4 ); /* n=4*i*k */ } - Im = L_shr( Lacc, 1 ); /* Q27 */ - /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ - Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ - Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ + Im = L_shr( Lacc, 1 ); /* Q27 */ + /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Lacc = L_add_sat( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ) ); /* Lacc=Re^2+Im^2 in Q23 */ //??sat +#else + Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ +#endif + Ltemp = L_mult0( X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*a[k]^2 in 2Q */ /* Ltemp=(Word32)L_sat32_40(divide_dp(Ltemp,Lacc,-19,1)); : Ltemp in Q(2Q-13) */ if ( Lacc < 0 ) @@ -4228,7 +4539,11 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, tmp = div_s( fracb, fraca ); /* 15-exp */ exp = sub( expb, expa ); +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + Ltemp = L_shl_sat( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ) ); //??sat +#else Ltemp = L_shl_o( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ), &Overflow ); +#endif } ELSE { @@ -4277,9 +4592,11 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ Word16 k, n, na, nb; Word16 Qmin, Qab[MAXLAG_WI]; Word16 exp, tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif Qmin = 32767; move16(); @@ -4294,21 +4611,37 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat +#else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ +#endif temp2 = add( temp2, k ); } +#ifdef ISSUE_1836_replace_overflow_libcom__remnant + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + /* Calculate the circular convolution */ + sum = L_mac_sat( L_mult( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ - temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ - temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ + L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); + L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat + L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); + L_temp2 = L_msu_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat +#else + temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ + temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ /* Calculate the circular convolution */ sum = L_mac_o( L_mult_o( temp1, temp1, &Overflow ), temp2, temp2, &Overflow ); /* Q(12+12+1)=Q(25) */ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); L_temp1 = L_mac_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ + L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ +#endif IF( sum ) { exp = norm_l( sum ); @@ -4407,9 +4740,11 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word Word32 sum; Word16 k, n, n1, n2; Word16 exp, tmp; +#ifndef ISSUE_1836_replace_overflow_libcom__remnant #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); +#endif #endif HalfLag = s_min( shr( X_fx.lag_fx, 1 ), X_fx.nH_fx ); @@ -4423,8 +4758,13 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word sum2_fx = L_deposit_l( 0 ); FOR( n = 0; n < N; n++ ) { +#ifndef ISSUE_1836_replace_overflow_libcom__remnant sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ +#else + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat +#endif temp2 = add( temp2, k ); } -- GitLab From 07d9c9becef570d342112a626f2b6a6d9988df8a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 13:56:50 +0200 Subject: [PATCH 05/16] get modified wi_fx.c - deactivated macro since l.4300 --- lib_com/wi_fx.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 64cba671a..5a8f7074d 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -3005,11 +3005,6 @@ void DTFS_erb_inv_fx( /*-------------------------------------------------------------------*/ /* CALLED FROM : TX/RX */ /*===================================================================*/ - -#ifdef ISSUE_1836_replace_overflow_libcom__remnant -#undef ISSUE_1836_replace_overflow_libcom__remnant -#endif - void erb_add_fx( Word16 *curr_erb_fx, /* i/o: current ERB */ Word16 l_fx, /* i : current lag */ @@ -4299,6 +4294,13 @@ void r_fft_4_fx( Word16 *farray_ptr_fx /*Q0*/, Word16 size, Word16 stage, Word16 /* X.a[k]=2*X2.a[k]/sqrt(X1.a[k]^2+X1.b[k]^2)*X1.a[k] */ /* X.b[k]=2*X2.a[k]/sqrt(X1.a[k]^2+X1.b[k]^2)*X1.b[k] */ /*===================================================================*/ + + + +#ifdef ISSUE_1836_replace_overflow_libcom__remnant +#undef ISSUE_1836_replace_overflow_libcom__remnant +#endif + void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE *retX_fx ) { /* DTFS_fx X; */ -- GitLab From 0c4d00e7f9c59bd506287a2f8315e9fba8e392e3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 14:14:01 +0200 Subject: [PATCH 06/16] clang format patch --- lib_com/wi_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 5a8f7074d..dcc394061 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4296,7 +4296,6 @@ void r_fft_4_fx( Word16 *farray_ptr_fx /*Q0*/, Word16 size, Word16 stage, Word16 /*===================================================================*/ - #ifdef ISSUE_1836_replace_overflow_libcom__remnant #undef ISSUE_1836_replace_overflow_libcom__remnant #endif -- GitLab From a11a6aea1b6a4de696ea305c005f1e152d90a0b9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 14:53:33 +0200 Subject: [PATCH 07/16] get modified wi_fx.c - deactivated macro since l.4600 --- lib_com/wi_fx.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index dcc394061..aa8f6e1be 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4294,12 +4294,6 @@ void r_fft_4_fx( Word16 *farray_ptr_fx /*Q0*/, Word16 size, Word16 stage, Word16 /* X.a[k]=2*X2.a[k]/sqrt(X1.a[k]^2+X1.b[k]^2)*X1.a[k] */ /* X.b[k]=2*X2.a[k]/sqrt(X1.a[k]^2+X1.b[k]^2)*X1.b[k] */ /*===================================================================*/ - - -#ifdef ISSUE_1836_replace_overflow_libcom__remnant -#undef ISSUE_1836_replace_overflow_libcom__remnant -#endif - void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE *retX_fx ) { /* DTFS_fx X; */ @@ -4585,6 +4579,27 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, /* CALLED FROM : TX/RX */ /*===================================================================*/ + + + + + + + + + + + + + + + + + + +#ifdef ISSUE_1836_replace_overflow_libcom__remnant +#undef ISSUE_1836_replace_overflow_libcom__remnant +#endif void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_fx, Word16 *C_fx ) { Word16 temp, temp1, temp2, HalfLag; -- GitLab From f92a5dfb7e1a37f34e2b067b36554b8ea4af2e66 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 15:11:56 +0200 Subject: [PATCH 08/16] clang format patch --- lib_com/wi_fx.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index aa8f6e1be..a95b240ae 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4580,26 +4580,9 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, /*===================================================================*/ - - - - - - - - - - - - - - - - - #ifdef ISSUE_1836_replace_overflow_libcom__remnant #undef ISSUE_1836_replace_overflow_libcom__remnant -#endif +#endif void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_fx, Word16 *C_fx ) { Word16 temp, temp1, temp2, HalfLag; -- GitLab From 2851d7911ef905fcbcd8c2c7c70ace9fde8c4369 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Mon, 18 Aug 2025 15:34:05 +0200 Subject: [PATCH 09/16] get modified wi_fx.c - deactivated macro since l.4730 --- lib_com/wi_fx.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index a95b240ae..6ea2cbe1e 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4578,11 +4578,6 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, /*-------------------------------------------------------------------*/ /* CALLED FROM : TX/RX */ /*===================================================================*/ - - -#ifdef ISSUE_1836_replace_overflow_libcom__remnant -#undef ISSUE_1836_replace_overflow_libcom__remnant -#endif void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_fx, Word16 *C_fx ) { Word16 temp, temp1, temp2, HalfLag; @@ -4731,7 +4726,9 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ /*-------------------------------------------------------------------*/ /* CALLED FROM : TX/RX */ /*===================================================================*/ - +#ifdef ISSUE_1836_replace_overflow_libcom__remnant +#undef ISSUE_1836_replace_overflow_libcom__remnant +#endif void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word16 *S_fx, Word16 *C_fx, Word16 *pf_temp1, Word16 *pf_temp2, Word16 *pf_temp, Word16 *pf_n2_temp1 ) { Word16 temp1, temp2, HalfLag; -- GitLab From c4b458218eee9edbd9343e7aa1b23303a017f271 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 08:44:48 +0200 Subject: [PATCH 10/16] fixed wi_fx.c - deactivated macro since l.4730 --- lib_com/wi_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 6ea2cbe1e..649bdc61e 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4619,7 +4619,7 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat /* Calculate the circular convolution */ - sum = L_mac_sat( L_mult( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ + sum = L_mac_sat( L_mult_sat( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ //??sat L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat -- GitLab From 0f2adfb1cdf0c3428ba740823c3c4e63b2bb71b7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 09:04:26 +0200 Subject: [PATCH 11/16] activated whole wi_fx.c --- lib_com/wi_fx.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 649bdc61e..f079d1e41 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4726,9 +4726,6 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ /*-------------------------------------------------------------------*/ /* CALLED FROM : TX/RX */ /*===================================================================*/ -#ifdef ISSUE_1836_replace_overflow_libcom__remnant -#undef ISSUE_1836_replace_overflow_libcom__remnant -#endif void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word16 *S_fx, Word16 *C_fx, Word16 *pf_temp1, Word16 *pf_temp2, Word16 *pf_temp, Word16 *pf_n2_temp1 ) { Word16 temp1, temp2, HalfLag; -- GitLab From 1839e0d63f4c3622e367eca4c6478b24d6a4a8c6 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 10:40:09 +0200 Subject: [PATCH 12/16] fix potential flaws --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 5988dd492..83b65fdb6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -74,7 +74,7 @@ /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ #define ISSUE_1796_replace_shl_o /* FhG: replace shl_ro by overflow-free alternatives - BE*/ -#define ISSUE_1836_replace_overflow_libcom /* FhG: replace overflow operators by non-overflow-alternatives - BE */ +#define ISSUE_1836_replace_overflow_libcom /* FhG: replace overflow operators by non-overflow-alternatives in lib_com - BE */ #define ISSUE_1836_replace_overflow_libcom__remnant /* FhG: replace remaining overflow operators by non-overflow-alternatives in lib_com - BE */ #define ISSUE_1866_replace_overflow_libdec /* FhG: BE - Replace BASOPoverflow operators all over the lib_dec module if Overflow result is not used */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 67310a7c7..f280f0855 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -1680,8 +1680,8 @@ void GenShapedWBExcitation_ivas_fx( temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ //??sat //??sat FOR( j = 0; j < L_FRAME16k / 16; j++ ) { - L_tmp = L_mult( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat + L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat move16(); k++; @@ -1987,8 +1987,8 @@ void GenShapedWBExcitation_fx( temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ //??sat //??sat FOR( j = 0; j < L_FRAME16k / 16; j++ ) { - L_tmp = L_mult( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat + L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat move16(); k = add( k, 1 ); -- GitLab From a6aacb23150367f5626990fca7a5be706b596e41 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 10:56:07 +0200 Subject: [PATCH 13/16] fix potential flaws --- lib_com/wi_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index f079d1e41..176f48ef2 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4366,15 +4366,15 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE d1l = extract_l( Ltemp_fx ); Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->b_fx[k] = mult_r( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ + retX_fx->b_fx[k] = mult_r_sat( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ move16(); Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->a_fx[k] = mult_r( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ + retX_fx->a_fx[k] = mult_r_sat( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ #else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ sn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ -- GitLab From 5843767520e436c9304dcc2f394b165f97fd7f82 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 10:56:52 +0200 Subject: [PATCH 14/16] fix potential flaws --- lib_dec/dec_post_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c index d2130cddc..ccfb26a47 100644 --- a/lib_dec/dec_post_fx.c +++ b/lib_dec/dec_post_fx.c @@ -1720,7 +1720,7 @@ void blend_subfr2_fx( FOR( i = 0; i < L_SUBFR / 2; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - sigOut[i] = mac_r_sat( L_mult( fac1, sigIn1[i] ), fac2, sigIn2[i] ); // Qx //??sat + sigOut[i] = mac_r_sat( L_mult_sat( fac1, sigIn1[i] ), fac2, sigIn2[i] ); // Qx //??sat fac1 = sub_sat( fac1, step ); //??sat fac2 = add_sat( fac2, step ); //??sat #else -- GitLab From c5551e2aee6ca17ca4108a4ce24575c8564de4aa Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 19 Aug 2025 11:23:09 +0200 Subject: [PATCH 15/16] clang patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- lib_com/wi_fx.c | 4 ++-- lib_dec/dec_post_fx.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f280f0855..771e978bc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -1682,7 +1682,7 @@ void GenShapedWBExcitation_ivas_fx( { L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat - exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat + exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat move16(); k++; } @@ -1989,7 +1989,7 @@ void GenShapedWBExcitation_fx( { L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat - exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat + exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat move16(); k = add( k, 1 ); } diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index 176f48ef2..d0058d3df 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -4367,13 +4367,13 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat - sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat retX_fx->b_fx[k] = mult_r_sat( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ move16(); Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat - cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat + cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat retX_fx->a_fx[k] = mult_r_sat( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ #else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c index ccfb26a47..d707ac495 100644 --- a/lib_dec/dec_post_fx.c +++ b/lib_dec/dec_post_fx.c @@ -1721,8 +1721,8 @@ void blend_subfr2_fx( { #ifdef ISSUE_1866_replace_overflow_libdec sigOut[i] = mac_r_sat( L_mult_sat( fac1, sigIn1[i] ), fac2, sigIn2[i] ); // Qx //??sat - fac1 = sub_sat( fac1, step ); //??sat - fac2 = add_sat( fac2, step ); //??sat + fac1 = sub_sat( fac1, step ); //??sat + fac2 = add_sat( fac2, step ); //??sat #else sigOut[i] = mac_ro( L_mult_o( fac1, sigIn1[i], &Overflow ), fac2, sigIn2[i], &Overflow ); // Qx fac1 = sub_o( fac1, step, &Overflow ); -- GitLab From 27ff4a3a6afcda8e1fddc9ef5ef8cc8793607131 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Wed, 20 Aug 2025 22:17:56 +0200 Subject: [PATCH 16/16] remove //??sat-comments --- lib_com/fft_fx_evs.c | 494 ++++++++++++++--------------- lib_com/frame_ener_fx.c | 10 +- lib_com/get_gain_fx.c | 6 +- lib_com/gs_bitallocation_fx.c | 2 +- lib_com/gs_bitallocation_ivas_fx.c | 2 +- lib_com/gs_gains_fx.c | 10 +- lib_com/gs_noisefill_fx.c | 26 +- lib_com/hp50_fx.c | 28 +- lib_com/hq2_bit_alloc_fx.c | 2 +- lib_com/hq2_core_com_fx.c | 8 +- lib_com/hq2_noise_inject_fx.c | 16 +- lib_com/ifft_rel_fx.c | 58 ++-- lib_com/interpol_fx.c | 2 +- lib_com/low_rate_band_att_fx.c | 8 +- lib_com/lpc_tools_fx.c | 44 +-- lib_com/lsf_tools_fx.c | 48 +-- lib_com/lsp_conv_poly_fx.c | 30 +- lib_com/math_op.c | 14 +- lib_com/modif_fs_fx.c | 112 +++---- lib_com/oper_32b.c | 14 +- lib_com/phase_dispersion_fx.c | 2 +- lib_com/ppp_fx.c | 4 +- lib_com/pred_lt4_fx.c | 12 +- lib_com/preemph_fx.c | 22 +- lib_com/pvq_com_fx.c | 4 +- lib_com/residu_fx.c | 20 +- lib_com/stat_noise_uv_mod_fx.c | 10 +- lib_com/swb_tbe_com_fx.c | 106 +++---- lib_com/syn_filt_fx.c | 22 +- lib_com/tcx_ltp_fx.c | 8 +- lib_com/tcx_mdct_fx.c | 4 +- lib_com/tools_fx.c | 72 ++--- lib_com/weight_a_fx.c | 2 +- lib_com/wi_fx.c | 208 ++++++------ lib_com/window_fx.c | 4 +- lib_dec/FEC_HQ_core_fx.c | 14 +- lib_dec/FEC_HQ_phase_ecu_fx.c | 2 +- lib_dec/FEC_fx.c | 18 +- lib_dec/LD_music_post_filter_fx.c | 12 +- lib_dec/acelp_core_switch_dec_fx.c | 2 +- lib_dec/core_switching_dec_fx.c | 22 +- lib_dec/dec_higher_acelp_fx.c | 2 +- lib_dec/dec_pit_exc_fx.c | 2 +- lib_dec/dec_post_fx.c | 14 +- lib_dec/dec_tcx_fx.c | 24 +- lib_dec/er_dec_tcx_fx.c | 4 +- lib_dec/er_scale_syn_fx.c | 2 +- lib_dec/er_sync_exc_fx.c | 6 +- lib_dec/er_util_fx.c | 2 +- lib_dec/evs_dec_fx.c | 2 +- lib_dec/fd_cng_dec_fx.c | 2 +- lib_dec/gain_dec_fx.c | 2 +- lib_dec/hf_synth_fx.c | 12 +- lib_dec/igf_dec_fx.c | 8 +- lib_dec/ivas_core_dec_fx.c | 2 +- lib_dec/pitch_extr_fx.c | 2 +- lib_dec/post_dec_fx.c | 4 +- lib_dec/pvq_core_dec_fx.c | 2 +- lib_dec/pvq_decode_fx.c | 4 +- lib_dec/swb_tbe_dec_fx.c | 14 +- lib_dec/syn_outp_fx.c | 2 +- lib_dec/tonalMDCTconcealment_fx.c | 4 +- lib_dec/transition_dec_fx.c | 2 +- 63 files changed, 811 insertions(+), 811 deletions(-) diff --git a/lib_com/fft_fx_evs.c b/lib_com/fft_fx_evs.c index 6572b57d7..221bdc533 100644 --- a/lib_com/fft_fx_evs.c +++ b/lib_com/fft_fx_evs.c @@ -1219,9 +1219,9 @@ static void fft5_32_16fx( T6 = zRe[i3]; move16(); #ifdef ISSUE_1836_replace_overflow_libcom - T7 = add_sat( T5, T6 ); //??sat - T8 = add_sat( T4, T7 ); //??sat - Tt = sub_sat( T5, T6 ); //??sat + T7 = add_sat( T5, T6 ); + T8 = add_sat( T4, T7 ); + Tt = sub_sat( T5, T6 ); #else T7 = add_o( T5, T6, &Overflow ); T8 = add_o( T4, T7, &Overflow ); @@ -1249,9 +1249,9 @@ static void fft5_32_16fx( Tn = round_fx_sat( L_tmp ); // Qx #ifdef ISSUE_1836_replace_overflow_libcom - zRe[i0] = add_sat( T1, T8 ); //??sat + zRe[i0] = add_sat( T1, T8 ); move16(); - zIm[i0] = add_sat( To, Tp ); //??sat + zIm[i0] = add_sat( To, Tp ); move32(); #else zRe[i0] = add_o( T1, T8, &Overflow ); @@ -1276,13 +1276,13 @@ static void fft5_32_16fx( T5 = sub_sat( T6, T9 ); #ifdef ISSUE_1836_replace_overflow_libcom - zRe[i3] = sub_sat( T4, T2 ); //??sat + zRe[i3] = sub_sat( T4, T2 ); move32(); - zRe[i1] = add_sat( T5, T3 ); //??sat + zRe[i1] = add_sat( T5, T3 ); move32(); - zRe[i2] = add_sat( T4, T2 ); //??sat + zRe[i2] = add_sat( T4, T2 ); move32(); - zRe[i4] = sub_sat( T5, T3 ); //??sat + zRe[i4] = sub_sat( T5, T3 ); move32(); #else zRe[i3] = sub_o( T4, T2, &Overflow ); @@ -1759,12 +1759,12 @@ static void cftfsub_16fx( FOR( j = 0; j < l; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - j1 = add_sat( j, l ); //??sat - x0r = sub_sat( a[j], a[j1] ); //??sat - x0i = sub_sat( a[j + 1], a[j1 + 1] ); //??sat - a[j] = add_sat( a[j], a[j1] ); //??sat + j1 = add_sat( j, l ); + x0r = sub_sat( a[j], a[j1] ); + x0i = sub_sat( a[j + 1], a[j1 + 1] ); + a[j] = add_sat( a[j], a[j1] ); move16(); - a[j + 1] = add_sat( a[j + 1], a[j1 + 1] ); //??sat + a[j + 1] = add_sat( a[j + 1], a[j1 + 1] ); move16(); #else j1 = add_o( j, l, &Overflow ); @@ -1807,72 +1807,72 @@ static void cft1st_16fx( #endif #ifdef ISSUE_1836_replace_overflow_libcom - x0r = add_sat( a[0], a[2] ); //??sat - x0i = add_sat( a[1], a[3] ); //??sat - x1r = sub_sat( a[0], a[2] ); //??sat - x1i = sub_sat( a[1], a[3] ); //??sat - x2r = add_sat( a[4], a[6] ); //??sat - x2i = add_sat( a[5], a[7] ); //??sat - x3r = sub_sat( a[4], a[6] ); //??sat - x3i = sub_sat( a[5], a[7] ); //??sat - a[0] = add_sat( x0r, x2r ); //??sat + x0r = add_sat( a[0], a[2] ); + x0i = add_sat( a[1], a[3] ); + x1r = sub_sat( a[0], a[2] ); + x1i = sub_sat( a[1], a[3] ); + x2r = add_sat( a[4], a[6] ); + x2i = add_sat( a[5], a[7] ); + x3r = sub_sat( a[4], a[6] ); + x3i = sub_sat( a[5], a[7] ); + a[0] = add_sat( x0r, x2r ); move16(); - a[1] = add_sat( x0i, x2i ); //??sat + a[1] = add_sat( x0i, x2i ); move16(); - a[4] = sub_sat( x0r, x2r ); //??sat + a[4] = sub_sat( x0r, x2r ); move16(); - a[5] = sub_sat( x0i, x2i ); //??sat + a[5] = sub_sat( x0i, x2i ); move16(); - a[2] = sub_sat( x1r, x3i ); //??sat + a[2] = sub_sat( x1r, x3i ); move16(); - a[3] = add_sat( x1i, x3r ); //??sat + a[3] = add_sat( x1i, x3r ); move16(); - a[6] = add_sat( x1r, x3i ); //??sat + a[6] = add_sat( x1r, x3i ); move16(); - a[7] = sub_sat( x1i, x3r ); //??sat + a[7] = sub_sat( x1i, x3r ); wk1r = w[2]; move32(); - x0r = add_sat( a[8], a[10] ); //??sat - x0i = add_sat( a[9], a[11] ); //??sat - x1r = sub_sat( a[8], a[10] ); //??sat - x1i = sub_sat( a[9], a[11] ); //??sat - x2r = add_sat( a[12], a[14] ); //??sat - x2i = add_sat( a[13], a[15] ); //??sat - x3r = sub_sat( a[12], a[14] ); //??sat - x3i = sub_sat( a[13], a[15] ); //??sat - a[8] = add_sat( x0r, x2r ); //??sat + x0r = add_sat( a[8], a[10] ); + x0i = add_sat( a[9], a[11] ); + x1r = sub_sat( a[8], a[10] ); + x1i = sub_sat( a[9], a[11] ); + x2r = add_sat( a[12], a[14] ); + x2i = add_sat( a[13], a[15] ); + x3r = sub_sat( a[12], a[14] ); + x3i = sub_sat( a[13], a[15] ); + a[8] = add_sat( x0r, x2r ); move16(); - a[9] = add_sat( x0i, x2i ); //??sat + a[9] = add_sat( x0i, x2i ); move16(); - a[12] = sub_sat( x2i, x0i ); //??sat + a[12] = sub_sat( x2i, x0i ); move16(); - a[13] = sub_sat( x0r, x2r ); //??sat + a[13] = sub_sat( x0r, x2r ); move16(); - x0r = sub_sat( x1r, x3i ); //??sat - x0i = add_sat( x1i, x3r ); //??sat - tmp = sub_sat( x0r, x0i ); //??sat + x0r = sub_sat( x1r, x3i ); + x0i = add_sat( x1i, x3r ); + tmp = sub_sat( x0r, x0i ); L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[10] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + a[10] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - tmp = add_sat( x0r, x0i ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ //??sat - a[11] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /* Q(Qx+Q_edct)*/ //??sat + tmp = add_sat( x0r, x0i ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[11] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /* Q(Qx+Q_edct)*/ move16(); - x0r = add_sat( x3i, x1r ); //??sat - x0i = sub_sat( x3r, x1i ); //??sat - tmp = sub_sat( x0i, x0r ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ //??sat - a[14] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + x0r = add_sat( x3i, x1r ); + x0i = sub_sat( x3r, x1i ); + tmp = sub_sat( x0i, x0r ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[14] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - tmp = add_sat( x0i, x0r ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[15] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + tmp = add_sat( x0i, x0r ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[15] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); k1 = 0; move16(); @@ -1968,53 +1968,53 @@ static void cft1st_16fx( L_tmp = L_shl( Mult_32_32( wk2i, wk1r ), 1 ); /*Q29 */ wk3i = L_sub( L_shl( L_tmp, 1 ), wk1i ); /*Q30 */ #ifdef ISSUE_1836_replace_overflow_libcom - x0r = add_sat( a[j], a[j + 2] ); //??sat - x0i = add_sat( a[j + 1], a[j + 3] ); //??sat - x1r = sub_sat( a[j], a[j + 2] ); //??sat - x1i = sub_sat( a[j + 1], a[j + 3] ); //??sat - x2r = add_sat( a[j + 4], a[j + 6] ); //??sat - x2i = add_sat( a[j + 5], a[j + 7] ); //??sat - x3r = sub_sat( a[j + 4], a[j + 6] ); //??sat - x3i = sub_sat( a[j + 5], a[j + 7] ); //??sat - a[j] = add_sat( x0r, x2r ); //??sat + x0r = add_sat( a[j], a[j + 2] ); + x0i = add_sat( a[j + 1], a[j + 3] ); + x1r = sub_sat( a[j], a[j + 2] ); + x1i = sub_sat( a[j + 1], a[j + 3] ); + x2r = add_sat( a[j + 4], a[j + 6] ); + x2i = add_sat( a[j + 5], a[j + 7] ); + x3r = sub_sat( a[j + 4], a[j + 6] ); + x3i = sub_sat( a[j + 5], a[j + 7] ); + a[j] = add_sat( x0r, x2r ); move16(); - a[j + 1] = add_sat( x0i, x2i ); //??sat + a[j + 1] = add_sat( x0i, x2i ); move16(); - x0r = sub_sat( x0r, x2r ); //??sat - x0i = sub_sat( x0i, x2i ); //??sat - L_tmp = Mult_32_16( wk2r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk2i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 4] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + x0r = sub_sat( x0r, x2r ); + x0i = sub_sat( x0i, x2i ); + L_tmp = Mult_32_16( wk2r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk2i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 4] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk2r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk2i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 5] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk2i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 5] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); x0r = sub_sat( x1r, x3i ); x0i = add_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); x0r = add_sat( x1r, x3i ); x0i = sub_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 6] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 6] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 7] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 7] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); wk1r = w[k2 + 2]; @@ -2027,56 +2027,56 @@ static void cft1st_16fx( L_tmp = L_shl( Mult_32_32( wk2r, wk1r ), 1 ); /*Q29 */ wk3i = L_sub( L_shl( L_tmp, 1 ), wk1i ); /*Q30 */ - x0r = add_sat( a[j + 8], a[j + 10] ); //??sat - x0i = add_sat( a[j + 9], a[j + 11] ); //??sat - x1r = sub_sat( a[j + 8], a[j + 10] ); //??sat - x1i = sub_sat( a[j + 9], a[j + 11] ); //??sat - x2r = add_sat( a[j + 12], a[j + 14] ); //??sat - x2i = add_sat( a[j + 13], a[j + 15] ); //??sat - x3r = sub_sat( a[j + 12], a[j + 14] ); //??sat - x3i = sub_sat( a[j + 13], a[j + 15] ); //??sat - a[j + 8] = add_sat( x0r, x2r ); //??sat + x0r = add_sat( a[j + 8], a[j + 10] ); + x0i = add_sat( a[j + 9], a[j + 11] ); + x1r = sub_sat( a[j + 8], a[j + 10] ); + x1i = sub_sat( a[j + 9], a[j + 11] ); + x2r = add_sat( a[j + 12], a[j + 14] ); + x2i = add_sat( a[j + 13], a[j + 15] ); + x3r = sub_sat( a[j + 12], a[j + 14] ); + x3i = sub_sat( a[j + 13], a[j + 15] ); + a[j + 8] = add_sat( x0r, x2r ); move16(); - a[j + 9] = add_sat( x0i, x2i ); //??sat + a[j + 9] = add_sat( x0i, x2i ); move16(); - x0r = sub_sat( x0r, x2r ); //??sat - x0i = sub_sat( x0i, x2i ); //??sat + x0r = sub_sat( x0r, x2r ); + x0i = sub_sat( x0i, x2i ); tmp = negate( x0r ); - L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk2r, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 12] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk2r, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 12] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); tmp = negate( x0i ); - L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk2r, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 13] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk2r, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 13] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = sub_sat( x1r, x3i ); //??sat - x0i = add_sat( x1i, x3r ); //??sat - L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 10] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + x0r = sub_sat( x1r, x3i ); + x0i = add_sat( x1i, x3r ); + L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 10] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 11] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 11] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = add_sat( x1r, x3i ); //??sat - x0i = sub_sat( x1i, x3r ); //??sat + x0r = add_sat( x1r, x3i ); + x0i = sub_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j + 14] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j + 14] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j + 15] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j + 15] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); #else x0r = add_o( a[j], a[j + 2], &Overflow ); @@ -2222,32 +2222,32 @@ static void cftmdl_16fx( FOR( j = 0; j < l; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - j1 = add_sat( j, l ); //??sat - j2 = add_sat( j1, l ); //??sat - j3 = add_sat( j2, l ); //??sat - x0r = add_sat( a[j], a[j1] ); //??sat - x0i = add_sat( a[j + 1], a[j1 + 1] ); //??sat - x1r = sub_sat( a[j], a[j1] ); //??sat - x1i = sub_sat( a[j + 1], a[j1 + 1] ); //??sat - x2r = add_sat( a[j2], a[j3] ); //??sat - x2i = add_sat( a[j2 + 1], a[j3 + 1] ); //??sat - x3r = sub_sat( a[j2], a[j3] ); //??sat - x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); //??sat - a[j] = add_sat( x0r, x2r ); //??sat + j1 = add_sat( j, l ); + j2 = add_sat( j1, l ); + j3 = add_sat( j2, l ); + x0r = add_sat( a[j], a[j1] ); + x0i = add_sat( a[j + 1], a[j1 + 1] ); + x1r = sub_sat( a[j], a[j1] ); + x1i = sub_sat( a[j + 1], a[j1 + 1] ); + x2r = add_sat( a[j2], a[j3] ); + x2i = add_sat( a[j2 + 1], a[j3 + 1] ); + x3r = sub_sat( a[j2], a[j3] ); + x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); + a[j] = add_sat( x0r, x2r ); move16(); - a[j + 1] = add_sat( x0i, x2i ); //??sat + a[j + 1] = add_sat( x0i, x2i ); move16(); - a[j2] = sub_sat( x0r, x2r ); //??sat + a[j2] = sub_sat( x0r, x2r ); move16(); - a[j2 + 1] = sub_sat( x0i, x2i ); //??sat + a[j2 + 1] = sub_sat( x0i, x2i ); move16(); - a[j1] = sub_sat( x1r, x3i ); //??sat + a[j1] = sub_sat( x1r, x3i ); move16(); - a[j1 + 1] = add_sat( x1i, x3r ); //??sat + a[j1 + 1] = add_sat( x1i, x3r ); move16(); - a[j3] = add_sat( x1r, x3i ); //??sat + a[j3] = add_sat( x1r, x3i ); move16(); - a[j3 + 1] = sub_sat( x1i, x3r ); //??sat + a[j3 + 1] = sub_sat( x1i, x3r ); move16(); #else j1 = add_o( j, l, &Overflow ); @@ -2286,48 +2286,48 @@ static void cftmdl_16fx( FOR( j = m; j < tmp2; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - j1 = add_sat( j, l ); //??sat - j2 = add_sat( j1, l ); //??sat - j3 = add_sat( j2, l ); //??sat - x0r = add_sat( a[j], a[j1] ); //??sat - x0i = add_sat( a[j + 1], a[j1 + 1] ); //??sat - x1r = sub_sat( a[j], a[j1] ); //??sat - x1i = sub_sat( a[j + 1], a[j1 + 1] ); //??sat - x2r = add_sat( a[j2], a[j3] ); //??sat - x2i = add_sat( a[j2 + 1], a[j3 + 1] ); //??sat - x3r = sub_sat( a[j2], a[j3] ); //??sat - x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); //??sat - a[j] = add_sat( x0r, x2r ); //??sat + j1 = add_sat( j, l ); + j2 = add_sat( j1, l ); + j3 = add_sat( j2, l ); + x0r = add_sat( a[j], a[j1] ); + x0i = add_sat( a[j + 1], a[j1 + 1] ); + x1r = sub_sat( a[j], a[j1] ); + x1i = sub_sat( a[j + 1], a[j1 + 1] ); + x2r = add_sat( a[j2], a[j3] ); + x2i = add_sat( a[j2 + 1], a[j3 + 1] ); + x3r = sub_sat( a[j2], a[j3] ); + x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); + a[j] = add_sat( x0r, x2r ); move16(); - a[j + 1] = add_sat( x0i, x2i ); //??sat + a[j + 1] = add_sat( x0i, x2i ); move16(); - a[j2] = sub_sat( x2i, x0i ); //??sat + a[j2] = sub_sat( x2i, x0i ); move16(); - a[j2 + 1] = sub_sat( x0r, x2r ); //??sat + a[j2 + 1] = sub_sat( x0r, x2r ); move16(); - x0r = sub_sat( x1r, x3i ); //??sat - x0i = add_sat( x1i, x3r ); //??sat - tmp = sub_sat( x0r, x0i ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + x0r = sub_sat( x1r, x3i ); + x0i = add_sat( x1i, x3r ); + tmp = sub_sat( x0r, x0i ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - tmp = add_sat( x0r, x0i ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + tmp = add_sat( x0r, x0i ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = add_sat( x3i, x1r ); //??sat - x0i = sub_sat( x3r, x1i ); //??sat - tmp = sub_sat( x0i, x0r ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + x0r = add_sat( x3i, x1r ); + x0i = sub_sat( x3r, x1i ); + tmp = sub_sat( x0i, x0r ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - tmp = add_sat( x0i, x0r ); //??sat - L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ - a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + tmp = add_sat( x0i, x0r ); + L_tmp = Mult_32_16( wk1r, tmp ); /*Q(15+Qx+Q_edct) */ + a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); #else j1 = add_o( j, l, &Overflow ); @@ -2401,60 +2401,60 @@ static void cftmdl_16fx( FOR( j = k; j < tmp2; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - j1 = add_sat( j, l ); //??sat - j2 = add_sat( j1, l ); //??sat - j3 = add_sat( j2, l ); //??sat - x0r = add_sat( a[j], a[j1] ); //??sat - x0i = add_sat( a[j + 1], a[j1 + 1] ); //??sat - x1r = sub_sat( a[j], a[j1] ); //??sat - x1i = sub_sat( a[j + 1], a[j1 + 1] ); //??sat - x2r = add_sat( a[j2], a[j3] ); //??sat - x2i = add_sat( a[j2 + 1], a[j3 + 1] ); //??sat - x3r = sub_sat( a[j2], a[j3] ); //??sat - x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); //??sat - a[j] = add_sat( x0r, x2r ); //??sat + j1 = add_sat( j, l ); + j2 = add_sat( j1, l ); + j3 = add_sat( j2, l ); + x0r = add_sat( a[j], a[j1] ); + x0i = add_sat( a[j + 1], a[j1 + 1] ); + x1r = sub_sat( a[j], a[j1] ); + x1i = sub_sat( a[j + 1], a[j1 + 1] ); + x2r = add_sat( a[j2], a[j3] ); + x2i = add_sat( a[j2 + 1], a[j3 + 1] ); + x3r = sub_sat( a[j2], a[j3] ); + x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); + a[j] = add_sat( x0r, x2r ); move16(); - a[j + 1] = add_sat( x0i, x2i ); //??sat + a[j + 1] = add_sat( x0i, x2i ); move16(); - x0r = sub_sat( x0r, x2r ); //??sat - x0i = sub_sat( x0i, x2i ); //??sat + x0r = sub_sat( x0r, x2r ); + x0i = sub_sat( x0i, x2i ); - L_tmp = Mult_32_16( wk2r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk2i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk2i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk2r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk2i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j2 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk2i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j2 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = sub_sat( x1r, x3i ); //??sat - x0i = add_sat( x1i, x3r ); //??sat + x0r = sub_sat( x1r, x3i ); + x0i = add_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); L_x0r = L_add( (Word32) x1r, (Word32) x3i ); L_x0i = L_sub( (Word32) x1i, (Word32) x3r ); x0r = extract_l( L_x0r ); x0i = extract_l( L_x0i ); - L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); #else j1 = add_o( j, l, &Overflow ); @@ -2520,11 +2520,11 @@ static void cftmdl_16fx( wk1i = w[k2 + 3]; move32(); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( Mult_32_32( wk2r, wk1i ), 1 ); /*Q29 */ //??sat - wk3r = L_sub_sat( wk1r, L_shl_sat( L_tmp, 1 ) ); /*Q30 */ //??sat + L_tmp = L_shl_sat( Mult_32_32( wk2r, wk1i ), 1 ); /*Q29 */ + wk3r = L_sub_sat( wk1r, L_shl_sat( L_tmp, 1 ) ); /*Q30 */ - L_tmp = L_shl_sat( Mult_32_32( wk2r, wk1r ), 1 ); /*Q29 */ //??sat - wk3i = L_sub_sat( L_shl_sat( L_tmp, 1 ), wk1i ); /*Q30 */ //??sat + L_tmp = L_shl_sat( Mult_32_32( wk2r, wk1r ), 1 ); /*Q29 */ + wk3i = L_sub_sat( L_shl_sat( L_tmp, 1 ), wk1i ); /*Q30 */ tmp2 = add( l, add( k, m ) ); #else L_tmp = L_shl_o( Mult_32_32( wk2r, wk1i ), 1, &Overflow ); /*Q29 */ @@ -2537,61 +2537,61 @@ static void cftmdl_16fx( FOR( j = add( k, m ); j < tmp2; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - j1 = add_sat( j, l ); //??sat - j2 = add_sat( j1, l ); //??sat - j3 = add_sat( j2, l ); //??sat - x0r = add_sat( a[j], a[j1] ); //??sat - x0i = add_sat( a[j + 1], a[j1 + 1] ); //??sat - x1r = sub_sat( a[j], a[j1] ); //??sat - x1i = sub_sat( a[j + 1], a[j1 + 1] ); //??sat - x2r = add_sat( a[j2], a[j3] ); //??sat - x2i = add_sat( a[j2 + 1], a[j3 + 1] ); //??sat - x3r = sub_sat( a[j2], a[j3] ); //??sat - x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); //??sat - a[j] = add_sat( x0r, x2r ); //??sat + j1 = add_sat( j, l ); + j2 = add_sat( j1, l ); + j3 = add_sat( j2, l ); + x0r = add_sat( a[j], a[j1] ); + x0i = add_sat( a[j + 1], a[j1 + 1] ); + x1r = sub_sat( a[j], a[j1] ); + x1i = sub_sat( a[j + 1], a[j1 + 1] ); + x2r = add_sat( a[j2], a[j3] ); + x2i = add_sat( a[j2 + 1], a[j3 + 1] ); + x3r = sub_sat( a[j2], a[j3] ); + x3i = sub_sat( a[j2 + 1], a[j3 + 1] ); + a[j] = add_sat( x0r, x2r ); move16(); - a[j + 1] = add_sat( x0i, x2i ); //??sat + a[j + 1] = add_sat( x0i, x2i ); move16(); - x0r = sub_sat( x0r, x2r ); //??sat - x0i = sub_sat( x0i, x2i ); //??sat + x0r = sub_sat( x0r, x2r ); + x0i = sub_sat( x0i, x2i ); tmp = negate( x0r ); - L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk2r, x0i ); /*Q(15+Qx+Q_edct) */ - a[j2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk2r, x0i ); /*Q(15+Qx+Q_edct) */ + a[j2] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); tmp = negate( x0i ); - L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk2r, x0r ); /*Q(15+Qx+Q_edct) */ - a[j2 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk2i, tmp ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk2r, x0r ); /*Q(15+Qx+Q_edct) */ + a[j2 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = sub_sat( x1r, x3i ); //??sat - x0i = add_sat( x1i, x3r ); //??sat + x0r = sub_sat( x1r, x3i ); + x0i = add_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk1i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk1r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk1i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j1 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - x0r = add_sat( x1r, x3i ); //??sat - x0i = sub_sat( x1i, x3r ); //??sat + x0r = add_sat( x1r, x3i ); + x0i = sub_sat( x1i, x3r ); - L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ - L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ - a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ + L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ + a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); - L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ - L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ - a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ //??sat + L_tmp = Mult_32_16( wk3r, x0i ); /*Q(15+Qx+Q_edct) */ + L_tmp = Madd_32_16( L_tmp, wk3i, x0r ); /*Q(15+Qx+Q_edct) */ + a[j3 + 1] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ move16(); #else j1 = add_o( j, l, &Overflow ); diff --git a/lib_com/frame_ener_fx.c b/lib_com/frame_ener_fx.c index c641bef51..b25f5520b 100644 --- a/lib_com/frame_ener_fx.c +++ b/lib_com/frame_ener_fx.c @@ -250,7 +250,7 @@ Word16 frame_energy_fx( /* o : Frame energy in Q8 /* len = (0.5f * (pitch[2]/64.0 + pitch[3]/64.0) + 0.5f) */ #ifdef ISSUE_1836_replace_overflow_libcom - len = mult_r( add_sat( pitch[2], pitch[3] ), 256 ); //??sat + len = mult_r( add_sat( pitch[2], pitch[3] ), 256 ); #else len = mult_r( add_o( pitch[2], pitch[3], &Overflow ), 256 ); #endif @@ -285,13 +285,13 @@ Word16 frame_energy_fx( /* o : Frame energy in Q8 /*add ld(2^exp1)=exp1 but check format, first*/ tmp16 = sub( sub( 15, norm_s( exp1 ) ), 5 ); /*factor to shift Ltmp and exp1 with (shr) to avoid overflows when adding*/ #ifdef ISSUE_1836_replace_overflow_libcom - Ltmp = L_shr_sat( Ltmp, tmp16 ); /*Q25, tmp16*/ //??sat + Ltmp = L_shr_sat( Ltmp, tmp16 ); /*Q25, tmp16*/ #else Ltmp = L_shr_o( Ltmp, tmp16, &Overflow ); /*Q25, tmp16*/ #endif exp2 = shr( exp1, tmp16 ); /*Q0 , tmp16*/ #ifdef ISSUE_1836_replace_overflow_libcom - Ltmp = L_add_sat( Ltmp, L_shl( L_deposit_l( exp2 ), 25 ) ); /*Q25, tmp16, normalized*/ //??sat + Ltmp = L_add_sat( Ltmp, L_shl( L_deposit_l( exp2 ), 25 ) ); /*Q25, tmp16, normalized*/ #else Ltmp = L_add_o( Ltmp, L_shl( L_deposit_l( exp2 ), 25 ), &Overflow ); /*Q25, tmp16, normalized*/ #endif @@ -299,9 +299,9 @@ Word16 frame_energy_fx( /* o : Frame energy in Q8 /*make 10*log10 out of log2*/ Ltmp = Mpy_32_16_1( Ltmp, LG10 ); /*Q25,tmp16 * Q13 = Q23, tmp16*/ #ifdef ISSUE_1836_replace_overflow_libcom - *frame_ener = extract_h( L_shl_sat( Ltmp, add( tmp16, 1 ) ) ); /*Q8*/ //??sat + *frame_ener = extract_h( L_shl_sat( Ltmp, add( tmp16, 1 ) ) ); /*Q8*/ move16(); - enern = sub_sat( *frame_ener, lp_speech ); /*Q8*/ //??sat + enern = sub_sat( *frame_ener, lp_speech ); /*Q8*/ #else *frame_ener = extract_h( L_shl_o( Ltmp, add( tmp16, 1 ), &Overflow ) ); /*Q8*/ move16(); diff --git a/lib_com/get_gain_fx.c b/lib_com/get_gain_fx.c index 8d10f3c4d..c761cde91 100644 --- a/lib_com/get_gain_fx.c +++ b/lib_com/get_gain_fx.c @@ -73,8 +73,8 @@ Word32 get_gain( /* output: codebook gain (adaptive or fixed) tener = Dot_productSq16HQ( 0, y, n, &exp_e ); #ifdef ISSUE_1836_replace_overflow_libcom - BASOP_Util_Divide_MantExp( round_fx_sat( tcorr ), exp_c, s_max( round_fx_sat( tener ), 1 ), exp_e, &tmp, &exp ); //??sat - Lgain = L_shl_sat( L_deposit_l( tmp ) /*Q15*/, add( 1, exp ) ) /*Q16*/; //?sat + BASOP_Util_Divide_MantExp( round_fx_sat( tcorr ), exp_c, s_max( round_fx_sat( tener ), 1 ), exp_e, &tmp, &exp ); + Lgain = L_shl_sat( L_deposit_l( tmp ) /*Q15*/, add( 1, exp ) ) /*Q16*/; //?sat #else BASOP_Util_Divide_MantExp( round_fx_o( tcorr, &Overflow ), exp_c, s_max( round_fx_o( tener, &Overflow ), 1 ), exp_e, &tmp, &exp ); Lgain = L_shl_o( L_deposit_l( tmp ) /*Q15*/, add( 1, exp ), &Overflow ) /*Q16*/; @@ -140,7 +140,7 @@ Word32 get_gain2( /* output: codebook gain (adaptive or fixed) Q_corr = sub( Q_corr, Q_ener ); #ifdef ISSUE_1836_replace_overflow_libcom - Lgain = L_shl_sat( L_deposit_l( m_corr ), add( Q_corr, 1 ) ); /* Lgain in Q16 */ //??sat + Lgain = L_shl_sat( L_deposit_l( m_corr ), add( Q_corr, 1 ) ); /* Lgain in Q16 */ #else Lgain = L_shl_o( L_deposit_l( m_corr ), add( Q_corr, 1 ), &Overflow ); /* Lgain in Q16 */ #endif diff --git a/lib_com/gs_bitallocation_fx.c b/lib_com/gs_bitallocation_fx.c index 5e3870a7e..59917f42c 100644 --- a/lib_com/gs_bitallocation_fx.c +++ b/lib_com/gs_bitallocation_fx.c @@ -96,7 +96,7 @@ void bands_and_bit_alloc_fx( /* To adapt current energy band to PVQ freq band for sorting*/ #ifdef ISSUE_1836_replace_overflow_libcom - ener_vec[0] = add_sat( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1] ); /*Q12 */ //??sat + ener_vec[0] = add_sat( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1] ); /*Q12 */ #else ener_vec[0] = add_o( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1], &Overflow ); /*Q12 */ #endif diff --git a/lib_com/gs_bitallocation_ivas_fx.c b/lib_com/gs_bitallocation_ivas_fx.c index 52e5fef7f..828d7933d 100644 --- a/lib_com/gs_bitallocation_ivas_fx.c +++ b/lib_com/gs_bitallocation_ivas_fx.c @@ -124,7 +124,7 @@ void bands_and_bit_alloc_ivas_fx( /* To adapt current energy band to PVQ freq band for sorting*/ #ifdef ISSUE_1836_replace_overflow_libcom - ener_vec[0] = add_sat( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1] ); /*Q12 */ //??sat + ener_vec[0] = add_sat( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1] ); /*Q12 */ #else ener_vec[0] = add_o( Ener_per_bd_iQ[0], Ener_per_bd_iQ[1], &Overflow ); /*Q12 */ #endif diff --git a/lib_com/gs_gains_fx.c b/lib_com/gs_gains_fx.c index 30501ff89..7f2cb7e63 100644 --- a/lib_com/gs_gains_fx.c +++ b/lib_com/gs_gains_fx.c @@ -111,8 +111,8 @@ void Comp_and_apply_gain_fx( FOR( i = StartBin; i < NB_Qbins + StartBin; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L32 = L_shl_sat( L_mult( exc_diffQ[i], y_gain ), tmp_exp ); /*Q_exc+16 */ //??sat - exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc */ //??sat + L32 = L_shl_sat( L_mult( exc_diffQ[i], y_gain ), tmp_exp ); /*Q_exc+16 */ + exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc */ move16(); #else L32 = L_shl_o( L_mult( exc_diffQ[i], y_gain ), tmp_exp, &Overflow ); /*Q_exc+16 */ @@ -146,7 +146,7 @@ void Comp_and_apply_gain_fx( { L32 = L_mult( exc_diffQ[i], y_gain ); /*Qexc_diff+15 */ #ifdef ISSUE_1836_replace_overflow_libcom - exc_diffQ[i] = round_fx_sat( L_shl_sat( L32, tmp_exp ) ); /*Q_exc */ //??sat //??sat + exc_diffQ[i] = round_fx_sat( L_shl_sat( L32, tmp_exp ) ); /*Q_exc */ #else exc_diffQ[i] = round_fx_o( L_shl_o( L32, tmp_exp, &Overflow ), &Overflow ); /*Q_exc */ #endif @@ -201,7 +201,7 @@ void Comp_and_apply_gain_ivas_fx( { L32 = L_mult( exc_diffQ[i], y_gain ); /*Q_exc+16-tmp_exp */ #ifdef ISSUE_1836_replace_overflow_libcom - exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc-tmp_exp */ //??sat + exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc-tmp_exp */ #else exc_diffQ[i] = round_fx_o( L32, &Overflow ); /*Q_exc-tmp_exp */ #endif @@ -242,7 +242,7 @@ void Comp_and_apply_gain_ivas_fx( { L32 = L_mult( exc_diffQ[i], y_gain ); /*Qexc_diff+15 */ #ifdef ISSUE_1836_replace_overflow_libcom - exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc-tmp_exp */ //??sat + exc_diffQ[i] = round_fx_sat( L32 ); /*Q_exc-tmp_exp */ #else exc_diffQ[i] = round_fx_o( L32, &Overflow ); /*Q_exc-tmp_exp */ #endif diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c index df8813844..5b8c54541 100644 --- a/lib_com/gs_noisefill_fx.c +++ b/lib_com/gs_noisefill_fx.c @@ -475,7 +475,7 @@ static void Decreas_freqPeak_fx( tmp1 = div_s( shl( 1, sub( 14, exp ) ), max_val ); /*Q(29 - exp - Q_exc) */ L_tmp = L_mult( tmp, tmp1 ); /*Q(30 - exp) */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q14 */ //??sat //??sat + tmp = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q14 */ #else tmp = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q14 */ #endif @@ -574,7 +574,7 @@ static void envelop_modify_fx( /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 14 ); #ifdef ISSUE_1836_replace_overflow_libcom - Ener1_fx = mult_r( 13107, shl_sat( tmp, exp ) ); /*Q0 */ //??sat + Ener1_fx = mult_r( 13107, shl_sat( tmp, exp ) ); /*Q0 */ #else Ener1_fx = mult_ro( 13107, shl_o( tmp, exp, &Overflow ), &Overflow ); /*Q0 */ #endif @@ -604,7 +604,7 @@ static void envelop_modify_fx( /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 14 ); #ifdef ISSUE_1836_replace_overflow_libcom - Ener1_fx = mult_r( 13107, shl_sat( tmp, exp ) ); /*Q0 */ //??sat + Ener1_fx = mult_r( 13107, shl_sat( tmp, exp ) ); /*Q0 */ #else Ener1_fx = mult_r( 13107, shl_o( tmp, exp, &Overflow ) ); /*Q0 */ #endif @@ -727,9 +727,9 @@ void highband_exc_dct_in_fx( /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 14 ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp1 = shl_sat( tmp, exp ); //??sat + tmp1 = shl_sat( tmp, exp ); move16(); - ener = add_sat( tmp1, ener ); /*Q0 */ //??sat + ener = add_sat( tmp1, ener ); /*Q0 */ #else tmp1 = shl_o( tmp, exp, &Overflow ); move16(); @@ -967,7 +967,7 @@ void highband_exc_dct_in_fx( tmp = sub( tmp, 7680 ); /*15 in Q9 = Q9 */ L_tmp = L_mult( exc_dct_in[i], tmp ); /*Q(Q_exc+10) */ #ifdef ISSUE_1836_replace_overflow_libcom - exc_dct_in[i] = round_fx_sat( L_shl_sat( L_tmp, 6 ) ); /*Q_exc */ //??sat //??sat + exc_dct_in[i] = round_fx_sat( L_shl_sat( L_tmp, 6 ) ); /*Q_exc */ #else exc_dct_in[i] = round_fx_o( L_shl_o( L_tmp, 6, &Overflow ), &Overflow ); /*Q_exc */ #endif @@ -1006,9 +1006,9 @@ void highband_exc_dct_in_fx( { tmp2 = *src; #ifdef ISSUE_1836_replace_overflow_libcom - *src = mult_r( 16384, sub_sat( *src, abs_s( *dst ) ) ); /*Q_exc */ //??sat + *src = mult_r( 16384, sub_sat( *src, abs_s( *dst ) ) ); /*Q_exc */ move16(); - tmp = mult_r( 16384, add_sat( tmp2, abs_s( *dst ) ) ); /*Q_exc */ //??sat + tmp = mult_r( 16384, add_sat( tmp2, abs_s( *dst ) ) ); /*Q_exc */ #else *src = mult_r( 16384, sub_o( *src, abs_s( *dst ), &Overflow ) ); /*Q_exc */ move16(); @@ -1123,9 +1123,9 @@ void highband_exc_dct_in_ivas_fx( /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 14 ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp1 = shl_sat( tmp, exp ); //??sat + tmp1 = shl_sat( tmp, exp ); move16(); - ener = add_sat( tmp1, ener ); /*Q0 */ //??sat + ener = add_sat( tmp1, ener ); /*Q0 */ #else tmp1 = shl_o( tmp, exp, &Overflow ); move16(); @@ -1478,7 +1478,7 @@ void highband_exc_dct_in_ivas_fx( tmp = sub( tmp, 7680 ); /*15 in Q9 = Q9 */ L_tmp = L_mult( exc_dct_in[i], tmp ); /*Q(Q_exc+10) */ #ifdef ISSUE_1836_replace_overflow_libcom - exc_dct_in[i] = round_fx_sat( L_shl_sat( L_tmp, 6 ) ); /*Q_exc */ //??sat //??sat + exc_dct_in[i] = round_fx_sat( L_shl_sat( L_tmp, 6 ) ); /*Q_exc */ #else exc_dct_in[i] = round_fx_o( L_shl_o( L_tmp, 6, &Overflow ), &Overflow ); /*Q_exc */ #endif @@ -1517,9 +1517,9 @@ void highband_exc_dct_in_ivas_fx( { tmp2 = *src; #ifdef ISSUE_1836_replace_overflow_libcom - *src = mult_r( 16384, sub_sat( *src, abs_s( *dst ) ) ); /*Q_exc */ //??sat + *src = mult_r( 16384, sub_sat( *src, abs_s( *dst ) ) ); /*Q_exc */ move16(); - tmp = mult_r( 16384, add_sat( tmp2, abs_s( *dst ) ) ); /*Q_exc */ //??sat + tmp = mult_r( 16384, add_sat( tmp2, abs_s( *dst ) ) ); /*Q_exc */ #else *src = mult_r( 16384, sub_o( *src, abs_s( *dst ), &Overflow ) ); /*Q_exc */ move16(); diff --git a/lib_com/hp50_fx.c b/lib_com/hp50_fx.c index 76ca278e6..9167f7875 100644 --- a/lib_com/hp50_fx.c +++ b/lib_com/hp50_fx.c @@ -109,10 +109,10 @@ static void filter_2nd_order( L_sum = L_add( L_sum, HP50_Mpy_32_32_fix( mem[1], a1 ) ); /* y1*a1 */ #ifdef ISSUE_1836_replace_overflow_libcom - L_y2 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); //??sat + L_y2 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); BASOP_SATURATE_ERROR_OFF_EVS BASOP_SATURATE_WARNING_OFF_EVS - signal[0] = round_fx_sat( L_shl_sat( L_y2, prescale ) ); //??sat //??sat + signal[0] = round_fx_sat( L_shl_sat( L_y2, prescale ) ); #else L_y2 = L_shl_o( L_sum, HP20_COEFF_SCALE, &Overflow ); BASOP_SATURATE_ERROR_OFF_EVS @@ -131,10 +131,10 @@ static void filter_2nd_order( L_sum = L_add( L_sum, HP50_Mpy_32_32_fix( L_y2, a1 ) ); /* y1*a1 */ #ifdef ISSUE_1836_replace_overflow_libcom - L_y1 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); //??sat + L_y1 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); BASOP_SATURATE_ERROR_OFF_EVS BASOP_SATURATE_WARNING_OFF_EVS - signal[stride] = round_fx_sat( L_shl_sat( L_y1, prescale ) ); //??sat + signal[stride] = round_fx_sat( L_shl_sat( L_y1, prescale ) ); #else L_y1 = L_shl_o( L_sum, HP20_COEFF_SCALE, &Overflow ); BASOP_SATURATE_ERROR_OFF_EVS @@ -157,10 +157,10 @@ static void filter_2nd_order( L_sum = L_add( L_sum, HP50_Mpy_32_32_fix( L_y1, a1 ) ); #ifdef ISSUE_1836_replace_overflow_libcom - L_y2 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); //??sat + L_y2 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); BASOP_SATURATE_ERROR_OFF_EVS BASOP_SATURATE_WARNING_OFF_EVS - signal[i_mult( i, stride )] = round_fx_sat( L_shl_sat( L_y2, prescale ) ); //??sat + signal[i_mult( i, stride )] = round_fx_sat( L_shl_sat( L_y2, prescale ) ); #else L_y2 = L_shl_o( L_sum, HP20_COEFF_SCALE, &Overflow ); BASOP_SATURATE_ERROR_OFF_EVS @@ -178,10 +178,10 @@ static void filter_2nd_order( L_sum = L_add( L_sum, HP50_Mpy_32_32_fix( L_y2, a1 ) ); #ifdef ISSUE_1836_replace_overflow_libcom - L_y1 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); //??sat + L_y1 = L_shl_sat( L_sum, HP20_COEFF_SCALE ); BASOP_SATURATE_ERROR_OFF_EVS BASOP_SATURATE_WARNING_OFF_EVS - signal[i_mult( add( i, 1 ), stride )] = round_fx_sat( L_shl_sat( L_y1, prescale ) ); //??sat + signal[i_mult( add( i, 1 ), stride )] = round_fx_sat( L_shl_sat( L_y1, prescale ) ); #else L_y1 = L_shl_o( L_sum, HP20_COEFF_SCALE, &Overflow ); BASOP_SATURATE_ERROR_OFF_EVS @@ -235,7 +235,7 @@ void hp20( Word16 signal[], /* i/o: signal to filter any * prescale = s_min( prescale, diff ); } #ifdef ISSUE_1836_replace_overflow_libcom - diff = norm_l( L_shl_sat( mem[3], prescaleOld ) ); //??sat + diff = norm_l( L_shl_sat( mem[3], prescaleOld ) ); #else diff = norm_l( L_shl_o( mem[3], prescaleOld, &Overflow ) ); #endif @@ -249,11 +249,11 @@ void hp20( Word16 signal[], /* i/o: signal to filter any * { diff = sub( prescale, prescaleOld ); #ifdef ISSUE_1836_replace_overflow_libcom - mem[0] = L_shr_sat( mem[0], diff ); //??sat + mem[0] = L_shr_sat( mem[0], diff ); move32(); - mem[1] = L_shr_sat( mem[1], diff ); //??sat + mem[1] = L_shr_sat( mem[1], diff ); move32(); - mem[2] = L_shr_sat( mem[2], diff ); //??sat + mem[2] = L_shr_sat( mem[2], diff ); move32(); mem[3] = L_shr_sat( mem[3], diff ); //?sat #else @@ -361,8 +361,8 @@ void hp20_fx_32( prescaleOld = extract_l( mem_fx[4] ); #ifdef ISSUE_1836_replace_overflow_libcom - diff_pos = norm_l( L_shl_sat( L_max( mem_fx[2], mem_fx[3] ), prescaleOld ) ); //??sat - diff_neg = norm_l( L_shl_sat( L_min( mem_fx[2], mem_fx[3] ), prescaleOld ) ); //??sat + diff_pos = norm_l( L_shl_sat( L_max( mem_fx[2], mem_fx[3] ), prescaleOld ) ); + diff_neg = norm_l( L_shl_sat( L_min( mem_fx[2], mem_fx[3] ), prescaleOld ) ); #else diff_pos = norm_l( L_shl_o( L_max( mem_fx[2], mem_fx[3] ), prescaleOld, &Overflow ) ); diff_neg = norm_l( L_shl_o( L_min( mem_fx[2], mem_fx[3] ), prescaleOld, &Overflow ) ); diff --git a/lib_com/hq2_bit_alloc_fx.c b/lib_com/hq2_bit_alloc_fx.c index 452481334..868617b84 100644 --- a/lib_com/hq2_bit_alloc_fx.c +++ b/lib_com/hq2_bit_alloc_fx.c @@ -573,7 +573,7 @@ void hq2_bit_alloc_har_fx( L_temp = Mult_32_16( L_Ravg_sub[GRP_SB - 1], sub( GRP_SB, 1 ) ); /* Qbe+0+1 */ L_temp = Mult_32_16( L_temp, Inv_norm_sum_fx ); /* Qbe+1+QIpb+1 */ #ifdef ISSUE_1836_replace_overflow_libcom - lf_hf_ge_r_fx = round_fx_sat( L_shl_sat( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); //??sat + lf_hf_ge_r_fx = round_fx_sat( L_shl_sat( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); #else lf_hf_ge_r_fx = round_fx_o( L_shl_o( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ), &Overflow ), &Overflow ); Overflow = 0; /* reset BASOP Overflow */ diff --git a/lib_com/hq2_core_com_fx.c b/lib_com/hq2_core_com_fx.c index 5c1a63f28..d6606178d 100644 --- a/lib_com/hq2_core_com_fx.c +++ b/lib_com/hq2_core_com_fx.c @@ -166,7 +166,7 @@ void mdct_spectrum_denorm_fx( Qpd = add( sub( exp_normn, exp_normd ), 15 ); #ifdef ISSUE_1836_replace_overflow_libcom - cond_fx = sub( shl_sat( pd_fx, sub( 15, Qpd ) ), pd_thresh_fx /*Q15*/ ); /* Q15 */ //??sat + cond_fx = sub( shl_sat( pd_fx, sub( 15, Qpd ) ), pd_thresh_fx /*Q15*/ ); /* Q15 */ #else cond_fx = sub( shl_o( pd_fx, sub( 15, Qpd ), &Overflow ), pd_thresh_fx /*Q15*/ ); /* Q15 */ Overflow = 0; @@ -203,7 +203,7 @@ void mdct_spectrum_denorm_fx( L_tmp = L_mult( gamma_fx, gain_tweak_fx ); /* Qgamma+Qtweak+1 */ exp_norm = norm_l( L_tmp ); #ifdef ISSUE_1836_replace_overflow_libcom - gamma_fx = round_fx_sat( L_shl( L_tmp, exp_norm ) ); //??sat + gamma_fx = round_fx_sat( L_shl( L_tmp, exp_norm ) ); #else gamma_fx = round_fx_o( L_shl_o( L_tmp, exp_norm, &Overflow ), &Overflow ); #endif @@ -348,7 +348,7 @@ void mdct_spectrum_denorm_ivas_fx( Qpd = add( sub( exp_normn, exp_normd ), 15 ); #ifdef ISSUE_1836_replace_overflow_libcom - cond_fx = sub( shl_sat( pd_fx, sub( 15, Qpd ) ), pd_thresh_fx /*Q15*/ ); /* Q15 */ //??sat + cond_fx = sub( shl_sat( pd_fx, sub( 15, Qpd ) ), pd_thresh_fx /*Q15*/ ); /* Q15 */ #else cond_fx = sub( shl_o( pd_fx, sub( 15, Qpd ), &Overflow ), pd_thresh_fx /*Q15*/ ); /* Q15 */ Overflow = 0; @@ -385,7 +385,7 @@ void mdct_spectrum_denorm_ivas_fx( L_tmp = L_mult( gamma_fx, gain_tweak_fx ); /* Qgamma+Qtweak+1 */ exp_norm = norm_l( L_tmp ); #ifdef ISSUE_1836_replace_overflow_libcom - gamma_fx = round_fx_sat( L_shl( L_tmp, exp_norm ) ); //??sat + gamma_fx = round_fx_sat( L_shl( L_tmp, exp_norm ) ); #else gamma_fx = round_fx_o( L_shl_o( L_tmp, exp_norm, &Overflow ), &Overflow ); #endif diff --git a/lib_com/hq2_noise_inject_fx.c b/lib_com/hq2_noise_inject_fx.c index 7f61e9a91..9f013a3b0 100644 --- a/lib_com/hq2_noise_inject_fx.c +++ b/lib_com/hq2_noise_inject_fx.c @@ -93,7 +93,7 @@ void hq2_noise_inject_fx( FOR( i = 0; i < bands; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - Ep_fx[i] = L_shl_sat( Ep_fx[i], 6 ); /* Q-6 -> Q0 */ //??sat + Ep_fx[i] = L_shl_sat( Ep_fx[i], 6 ); /* Q-6 -> Q0 */ #else Ep_fx[i] = L_shl_o( Ep_fx[i], 6, &Overflow ); /* Q-6 -> Q0 */ #endif @@ -162,7 +162,7 @@ void hq2_noise_inject_fx( move16(); tmp = sub( 17, Q_env_fx[k] ); #ifdef ISSUE_1836_replace_overflow_libcom - env_fx2[k] = extract_h( L_shl_sat( env_fx[k], tmp ) ); /*Q1 */ //??sat + env_fx2[k] = extract_h( L_shl_sat( env_fx[k], tmp ) ); /*Q1 */ #else env_fx2[k] = extract_h( L_shl_o( env_fx[k], tmp, &Overflow ) ); /*Q1 */ #endif @@ -177,7 +177,7 @@ void hq2_noise_inject_fx( { L_tmp = L_mult0( y2hat_fx[i], y2hat_fx[i] ); /* Q0 */ #ifdef ISSUE_1836_replace_overflow_libcom - Ep_fx[k] = L_sub_sat( Ep_fx[k], L_tmp ); //??sat + Ep_fx[k] = L_sub_sat( Ep_fx[k], L_tmp ); #else Ep_fx[k] = L_sub_o( Ep_fx[k], L_tmp, &Overflow ); #endif @@ -486,7 +486,7 @@ void hq2_noise_inject_fx( L_tmp = Mult_32_16( Ep_fx[k], fac_fx ); /*Q(Q_Ep_fx[k]+12-15 = Q_Ep_fx[k]-3) */ #ifdef ISSUE_1836_replace_overflow_libcom - ni_gain_fx[k] = L_shr_sat( L_tmp, sub( Q_Ep_fx[k], 20 ) ); //??sat + ni_gain_fx[k] = L_shr_sat( L_tmp, sub( Q_Ep_fx[k], 20 ) ); #else ni_gain_fx[k] = L_shr_o( L_tmp, sub( Q_Ep_fx[k], 20 ), &Overflow ); #endif @@ -612,7 +612,7 @@ void hq2_noise_inject_fx( tmp = sub( Q_Ep_fx[k], Q_speech ); tmp = sub( 15, tmp ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = extract_h( L_shl_sat( L_tmp, tmp ) ); /*Q12 */ //??sat + tmp = extract_h( L_shl_sat( L_tmp, tmp ) ); /*Q12 */ #else tmp = extract_h( L_shl_o( L_tmp, tmp, &Overflow ) ); /*Q12 */ #endif @@ -623,7 +623,7 @@ void hq2_noise_inject_fx( L_tmp = Mult_32_16( Ep_fx[k], tmp ); /*Q(Q_Ep_fx[k]+0-15 = Q_Ep_fx[k]-15) */ tmp = sub( 43, Q_Ep_fx[k] ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = extract_h( L_shl_sat( L_tmp, tmp ) ); /*Q12 */ //??sat + tmp = extract_h( L_shl_sat( L_tmp, tmp ) ); /*Q12 */ #else tmp = extract_h( L_shl_o( L_tmp, tmp, &Overflow ) ); /*Q12 */ #endif @@ -639,7 +639,7 @@ void hq2_noise_inject_fx( { Q_speech = norm_s( band_width[k] ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shl_sat( band_width[k], Q_speech ); /*Q(Q_speech) */ //??sat + tmp = shl_sat( band_width[k], Q_speech ); /*Q(Q_speech) */ #else tmp = shl_o( band_width[k], Q_speech, &Overflow ); /*Q(Q_speech) */ #endif @@ -656,7 +656,7 @@ void hq2_noise_inject_fx( L_tmp = L_mult( tmp1, j ); /*Q13 */ L_tmp = Mult_32_16( L_tmp, tmp ); /*Q(13+29-Q_speech-15 = 27-Q_speech) */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp = extract_h( L_shl_sat( L_tmp, add( 1, Q_speech ) ) ); /*Q12 */ //??sat + tmp = extract_h( L_shl_sat( L_tmp, add( 1, Q_speech ) ) ); /*Q12 */ #else tmp = extract_h( L_shl_o( L_tmp, add( 1, Q_speech ), &Overflow ) ); /*Q12 */ #endif diff --git a/lib_com/ifft_rel_fx.c b/lib_com/ifft_rel_fx.c index dd711ed3d..8c44eba04 100644 --- a/lib_com/ifft_rel_fx.c +++ b/lib_com/ifft_rel_fx.c @@ -112,14 +112,14 @@ void ifft_rel_fx( FOR( i = is; i < n; i += id ) { #ifdef ISSUE_1836_replace_overflow_libcom - t1 = sub_sat( *xi1, *xi3 ); /*Qx*/ //??sat - *xi1 = add_sat( *xi1, *xi3 ); /*Qx*/ //??sat + t1 = sub_sat( *xi1, *xi3 ); /*Qx*/ + *xi1 = add_sat( *xi1, *xi3 ); /*Qx*/ move16(); - *xi2 = shl_sat( *xi2, 1 ); /*Qx*/ //??sat + *xi2 = shl_sat( *xi2, 1 ); /*Qx*/ move16(); - *xi3 = sub_sat( t1, shl_sat( *xi4, 1 ) ); /*Qx*/ //??sat + *xi3 = sub_sat( t1, shl_sat( *xi4, 1 ) ); /*Qx*/ move16(); - *xi4 = add_sat( t1, shl_sat( *xi4, 1 ) ); /*Qx*/ //??sat + *xi4 = add_sat( t1, shl_sat( *xi4, 1 ) ); /*Qx*/ move16(); #else t1 = sub_o( *xi1, *xi3, &Overflow ); /*Qx*/ @@ -136,16 +136,16 @@ void ifft_rel_fx( IF( NE_16( n4, 1 ) ) { #ifdef ISSUE_1836_replace_overflow_libcom - t1 = mult_r( sub_sat( *( xi2 + n8 ), *( xi1 + n8 ) ), INV_SQR2_FX /*Q15*/ ); /*Qx*/ //??sat - t2 = mult_r( add_sat( *( xi4 + n8 ), *( xi3 + n8 ) ), INV_SQR2_FX /*Q15*/ ); /*Qx*/ //??sat + t1 = mult_r( sub_sat( *( xi2 + n8 ), *( xi1 + n8 ) ), INV_SQR2_FX /*Q15*/ ); /*Qx*/ + t2 = mult_r( add_sat( *( xi4 + n8 ), *( xi3 + n8 ) ), INV_SQR2_FX /*Q15*/ ); /*Qx*/ - *( xi1 + n8 ) = add_sat( *( xi1 + n8 ), *( xi2 + n8 ) ); /*Qx*/ //??sat + *( xi1 + n8 ) = add_sat( *( xi1 + n8 ), *( xi2 + n8 ) ); /*Qx*/ move16(); - *( xi2 + n8 ) = sub_sat( *( xi4 + n8 ), *( xi3 + n8 ) ); /*Qx*/ //??sat + *( xi2 + n8 ) = sub_sat( *( xi4 + n8 ), *( xi3 + n8 ) ); /*Qx*/ move16(); - *( xi3 + n8 ) = negate( shl_sat( add_sat( t2, t1 ), 1 ) ); /*Qx*/ //??sat + *( xi3 + n8 ) = negate( shl_sat( add_sat( t2, t1 ), 1 ) ); /*Qx*/ move16(); - *( xi4 + n8 ) = shl_sat( sub_sat( t1, t2 ), 1 ); /*Qx*/ //??sat + *( xi4 + n8 ) = shl_sat( sub_sat( t1, t2 ), 1 ); /*Qx*/ move16(); #else t1 = mult_r( sub_o( *( xi2 + n8 ), *( xi1 + n8 ), &Overflow ), INV_SQR2_FX /*Q15*/ ); /*Qx*/ @@ -208,42 +208,42 @@ void ifft_rel_fx( FOR( i = is; i < n; i += id ) { #ifdef ISSUE_1836_replace_overflow_libcom - t1 = sub_sat( *xup1, *xdn6 ); /*Qx*/ //??sat - *xup1 = add_sat( *xup1, *xdn6 ); /*Qx*/ //??sat + t1 = sub_sat( *xup1, *xdn6 ); /*Qx*/ + *xup1 = add_sat( *xup1, *xdn6 ); /*Qx*/ move16(); xup1 += n4; xdn6 -= n4; - t2 = sub_sat( *xdn6, *xup1 ); /*Qx*/ //??sat - *xdn6 = add_sat( *xup1, *xdn6 ); /*Qx*/ //??sat + t2 = sub_sat( *xdn6, *xup1 ); /*Qx*/ + *xdn6 = add_sat( *xup1, *xdn6 ); /*Qx*/ move16(); xdn6 += n4; - t3 = add_sat( *xdn8, *xup3 ); /*Qx*/ //??sat - *xdn6 = sub_sat( *xdn8, *xup3 ); /*Qx*/ //??sat + t3 = add_sat( *xdn8, *xup3 ); /*Qx*/ + *xdn6 = sub_sat( *xdn8, *xup3 ); /*Qx*/ move16(); xup3 += n4; xdn8 -= n4; - t4 = add_sat( *xup3, *xdn8 ); /*Qx*/ //??sat - *xup1 = sub_sat( *xup3, *xdn8 ); /*Qx*/ //??sat + t4 = add_sat( *xup3, *xdn8 ); /*Qx*/ + *xup1 = sub_sat( *xup3, *xdn8 ); /*Qx*/ move16(); - t5 = sub_sat( t1, t4 ); /*Qx*/ //??sat - t1 = add_sat( t1, t4 ); /*Qx*/ //??sat - t4 = sub_sat( t2, t3 ); /*Qx*/ //??sat - t2 = add_sat( t2, t3 ); /*Qx*/ //??sat - *xup3 = sub_sat( mult_r( t1, cc3 ), mult_r( t2, ss3 ) ); /*Qx*/ //??sat + t5 = sub_sat( t1, t4 ); /*Qx*/ + t1 = add_sat( t1, t4 ); /*Qx*/ + t4 = sub_sat( t2, t3 ); /*Qx*/ + t2 = add_sat( t2, t3 ); /*Qx*/ + *xup3 = sub_sat( mult_r( t1, cc3 ), mult_r( t2, ss3 ) ); /*Qx*/ move16(); xup3 -= n4; - *xup3 = add_sat( mult_r( t5, cc1 ), mult_r( t4, ss1 ) ); /*Qx*/ //??sat + *xup3 = add_sat( mult_r( t5, cc1 ), mult_r( t4, ss1 ) ); /*Qx*/ move16(); - *xdn8 = sub_sat( mult_r( t5, ss1 ), mult_r( t4, cc1 ) ); /*Qx*/ //??sat + *xdn8 = sub_sat( mult_r( t5, ss1 ), mult_r( t4, cc1 ) ); /*Qx*/ move16(); xdn8 += n4; - *xdn8 = add_sat( mult_r( t2, cc3 ), mult_r( t1, ss3 ) ); /*Qx*/ //??sat + *xdn8 = add_sat( mult_r( t2, cc3 ), mult_r( t1, ss3 ) ); /*Qx*/ move16(); #else t1 = sub_o( *xup1, *xdn6, &Overflow ); /*Qx*/ @@ -315,9 +315,9 @@ void ifft_rel_fx( r1 = *xi0; move16(); #ifdef ISSUE_1836_replace_overflow_libcom - *xi0 = add_sat( r1, *xi1 ); /*Qx*/ //??sat + *xi0 = add_sat( r1, *xi1 ); /*Qx*/ move16(); - *xi1 = sub_sat( r1, *xi1 ); /*Qx*/ //??sat + *xi1 = sub_sat( r1, *xi1 ); /*Qx*/ move16(); #else *xi0 = add_o( r1, *xi1, &Overflow ); /*Qx*/ diff --git a/lib_com/interpol_fx.c b/lib_com/interpol_fx.c index 7773e8d1a..e9571eb9e 100644 --- a/lib_com/interpol_fx.c +++ b/lib_com/interpol_fx.c @@ -106,7 +106,7 @@ Word16 Interpol_4( /* Qx o : interpolated value */ #ifdef ISSUE_1836_replace_overflow_libcom L_sum = L_shl_sat( L_sum, 1 ); /*Qx+14+2*/ BASOP_SATURATE_WARNING_ON_EVS - return round_fx_sat( L_sum ); /*Qx*/ //??sat + return round_fx_sat( L_sum ); /*Qx*/ #else L_sum = L_shl_o( L_sum, 1, &Overflow ); /*Qx+14+2*/ BASOP_SATURATE_WARNING_ON_EVS diff --git a/lib_com/low_rate_band_att_fx.c b/lib_com/low_rate_band_att_fx.c index 8f05f18a4..8b323e96a 100644 --- a/lib_com/low_rate_band_att_fx.c +++ b/lib_com/low_rate_band_att_fx.c @@ -84,7 +84,7 @@ void ivas_fine_gain_pred_fx( Mpy_32_16_ss( L_tmp, tmp1, &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #ifdef ISSUE_1836_replace_overflow_libcom - gp = round_fx_sat( L_shl_sat( L_tmp, add( 1, exp ) ) ); /*27-exp+1+exp-16=12 */ //??sat //??sat + gp = round_fx_sat( L_shl_sat( L_tmp, add( 1, exp ) ) ); /*27-exp+1+exp-16=12 */ #else gp = round_fx_o( L_shl_o( L_tmp, add( 1, exp ), &Overflow ), &Overflow ); /*27-exp+1+exp-16=12 */ #endif @@ -104,7 +104,7 @@ void ivas_fine_gain_pred_fx( /*gp *= 1.0f - 0.05f / accuracy; */ tmp = div_s( 13107, accuracy ); /* 0.05 in Q18 */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ //??sat + tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ #else tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ #endif @@ -202,7 +202,7 @@ void fine_gain_pred_fx( L_tmp = Isqrt_lc( L_tmp, &exp ); /*31 - exp */ Mpy_32_16_ss( L_tmp, fine_gain_pred_sqrt_bw[bw_idx], &L_tmp, &lsb ); /*31-exp+11-15=27-exp */ #ifdef ISSUE_1836_replace_overflow_libcom - gp = round_fx_sat( L_shl_sat( L_tmp, add( 1, exp ) ) ); /*27-exp+1+exp-16=12 */ //??sat //??sat + gp = round_fx_sat( L_shl_sat( L_tmp, add( 1, exp ) ) ); /*27-exp+1+exp-16=12 */ #else gp = round_fx_o( L_shl_o( L_tmp, add( 1, exp ), &Overflow ), &Overflow ); /*27-exp+1+exp-16=12 */ #endif @@ -222,7 +222,7 @@ void fine_gain_pred_fx( /*gp *= 1.0f - 0.05f / accuracy; */ tmp = div_s( 13107, accuracy ); /* 0.05 in Q18 */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ //??sat + tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ #else tmp = shr_sat( tmp, sub( 34, exp ) ); /*15+18-exp+16-15=34-exp */ #endif diff --git a/lib_com/lpc_tools_fx.c b/lib_com/lpc_tools_fx.c index 26c663135..c8cc09e73 100644 --- a/lib_com/lpc_tools_fx.c +++ b/lib_com/lpc_tools_fx.c @@ -430,7 +430,7 @@ static Word32 Div_32_opt( Word32 L_num /*Q31*/, Word16 denom_hi /*Qx -16*/, Word L_32 = Mpy_32_32( L_num, L_32 ); #ifdef ISSUE_1836_replace_overflow_libcom - L_32 = L_shl_sat( L_32, 2 ); //??sat + L_32 = L_shl_sat( L_32, 2 ); #else L_32 = L_shl_o( L_32, 2, &Overflow ); #endif @@ -543,8 +543,8 @@ Word16 E_LPC_lev_dur_stab( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /*QR /* Compose and add R[i] in Q3 */ #ifdef ISSUE_1836_replace_overflow_libcom - t0 = L_mac_sat( t0, Rl[i], 1 ); //??sat - t0 = L_msu_sat( t0, Rh[i], -32768 ); //??sat + t0 = L_mac_sat( t0, Rl[i], 1 ); + t0 = L_msu_sat( t0, Rh[i], -32768 ); #else t0 = L_mac_o( t0, Rl[i], 1, &Overflow ); t0 = L_msu_o( t0, Rh[i], -32768, &Overflow ); @@ -564,7 +564,7 @@ Word16 E_LPC_lev_dur_stab( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /*QR t2 = L_negate( t2 ); /* K =-t0/Alpha */ } #ifdef ISSUE_1836_replace_overflow_libcom - t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ //??sat + t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ #else t2 = L_shl_o( t2, alp_exp, &Overflow ); /* denormalize; compare to Alpha */ #endif @@ -607,7 +607,7 @@ Word16 E_LPC_lev_dur_stab( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /*QR /* Alpha = Alpha * (1-K**2) */ #ifdef ISSUE_1836_replace_overflow_libcom - t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ //??sat + t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ #else t1 = L_mult_o( Kh, Kh, &Overflow ); /* K*K in Q31 */ #endif @@ -760,8 +760,8 @@ Word16 E_LPC_lev_dur_stab_ivas_fx( const Word16 Rh[], const Word16 Rl[], Word16 /* Compose and add R[i] in Q3 */ #ifdef ISSUE_1836_replace_overflow_libcom - t0 = L_mac_sat( t0, Rl[i], 1 ); //??sat - t0 = L_msu_sat( t0, Rh[i], -32768 ); //??sat + t0 = L_mac_sat( t0, Rl[i], 1 ); + t0 = L_msu_sat( t0, Rh[i], -32768 ); #else t0 = L_mac_o( t0, Rl[i], 1, &Overflow ); t0 = L_msu_o( t0, Rh[i], -32768, &Overflow ); @@ -781,7 +781,7 @@ Word16 E_LPC_lev_dur_stab_ivas_fx( const Word16 Rh[], const Word16 Rl[], Word16 t2 = L_negate( t2 ); /* K =-t0/Alpha */ } #ifdef ISSUE_1836_replace_overflow_libcom - t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ //??sat + t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ #else t2 = L_shl_o( t2, alp_exp, &Overflow ); /* denormalize; compare to Alpha */ #endif @@ -824,7 +824,7 @@ Word16 E_LPC_lev_dur_stab_ivas_fx( const Word16 Rh[], const Word16 Rl[], Word16 /* Alpha = Alpha * (1-K**2) */ #ifdef ISSUE_1836_replace_overflow_libcom - t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ //??sat + t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ #else t1 = L_mult_o( Kh, Kh, &Overflow ); /* K*K in Q31 */ #endif @@ -864,7 +864,7 @@ Word16 E_LPC_lev_dur_stab_ivas_fx( const Word16 Rh[], const Word16 Rl[], Word16 { t0 = L_Comp( Ah[i], Al[i] ); #ifdef ISSUE_1836_replace_overflow_libcom - A[i] = round_fx_sat( L_shl_sat( t0, k ) ); //??sat + A[i] = round_fx_sat( L_shl_sat( t0, k ) ); #else A[i] = round_fx_o( L_shl_o( t0, k, &Overflow ), &Overflow ); #endif @@ -970,7 +970,7 @@ Word16 E_LPC_lev_dur_stab_fx( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /* } #ifdef ISSUE_1836_replace_overflow_libcom - t0 = L_shl_sat( t0, 4 ); /* result in Q27 -> convert to Q31 */ //??sat + t0 = L_shl_sat( t0, 4 ); /* result in Q27 -> convert to Q31 */ #else t0 = L_shl_o( t0, 4, &Overflow ); /* result in Q27 -> convert to Q31 */ #endif @@ -999,7 +999,7 @@ Word16 E_LPC_lev_dur_stab_fx( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /* t2 = L_negate( t2 ); /* K =-t0/Alpha */ } #ifdef ISSUE_1836_replace_overflow_libcom - t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ //??sat + t2 = L_shl_sat( t2, alp_exp ); /* denormalize; compare to Alpha */ #else t2 = L_shl_o( t2, alp_exp, &Overflow ); /* denormalize; compare to Alpha */ #endif @@ -1042,7 +1042,7 @@ Word16 E_LPC_lev_dur_stab_fx( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /* /* Alpha = Alpha * (1-K**2) */ #ifdef ISSUE_1836_replace_overflow_libcom - t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ //??sat + t1 = L_mult_sat( Kh, Kh ); /* K*K in Q31 */ #else t1 = L_mult_o( Kh, Kh, &Overflow ); /* K*K in Q31 */ #endif @@ -1082,7 +1082,7 @@ Word16 E_LPC_lev_dur_stab_fx( const Word16 Rh[] /*QR -16*/, const Word16 Rl[] /* { t0 = L_Comp( Ah[i], Al[i] ); #ifdef ISSUE_1836_replace_overflow_libcom - A[i] = L_shl_sat( t0, k ); //??sat + A[i] = L_shl_sat( t0, k ); #else A[i] = L_shl_o( t0, k, &Overflow ); #endif @@ -1734,9 +1734,9 @@ void E_LPC_a_lsf_isf_conversion( Word16 *lpcCoeffs /*Qx*/, Word16 *lsf /*15Q16*/ Word16 ImBr = extract_h( L_add( ImagFFT[i], ImagFFT[N / 2 - i] ) ); BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1836_replace_overflow_libcom - tmpw15.v.re = mac_r_sat( L_mult( ptwiddle->v.re, pwn17->v.re ), ptwiddle->v.im, pwn17->v.im ); //??sat + tmpw15.v.re = mac_r_sat( L_mult( ptwiddle->v.re, pwn17->v.re ), ptwiddle->v.im, pwn17->v.im ); move16(); - tmpw15.v.im = msu_r_sat( L_mult( ptwiddle->v.re, pwn17->v.im ), ptwiddle->v.im, pwn17->v.re ); //??sat + tmpw15.v.im = msu_r_sat( L_mult( ptwiddle->v.re, pwn17->v.im ), ptwiddle->v.im, pwn17->v.re ); move16(); BASOP_SATURATE_WARNING_ON_EVS RealOut[i] = mac_r( L_msu( L_msu( L_mult( ReAr, pwn17->v.re ), ImAr, pwn17->v.im ), ReBr, pwn15->v.im ), ImBr, pwn15->v.re ); @@ -1744,9 +1744,9 @@ void E_LPC_a_lsf_isf_conversion( Word16 *lpcCoeffs /*Qx*/, Word16 *lsf /*15Q16*/ ImagOut[i] = mac_r( L_mac( L_mac( L_mult( ReAr, pwn17->v.im ), ImAr, pwn17->v.re ), ReBr, pwn15->v.re ), ImBr, pwn15->v.im ); move16(); BASOP_SATURATE_WARNING_OFF_EVS - tmpw15.v.re = msu_r_sat( L_mult( ptwiddle->v.im, pwn17i->v.im ), ptwiddle->v.re, pwn17i->v.re ); //??sat + tmpw15.v.re = msu_r_sat( L_mult( ptwiddle->v.im, pwn17i->v.im ), ptwiddle->v.re, pwn17i->v.re ); move16(); - tmpw15.v.im = mac_r_sat( L_mult( ptwiddle->v.re, pwn17i->v.im ), ptwiddle->v.im, pwn17i->v.re ); //??sat + tmpw15.v.im = mac_r_sat( L_mult( ptwiddle->v.re, pwn17i->v.im ), ptwiddle->v.im, pwn17i->v.re ); move16(); #else tmpw15.v.re = mac_ro( L_mult( ptwiddle->v.re, pwn17->v.re ), ptwiddle->v.im, pwn17->v.im, &Overflow ); @@ -1785,9 +1785,9 @@ void E_LPC_a_lsf_isf_conversion( Word16 *lpcCoeffs /*Qx*/, Word16 *lsf /*15Q16*/ Word16 ImBr = extract_h( L_add( ImagFFT[i], ImagFFT[N / 2 - i] ) ); BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1836_replace_overflow_libcom - tmpw15.v.re = mac_r_sat( L_mult( ptwiddle->v.im, pwn17->v.re ), ptwiddle->v.re, pwn17->v.im ); //??sat + tmpw15.v.re = mac_r_sat( L_mult( ptwiddle->v.im, pwn17->v.re ), ptwiddle->v.re, pwn17->v.im ); move16(); - tmpw15.v.im = msu_r_sat( L_mult( ptwiddle->v.im, pwn17->v.im ), ptwiddle->v.re, pwn17->v.re ); //??sat + tmpw15.v.im = msu_r_sat( L_mult( ptwiddle->v.im, pwn17->v.im ), ptwiddle->v.re, pwn17->v.re ); move16(); BASOP_SATURATE_WARNING_ON_EVS RealOut[i] = mac_r( L_msu( L_msu( L_mult( ReAr, pwn17->v.re ), ImAr, pwn17->v.im ), ReBr, pwn15->v.im ), ImBr, pwn15->v.re ); @@ -1795,9 +1795,9 @@ void E_LPC_a_lsf_isf_conversion( Word16 *lpcCoeffs /*Qx*/, Word16 *lsf /*15Q16*/ ImagOut[i] = mac_r( L_mac( L_mac( L_mult( ReAr, pwn17->v.im ), ImAr, pwn17->v.re ), ReBr, pwn15->v.re ), ImBr, pwn15->v.im ); move16(); BASOP_SATURATE_WARNING_OFF_EVS - tmpw15.v.re = msu_r_sat( L_mult( ptwiddle->v.re, pwn17i->v.im ), ptwiddle->v.im, pwn17i->v.re ); //??sat + tmpw15.v.re = msu_r_sat( L_mult( ptwiddle->v.re, pwn17i->v.im ), ptwiddle->v.im, pwn17i->v.re ); move16(); - tmpw15.v.im = mac_r_sat( L_mult( ptwiddle->v.im, pwn17i->v.im ), ptwiddle->v.re, pwn17i->v.re ); //??sat + tmpw15.v.im = mac_r_sat( L_mult( ptwiddle->v.im, pwn17i->v.im ), ptwiddle->v.re, pwn17i->v.re ); move16(); #else tmpw15.v.re = mac_ro( L_mult( ptwiddle->v.im, pwn17->v.re ), ptwiddle->v.re, pwn17->v.im, &Overflow ); diff --git a/lib_com/lsf_tools_fx.c b/lib_com/lsf_tools_fx.c index e168cd0f8..80e597e1a 100644 --- a/lib_com/lsf_tools_fx.c +++ b/lib_com/lsf_tools_fx.c @@ -112,7 +112,7 @@ static Word16 chebyshev( Word16 x, Word32 *f, const Word16 n, const Word16 shift t0 = Mpy_32_16_1( b2, x ); /* t0 = x*b1 */ #ifdef ISSUE_1836_replace_overflow_libcom if ( !cheb ) - t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ //??sat + t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ #else if ( !cheb ) t0 = L_shl_o( t0, 1, &Overflow ); /* t0 = 2*x*b1 */ @@ -124,7 +124,7 @@ static Word16 chebyshev( Word16 x, Word32 *f, const Word16 n, const Word16 shift t0 = Mpy_32_16_1( b1, x ); /* t0 = x*b1 */ #ifdef ISSUE_1836_replace_overflow_libcom if ( !cheb ) - t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ //??sat + t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ #else if ( !cheb ) t0 = L_shl_o( t0, 1, &Overflow ); /* t0 = 2*x*b1 */ @@ -139,7 +139,7 @@ static Word16 chebyshev( Word16 x, Word32 *f, const Word16 n, const Word16 shift t0 = Mpy_32_16_1( b2, x ); /* t0 = x*b1 */ #ifdef ISSUE_1836_replace_overflow_libcom if ( !cheb ) - t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ //??sat + t0 = L_shl_sat( t0, 1 ); /* t0 = 2*x*b1 */ #else if ( !cheb ) t0 = L_shl_o( t0, 1, &Overflow ); /* t0 = 2*x*b1 */ @@ -164,8 +164,8 @@ static Word16 chebyshev( Word16 x, Word32 *f, const Word16 n, const Word16 shift BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1836_replace_overflow_libcom - t0 = L_shl_sat( t0, shift ); /* Qx to Q30 with saturation */ //??sat - cheb = round_fx_sat( t0 ); /* Result in Q14 */ //??sat + t0 = L_shl_sat( t0, shift ); /* Qx to Q30 with saturation */ + cheb = round_fx_sat( t0 ); /* Result in Q14 */ #else t0 = L_shl_o( t0, shift, &Overflow ); /* Qx to Q30 with saturation */ cheb = round_fx_o( t0, &Overflow ); /* Result in Q14 */ @@ -1286,7 +1286,7 @@ void E_LPC_f_lsp_a_conversion( const Word16 *lsp, Word16 *a, const Word16 m ) f1[nc - i] = L_add( f1[nc - i], f1[nc - i - 1] ); move32(); #ifdef ISSUE_1836_replace_overflow_libcom - f2[nc - i] = L_sub_sat( f2[nc - i], f2[nc - i - 1] ); //??sat + f2[nc - i] = L_sub_sat( f2[nc - i], f2[nc - i - 1] ); #else f2[nc - i] = L_sub_o( f2[nc - i], f2[nc - i - 1], &Overflow ); #endif @@ -1326,14 +1326,14 @@ void E_LPC_f_lsp_a_conversion( const Word16 *lsp, Word16 *a, const Word16 m ) { /* a[i] = 0.5*(f1[i] + f2[i]) */ #ifdef ISSUE_1836_replace_overflow_libcom - t0 = L_add_sat( f1[i], f2[i] ); //??sat + t0 = L_add_sat( f1[i], f2[i] ); t0 = L_shl( t0, k ); - a[i] = round_fx_sat( t0 ); /* from Q23 to Qx and * 0.5 */ //??sat + a[i] = round_fx_sat( t0 ); /* from Q23 to Qx and * 0.5 */ /* a[j] = 0.5*(f1[i] - f2[i]) */ - t0 = L_sub_sat( f1[i], f2[i] ); //??sat + t0 = L_sub_sat( f1[i], f2[i] ); t0 = L_shl( t0, k ); - a[j] = round_fx_sat( t0 ); /* from Q23 to Qx and * 0.5 */ //??sat + a[j] = round_fx_sat( t0 ); /* from Q23 to Qx and * 0.5 */ #else t0 = L_add_o( f1[i], f2[i], &Overflow ); t0 = L_shl( t0, k ); @@ -1853,13 +1853,13 @@ void a2rc_fx( const Word16 *a, /* i: can be any Q */ n = sub( sub( m, (Word16) 1 ), j ); L_tmp1 = L_mult( denom_mant, f_fx[j] ); /* denom*f[j]. Q15*Q12 = Q28 (floating with exp) */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp1 = L_mac_sat( L_tmp1, tmp, f_fx[n] ); /* denom*f[j]+km*denom*f[n] in Q28 (floating with exp) */ //??sat - L_tmp2 = L_mult( denom_mant, f_fx[n] ); /* denom*f[n]. Q15*Q12 = Q28 (floating with exp) */ - L_tmp2 = L_mac_sat( L_tmp2, tmp, f_fx[j] ); /* denom*f[n]+km*denom*f[j] in Q28 (floating with exp) */ //??sat - L_tmp1 = L_shr_sat( L_tmp1, exp ); /* bringing to true Q28 */ //??sat - L_tmp2 = L_shr_sat( L_tmp2, exp ); /* bringing to true Q28 */ //??sat - f_fx[j] = round_fx_sat( L_tmp1 ); /* extracting in q_a */ //??sat - f_fx[n] = round_fx_sat( L_tmp2 ); /* extracting in q_a */ //??sat + L_tmp1 = L_mac_sat( L_tmp1, tmp, f_fx[n] ); /* denom*f[j]+km*denom*f[n] in Q28 (floating with exp) */ + L_tmp2 = L_mult( denom_mant, f_fx[n] ); /* denom*f[n]. Q15*Q12 = Q28 (floating with exp) */ + L_tmp2 = L_mac_sat( L_tmp2, tmp, f_fx[j] ); /* denom*f[n]+km*denom*f[j] in Q28 (floating with exp) */ + L_tmp1 = L_shr_sat( L_tmp1, exp ); /* bringing to true Q28 */ + L_tmp2 = L_shr_sat( L_tmp2, exp ); /* bringing to true Q28 */ + f_fx[j] = round_fx_sat( L_tmp1 ); /* extracting in q_a */ + f_fx[n] = round_fx_sat( L_tmp2 ); /* extracting in q_a */ #else L_tmp1 = L_mac_o( L_tmp1, tmp, f_fx[n], &Overflow ); /* denom*f[j]+km*denom*f[n] in Q28 (floating with exp) */ L_tmp2 = L_mult( denom_mant, f_fx[n] ); /* denom*f[n]. Q15*Q12 = Q28 (floating with exp) */ @@ -1875,9 +1875,9 @@ void a2rc_fx( const Word16 *a, /* i: can be any Q */ { L_tmp1 = L_mult( denom_mant, f_fx[j] ); /* denom*f[j]. Q15*Q12 = Q28 (floating with exp) */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp1 = L_mac_sat( L_tmp1, tmp, f_fx[j] ); /* denom*f[j]+km*denom*f[j] in Q28 (floating with exp) */ //??sat - L_tmp1 = L_shr_sat( L_tmp1, exp ); /* bringing to true Q28 */ //??sat - f_fx[j] = round_fx_sat( L_tmp1 ); /* extracting in q_a */ //??sat + L_tmp1 = L_mac_sat( L_tmp1, tmp, f_fx[j] ); /* denom*f[j]+km*denom*f[j] in Q28 (floating with exp) */ + L_tmp1 = L_shr_sat( L_tmp1, exp ); /* bringing to true Q28 */ + f_fx[j] = round_fx_sat( L_tmp1 ); /* extracting in q_a */ move16(); #else L_tmp1 = L_mac_o( L_tmp1, tmp, f_fx[j], &Overflow ); /* denom*f[j]+km*denom*f[j] in Q28 (floating with exp) */ @@ -2386,14 +2386,14 @@ Word16 lsf_stab_fx( /* o : LP filter stability Q15*/ e = sub( 30 - 21 - 1, e ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = round_fx_sat( L_shl_sat( L_tmp, e ) ); /*Q14*/ //??sat //??sat + tmp = round_fx_sat( L_shl_sat( L_tmp, e ) ); /*Q14*/ #else tmp = round_fx_o( L_shl_o( L_tmp, e, &Overflow ), &Overflow ); /*Q14*/ #endif tmp = sub( 20480, tmp ); /* 1.25 - tmp in Q14 */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shl_sat( tmp, 1 ); /* Q14 -> Q15 with saturation */ //??sat + tmp = shl_sat( tmp, 1 ); /* Q14 -> Q15 with saturation */ #else tmp = shl_o( tmp, 1, &Overflow ); /* Q14 -> Q15 with saturation */ #endif @@ -2489,7 +2489,7 @@ Word16 lsf_stab_ivas_fx( /* o : LP filter stability e = sub( 30 - 21 - 1, e ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = round_fx_sat( L_shl_sat( L_tmp, e ) ); /*Q12*/ //??sat //??sat + tmp = round_fx_sat( L_shl_sat( L_tmp, e ) ); /*Q12*/ #else tmp = round_fx_o( L_shl_o( L_tmp, e, &Overflow ), &Overflow ); /*Q12*/ #endif @@ -3925,7 +3925,7 @@ Word16 root_search_fx( Word16 low, tmp = div_s( 16384, tmp ); /* 15+exp1 */ Ltmp = Mult_32_16( *v_low, tmp ); /* 15+exp1+25-15 */ #ifdef ISSUE_1836_replace_overflow_libcom - Ltemp = L_shl_sat( Ltmp, ( 6 - exp1 ) ); /* Q31 */ //??sat + Ltemp = L_shl_sat( Ltmp, ( 6 - exp1 ) ); /* Q31 */ #else Ltemp = L_shl_o( Ltmp, ( 6 - exp1 ), &Overflow ); /* Q31 */ #endif diff --git a/lib_com/lsp_conv_poly_fx.c b/lib_com/lsp_conv_poly_fx.c index 46fd9571a..e9d5413b3 100644 --- a/lib_com/lsp_conv_poly_fx.c +++ b/lib_com/lsp_conv_poly_fx.c @@ -350,7 +350,7 @@ static Word32 b_inv_sq( exp_den = shl( exp_den, 1 ); div_out = div_s( 8192, m_den ); - Ltmp = L_shl_sat( div_out, add( sub( 30 - 13, exp_den ), 15 ) ); /*Q15*/ //??sat + Ltmp = L_shl_sat( div_out, add( sub( 30 - 13, exp_den ), 15 ) ); /*Q15*/ #else exp_den = shl_o( exp_den, 1, &Overflow ); @@ -389,7 +389,7 @@ static Word32 inv_pow( exp1 = norm_l( re ); tmp = extract_h( L_shl( re, exp1 ) ); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shr( L_mult_sat( tmp, tmp ), 1 ); //??sat + L_tmp = L_shr( L_mult_sat( tmp, tmp ), 1 ); #else L_tmp = L_shr( L_mult_o( tmp, tmp, &Overflow ), 1 ); #endif @@ -442,7 +442,7 @@ static Word32 inv_pow( tmp = div_s( (Word16) ( ( 1 << 14 ) - 1 ), tmp ); exp1 = add( exp1, exp2 ); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shr_sat( tmp, sub( 31, exp1 ) ); /* result in Q15 */ //??sat + L_tmp = L_shr_sat( tmp, sub( 31, exp1 ) ); /* result in Q15 */ #else L_tmp = L_shr_o( tmp, sub( 31, exp1 ), &Overflow ); /* result in Q15 */ #endif @@ -588,7 +588,7 @@ static void spectautocorr_fx( FOR( i = 1; i < imid; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - gp = L_add_sat( G[i], G[N - i - 1] ); //??sat + gp = L_add_sat( G[i], G[N - i - 1] ); #else gp = L_add_o( G[i], G[N - i - 1], &Overflow ); #endif @@ -597,7 +597,7 @@ static void spectautocorr_fx( /*r[1] = L_mac(r[1], x[i-1], gn);*/ Mpy_32_16_ss( gn, x[i - 1], &mh, &ml ); #ifdef ISSUE_1836_replace_overflow_libcom - r[1] = L_add_sat( r[1], mh ); //??sat + r[1] = L_add_sat( r[1], mh ); #else r[1] = L_add_o( r[1], mh, &Overflow ); #endif @@ -610,22 +610,22 @@ static void spectautocorr_fx( #ifdef ISSUE_1836_replace_overflow_libcom c[j] = mult_r( c[j - 1], x[i - 1] ); move16(); - c[j] = add_sat( c[j], sub_sat( c[j], c[j - 2] ) ); //??sat + c[j] = add_sat( c[j], sub_sat( c[j], c[j - 2] ) ); move16(); /*r[j] = L_mac(r[j], c[j], gp);*/ Mpy_32_16_ss( gp, c[j], &mh, &ml ); - r[j] = L_add_sat( r[j], mh ); //??sat + r[j] = L_add_sat( r[j], mh ); move32(); c[j + 1] = mult_r( c[j], x[i - 1] ); move16(); - c[j + 1] = add_sat( c[j + 1], sub_sat( c[j + 1], c[j - 1] ) ); //??sat //??sat + c[j + 1] = add_sat( c[j + 1], sub_sat( c[j + 1], c[j - 1] ) ); move16(); /*r[j+1] = L_mac(r[j+1], c[j+1], gn);*/ Mpy_32_16_ss( gn, c[j + 1], &mh, &ml ); - r[j + 1] = L_add_sat( r[j + 1], mh ); //??sat + r[j + 1] = L_add_sat( r[j + 1], mh ); move32(); #else c[j] = mult_r( c[j - 1], x[i - 1] ); @@ -652,11 +652,11 @@ static void spectautocorr_fx( c[j] = mult_r( c[j - 1], x[i - 1] ); move16(); #ifdef ISSUE_1836_replace_overflow_libcom - c[j] = add_sat( c[j], sub_sat( c[j], c[j - 2] ) ); //??sat + c[j] = add_sat( c[j], sub_sat( c[j], c[j - 2] ) ); move16(); Mpy_32_16_ss( gp, c[j], &mh, &ml ); - r[j] = L_add_sat( r[j], mh ); //??sat + r[j] = L_add_sat( r[j], mh ); move32(); #else c[j] = add_o( c[j], sub_o( c[j], c[j - 2], &Overflow ), &Overflow ); @@ -673,10 +673,10 @@ static void spectautocorr_fx( * well as the lower half of the unit circle. *---------------------------------------------------------------------*/ #ifdef ISSUE_1836_replace_overflow_libcom - gp = L_shr( L_add_sat( G[0], G[N - 1] ), 1 ); //??sat + gp = L_shr( L_add_sat( G[0], G[N - 1] ), 1 ); gn = L_shr( L_sub( G[0], G[N - 1] ), 1 ); - r[0] = L_add_sat( r[0], gp ); //??sat + r[0] = L_add_sat( r[0], gp ); #else gp = L_shr( L_add_o( G[0], G[N - 1], &Overflow ), 1 ); gn = L_shr( L_sub( G[0], G[N - 1] ), 1 ); @@ -690,8 +690,8 @@ static void spectautocorr_fx( FOR( j = 1; j < M; j += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_Extract( L_shl( L_add_sat( r[j], gn ), exp0 ), &rh[j], &rl[j] ); //??sat - L_Extract( L_shl( L_add_sat( r[j + 1], gp ), exp0 ), &rh[j + 1], &rl[j + 1] ); //??sat + L_Extract( L_shl( L_add_sat( r[j], gn ), exp0 ), &rh[j], &rl[j] ); + L_Extract( L_shl( L_add_sat( r[j + 1], gp ), exp0 ), &rh[j + 1], &rl[j + 1] ); #else L_Extract( L_shl( L_add_o( r[j], gn, &Overflow ), exp0 ), &rh[j], &rl[j] ); L_Extract( L_shl( L_add_o( r[j + 1], gp, &Overflow ), exp0 ), &rh[j + 1], &rl[j + 1] ); diff --git a/lib_com/math_op.c b/lib_com/math_op.c index 24eb88278..ac92eec20 100644 --- a/lib_com/math_op.c +++ b/lib_com/math_op.c @@ -240,10 +240,10 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 < val IF( expi == 0 ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_sum = L_mac_sat( 1, x[0], x[0] ); //??sat + L_sum = L_mac_sat( 1, x[0], x[0] ); FOR( i = 1; i < lg; i++ ) { - L_sum = L_mac_sat( L_sum, x[i], x[i] ); //??sat + L_sum = L_mac_sat( L_sum, x[i], x[i] ); } #else L_sum = L_mac_o( 1, x[0], x[0], &Overflow ); @@ -262,7 +262,7 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 < val { tmp = mult_r( x[i], sft ); #ifdef ISSUE_1836_replace_overflow_libcom - L_sum = L_mac_sat( L_sum, tmp, tmp ); //??sat + L_sum = L_mac_sat( L_sum, tmp, tmp ); #else L_sum = L_mac_o( L_sum, tmp, tmp, &Overflow ); #endif @@ -271,12 +271,12 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 < val IF( expi > 0 ) { #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shl_sat( x[0], expi ); //??sat - L_sum = L_mac_sat( 1, tmp, tmp ); //??sat + tmp = shl_sat( x[0], expi ); + L_sum = L_mac_sat( 1, tmp, tmp ); FOR( i = 1; i < lg; i++ ) { - tmp = shl_sat( x[i], expi ); //??sat - L_sum = L_mac_sat( L_sum, tmp, tmp ); //??sat + tmp = shl_sat( x[i], expi ); + L_sum = L_mac_sat( L_sum, tmp, tmp ); } #else tmp = shl_o( x[0], expi, &Overflow ); diff --git a/lib_com/modif_fs_fx.c b/lib_com/modif_fs_fx.c index 1ad07ff66..b54efcea8 100644 --- a/lib_com/modif_fs_fx.c +++ b/lib_com/modif_fs_fx.c @@ -280,7 +280,7 @@ Word16 modify_Fs_ivas_fx( /* o : length of output Q IF( GT_32( fin, 16000 ) && ( EQ_16( lg_out, L_FRAME ) || EQ_16( lg_out, L_FRAME16k ) || EQ_16( lg_out, 512 ) ) ) { #ifdef ISSUE_1836_replace_overflow_libcom - num_den = shl_sat( num_den, 1 ); //??sat + num_den = shl_sat( num_den, 1 ); #else num_den = shl_o( num_den, 1, &Overflow ); #endif @@ -566,7 +566,7 @@ Word16 modify_Fs_fx( /* o : length of output Q0 */ { #ifdef BASOP_NOGLOB_DECLARE_LOCAL #ifdef ISSUE_1836_replace_overflow_libcom - num_den = shl_sat( num_den, 1 ); //??sat + num_den = shl_sat( num_den, 1 ); #else num_den = shl_o( num_den, 1, &Overflow ); #endif @@ -957,10 +957,10 @@ void Decimate_allpass_steep_fx( Lacc = L_deposit_h( mem[0] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP1_STEEP_FX[0], in_fx[2 * k] ); /* Q(16+x) */ //??sat - Lacc1 = L_deposit_h( in_fx[2 * k] ); /* Q16+Qx */ - temp1 = extract_h( Lacc ); /* Qx */ - Lacc1 = L_msu_sat( Lacc1, AP1_STEEP_FX[0], temp1 ); /* Q16+Qx */ //??sat + Lacc = L_mac_sat( Lacc, AP1_STEEP_FX[0], in_fx[2 * k] ); /* Q(16+x) */ + Lacc1 = L_deposit_h( in_fx[2 * k] ); /* Q16+Qx */ + temp1 = extract_h( Lacc ); /* Qx */ + Lacc1 = L_msu_sat( Lacc1, AP1_STEEP_FX[0], temp1 ); /* Q16+Qx */ #else Lacc = L_mac_o( Lacc, AP1_STEEP_FX[0], in_fx[2 * k], &Overflow ); /* Q(16+x) */ Lacc1 = L_deposit_h( in_fx[2 * k] ); /* Q16+Qx */ @@ -974,10 +974,10 @@ void Decimate_allpass_steep_fx( Lacc1 = L_deposit_h( mem[1] ); /* Q16+Qx */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc1 = ( L_mac_sat( Lacc1, AP1_STEEP_FX[1], temp1 ) ); /* Q16+Qx */ //??sat + Lacc1 = ( L_mac_sat( Lacc1, AP1_STEEP_FX[1], temp1 ) ); /* Q16+Qx */ - temp2 = extract_h( Lacc1 ); /* Qx */ - Lacc = L_msu_sat( Lacc, AP1_STEEP_FX[1], temp2 ); /* Q16+Qx */ //??sat + temp2 = extract_h( Lacc1 ); /* Qx */ + Lacc = L_msu_sat( Lacc, AP1_STEEP_FX[1], temp2 ); /* Q16+Qx */ #else Lacc1 = ( L_mac_o( Lacc1, AP1_STEEP_FX[1], temp1, &Overflow ) ); /* Q16+Qx */ @@ -992,9 +992,9 @@ void Decimate_allpass_steep_fx( Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - out_fx[k] = extract_h( L_mac_sat( Lacc, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ //??sat + out_fx[k] = extract_h( L_mac_sat( Lacc, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ move16(); - mem[ALLPASSSECTIONS_STEEP - 1] = extract_h( L_msu_sat( Lacc1, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[k] ) ); /* Qx */ //??sat + mem[ALLPASSSECTIONS_STEEP - 1] = extract_h( L_msu_sat( Lacc1, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[k] ) ); /* Qx */ move16(); #else out_fx[k] = extract_h( L_mac_o( Lacc, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2, &Overflow ) ); /* Qx format */ @@ -1008,10 +1008,10 @@ void Decimate_allpass_steep_fx( Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], mem[2 * ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ //??sat - Lacc1 = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ - temp1 = extract_h( Lacc ); /* Qx */ - Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ //??sat + Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], mem[2 * ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ + Lacc1 = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ + temp1 = extract_h( Lacc ); /* Qx */ + Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ #else Lacc = L_mac_o( Lacc, AP2_STEEP_FX[0], mem[2 * ALLPASSSECTIONS_STEEP], &Overflow ); /*Q(16+x) */ Lacc1 = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ @@ -1024,11 +1024,11 @@ void Decimate_allpass_steep_fx( Lacc1 = L_deposit_h( mem[ALLPASSSECTIONS_STEEP + 1] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc1 = L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ); /* Q(16+x) */ //??sat - temp2 = extract_h( Lacc1 ); /* Qx */ + Lacc1 = L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ); /* Q(16+x) */ + temp2 = extract_h( Lacc1 ); /* Qx */ temp[1] = temp2; move16(); - Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ //??sat + Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ #else Lacc1 = L_mac_o( Lacc1, AP2_STEEP_FX[1], temp1, &Overflow ); /* Q(16+x) */ temp2 = extract_h( Lacc1 ); /* Qx */ @@ -1041,10 +1041,10 @@ void Decimate_allpass_steep_fx( Lacc = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ); /* Q(16+x) temp[ALLPASSSECTIONS_STEEP-1] */ //??sat - temp[2] = extract_h( Lacc ); /* temp[2] in Qx */ + Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ); /* Q(16+x) temp[ALLPASSSECTIONS_STEEP-1] */ + temp[2] = extract_h( Lacc ); /* temp[2] in Qx */ move16(); - Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[2] ); /* Q(16+x) */ //??sat + Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[2] ); /* Q(16+x) */ #else Lacc = L_mac_o( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2, &Overflow ); /* Q(16+x) temp[ALLPASSSECTIONS_STEEP-1] */ temp[2] = extract_h( Lacc ); /* temp[2] in Qx */ @@ -1064,10 +1064,10 @@ void Decimate_allpass_steep_fx( Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], in_fx[2 * k - 1] ); /* Q(16+x):temp[0] */ //??sat - Lacc1 = L_deposit_h( in_fx[2 * k - 1] ); /* Q(16+x) */ - temp1 = extract_h( Lacc ); /* Qx */ - Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ //??sat + Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], in_fx[2 * k - 1] ); /* Q(16+x):temp[0] */ + Lacc1 = L_deposit_h( in_fx[2 * k - 1] ); /* Q(16+x) */ + temp1 = extract_h( Lacc ); /* Qx */ + Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ #else Lacc = L_mac_o( Lacc, AP2_STEEP_FX[0], in_fx[2 * k - 1], &Overflow ); /* Q(16+x):temp[0] */ Lacc1 = L_deposit_h( in_fx[2 * k - 1] ); /* Q(16+x) */ @@ -1083,18 +1083,18 @@ void Decimate_allpass_steep_fx( Lacc1 = L_deposit_h( mem[ALLPASSSECTIONS_STEEP + 1] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc1 = L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ); /* Q(16+x) */ //??sat - temp2 = extract_h( Lacc1 ); /* Qx */ + Lacc1 = L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ); /* Q(16+x) */ + temp2 = extract_h( Lacc1 ); /* Qx */ temp[1] = temp2; move16(); - Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ //??sat - mem[ALLPASSSECTIONS_STEEP + 1] = extract_h( Lacc ); /* Qx */ + Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ + mem[ALLPASSSECTIONS_STEEP + 1] = extract_h( Lacc ); /* Qx */ Lacc = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ - Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[1] ); //??sat /* Q(16+x) temp[ALLPASSSECTIONS_STEEP-1] */ + Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[1] ); /* Q(16+x) temp[ALLPASSSECTIONS_STEEP-1] */ temp[2] = extract_h( Lacc ); /*temp[2] in Qx */ - Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[2] ); //??sat /* Q(16+x) */ + Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp[2] ); /* Q(16+x) */ #else Lacc1 = L_mac_o( Lacc1, AP2_STEEP_FX[1], temp1, &Overflow ); /* Q(16+x) */ temp2 = extract_h( Lacc1 ); /* Qx */ @@ -1239,27 +1239,27 @@ void Interpolate_allpass_steep_fx( Lacc = L_deposit_h( mem[0] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], in_fx[k] ); /* Q(16+x):temp[0] */ //??sat - Lacc1 = L_deposit_h( in_fx[k] ); /* Q(16+x) */ - temp1 = round_fx_sat( Lacc ); /* Qx */ //??sat - Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ //??sat + Lacc = L_mac_sat( Lacc, AP2_STEEP_FX[0], in_fx[k] ); /* Q(16+x):temp[0] */ + Lacc1 = L_deposit_h( in_fx[k] ); /* Q(16+x) */ + temp1 = round_fx_sat( Lacc ); /* Qx */ + Lacc1 = L_msu_sat( Lacc1, AP2_STEEP_FX[0], temp1 ); /* Q(16+x) */ - mem[0] = round_fx_sat( Lacc1 ); //??sat + mem[0] = round_fx_sat( Lacc1 ); move16(); - Lacc1 = L_deposit_h( mem[1] ); /* Q(16+x) */ //??sat - Lacc1 = ( L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ) ); /* Q(16+x):temp[1] */ //??sat + Lacc1 = L_deposit_h( mem[1] ); /* Q(16+x) */ + Lacc1 = ( L_mac_sat( Lacc1, AP2_STEEP_FX[1], temp1 ) ); /* Q(16+x):temp[1] */ Lacc = L_deposit_h( temp1 ); - temp2 = round_fx_sat( Lacc1 ); /* Qx */ //??sat - Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ //??sat - mem[1] = round_fx_sat( Lacc ); /* Qx */ //??sat + temp2 = round_fx_sat( Lacc1 ); /* Qx */ + Lacc = L_msu_sat( Lacc, AP2_STEEP_FX[1], temp2 ); /* Q(16+x) */ + mem[1] = round_fx_sat( Lacc ); /* Qx */ move16(); Lacc1 = L_deposit_h( temp2 ); - Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ //??sat - out_fx[2 * k + 1] = round_fx_sat( L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ //??sat + Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ + out_fx[2 * k + 1] = round_fx_sat( L_mac_sat( Lacc, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ move16(); - mem[ALLPASSSECTIONS_STEEP - 1] = round_fx_sat( L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[2 * k + 1] ) ); /* Qx */ //??sat //??sat + mem[ALLPASSSECTIONS_STEEP - 1] = round_fx_sat( L_msu_sat( Lacc1, AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[2 * k + 1] ) ); /* Qx */ move16(); #else Lacc1 = L_deposit_h( in_fx[k] ); /* Q(16+x) */ @@ -1292,25 +1292,25 @@ void Interpolate_allpass_steep_fx( { Lacc = L_deposit_h( mem[ALLPASSSECTIONS_STEEP] ); /* Q(16+x) */ #ifdef ISSUE_1836_replace_overflow_libcom - Lacc = L_mac_sat( Lacc, AP1_STEEP_FX[0], in_fx[k] ); /* Q(16+x):temp[0] */ //??sat - Lacc1 = L_deposit_h( in_fx[k] ); /* Q(16+x) */ - temp1 = round_fx_sat( Lacc ); /* Qx */ //??sat - Lacc1 = L_msu_sat( Lacc1, AP1_STEEP_FX[0], temp1 ); /* Q(16+x) */ //??sat + Lacc = L_mac_sat( Lacc, AP1_STEEP_FX[0], in_fx[k] ); /* Q(16+x):temp[0] */ + Lacc1 = L_deposit_h( in_fx[k] ); /* Q(16+x) */ + temp1 = round_fx_sat( Lacc ); /* Qx */ + Lacc1 = L_msu_sat( Lacc1, AP1_STEEP_FX[0], temp1 ); /* Q(16+x) */ - mem[ALLPASSSECTIONS_STEEP] = round_fx_sat( Lacc1 ); //??sat - Lacc1 = L_deposit_h( mem[ALLPASSSECTIONS_STEEP + 1] ); /* Q(16+x) */ - Lacc1 = L_mac_sat( Lacc1, AP1_STEEP_FX[1], temp1 ); /* Q(16+x):temp[1] */ //??sat + mem[ALLPASSSECTIONS_STEEP] = round_fx_sat( Lacc1 ); + Lacc1 = L_deposit_h( mem[ALLPASSSECTIONS_STEEP + 1] ); /* Q(16+x) */ + Lacc1 = L_mac_sat( Lacc1, AP1_STEEP_FX[1], temp1 ); /* Q(16+x):temp[1] */ - temp2 = round_fx_sat( Lacc1 ); /* Qx */ //??sat + temp2 = round_fx_sat( Lacc1 ); /* Qx */ Lacc = L_deposit_h( temp1 ); - Lacc = L_msu_sat( Lacc, AP1_STEEP_FX[1], temp2 ); /* Q(16+x) */ //??sat - mem[ALLPASSSECTIONS_STEEP + 1] = round_fx_sat( Lacc ); /* Qx */ //??sat + Lacc = L_msu_sat( Lacc, AP1_STEEP_FX[1], temp2 ); /* Q(16+x) */ + mem[ALLPASSSECTIONS_STEEP + 1] = round_fx_sat( Lacc ); /* Qx */ Lacc = L_deposit_h( mem[2 * ALLPASSSECTIONS_STEEP - 1] ); /* Q(16+x) */ Lacc1 = L_deposit_h( temp2 ); - out_fx[2 * k] = round_fx_sat( L_mac_sat( Lacc, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ //??sat //??sat + out_fx[2 * k] = round_fx_sat( L_mac_sat( Lacc, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], temp2 ) ); /* Qx format */ move16(); - mem[2 * ALLPASSSECTIONS_STEEP - 1] = round_fx_sat( L_msu_sat( Lacc1, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[2 * k] ) ); /* Qx */ //??sat //??sat + mem[2 * ALLPASSSECTIONS_STEEP - 1] = round_fx_sat( L_msu_sat( Lacc1, AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1], out_fx[2 * k] ) ); /* Qx */ move16(); #else Lacc = L_mac_o( Lacc, AP1_STEEP_FX[0], in_fx[k], &Overflow ); /* Q(16+x):temp[0] */ diff --git a/lib_com/oper_32b.c b/lib_com/oper_32b.c index de733005e..d8966dbab 100644 --- a/lib_com/oper_32b.c +++ b/lib_com/oper_32b.c @@ -132,8 +132,8 @@ Word32 Mpy_32( Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2 ) L_32 = L_mult( hi1, hi2 ); #ifdef ISSUE_1836_replace_overflow_libcom - L_32 = L_mac_sat( L_32, mult( hi1, lo2 ), 1 ); //??sat - L_32 = L_mac_sat( L_32, mult( lo1, hi2 ), 1 ); //??sat + L_32 = L_mac_sat( L_32, mult( hi1, lo2 ), 1 ); + L_32 = L_mac_sat( L_32, mult( lo1, hi2 ), 1 ); #else L_32 = L_mac_o( L_32, mult( hi1, lo2 ), 1, &Overflow ); L_32 = L_mac_o( L_32, mult( lo1, hi2 ), 1, &Overflow ); @@ -173,9 +173,9 @@ Word32 Mac_32( Word32 L_num, Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2 ) #endif #ifdef ISSUE_1836_replace_overflow_libcom - L_32 = L_mac_sat( L_num, hi1, hi2 ); //??sat - L_32 = L_mac_sat( L_32, mult( hi1, lo2 ), 1 ); //??sat - L_32 = L_mac_sat( L_32, mult( lo1, hi2 ), 1 ); //??sat + L_32 = L_mac_sat( L_num, hi1, hi2 ); + L_32 = L_mac_sat( L_32, mult( hi1, lo2 ), 1 ); + L_32 = L_mac_sat( L_32, mult( lo1, hi2 ), 1 ); #else L_32 = L_mac_o( L_num, hi1, hi2, &Overflow ); L_32 = L_mac_o( L_32, mult( hi1, lo2 ), 1, &Overflow ); @@ -215,8 +215,8 @@ Word32 Sqr_32( Word16 hi, Word16 lo ) #endif #ifdef ISSUE_1836_replace_overflow_libcom - L_32 = L_mult_sat( hi, hi ); //??sat - L_32 = L_mac_sat( L_32, mult( hi, lo ), 2 ); //??sat + L_32 = L_mult_sat( hi, hi ); + L_32 = L_mac_sat( L_32, mult( hi, lo ), 2 ); #else L_32 = L_mult_o( hi, hi, &Overflow ); L_32 = L_mac_o( L_32, mult( hi, lo ), 2, &Overflow ); diff --git a/lib_com/phase_dispersion_fx.c b/lib_com/phase_dispersion_fx.c index b937d0fcf..055513dd1 100644 --- a/lib_com/phase_dispersion_fx.c +++ b/lib_com/phase_dispersion_fx.c @@ -61,7 +61,7 @@ void phase_dispersion( prev_gain_pit[0] = gain_pit; #ifdef ISSUE_1836_replace_overflow_libcom - IF( GT_32( gain_code, L_add_sat( *prev_gain_code, L_shl_sat( *prev_gain_code, 1 ) ) ) ) //??sat + IF( GT_32( gain_code, L_add_sat( *prev_gain_code, L_shl_sat( *prev_gain_code, 1 ) ) ) ) #else IF( GT_32( gain_code, L_add_o( *prev_gain_code, L_shl_o( *prev_gain_code, 1, &Overflow ), &Overflow ) ) ) #endif diff --git a/lib_com/ppp_fx.c b/lib_com/ppp_fx.c index 56cde5456..fd8b0acef 100644 --- a/lib_com/ppp_fx.c +++ b/lib_com/ppp_fx.c @@ -118,7 +118,7 @@ void deemph_lpc_fx( /* LPC_de_curr[k] = a[0]*b[k] + a[1]*b[k+1]; */ temp = mult( a_fx[0], b_fx[k] ); /* Q12 */ #ifdef ISSUE_1836_replace_overflow_libcom - LPC_de_curr_fx[k] = add_sat( temp, b_fx[k + 1] ); //??sat + LPC_de_curr_fx[k] = add_sat( temp, b_fx[k + 1] ); #else LPC_de_curr_fx[k] = add_o( temp, b_fx[k + 1], &Overflow ); #endif @@ -144,7 +144,7 @@ void deemph_lpc_fx( /* LPC_de_old[k] = a[0]*b[k] + a[1]*b[k+1]; */ temp = mult( a_fx[0], b_fx[k] ); /* Q12 */ #ifdef ISSUE_1836_replace_overflow_libcom - LPC_de_old_fx[k] = add_sat( temp, b_fx[k + 1] ); //??sat + LPC_de_old_fx[k] = add_sat( temp, b_fx[k + 1] ); #else LPC_de_old_fx[k] = add_o( temp, b_fx[k + 1], &Overflow ); #endif diff --git a/lib_com/pred_lt4_fx.c b/lib_com/pred_lt4_fx.c index f457e676f..146ecc2ce 100644 --- a/lib_com/pred_lt4_fx.c +++ b/lib_com/pred_lt4_fx.c @@ -73,7 +73,7 @@ void pred_lt4_ivas_fx( } #ifdef ISSUE_1836_replace_overflow_libcom - excO[j] = round_fx_sat( s ); /* Q_exc */ //??sat + excO[j] = round_fx_sat( s ); /* Q_exc */ #else excO[j] = round_fx_o( s, &Overflow ); /* Q_exc */ #endif @@ -136,10 +136,10 @@ void pred_lt4( } #ifdef ISSUE_1836_replace_overflow_libcom #if ( INTERP_EXP != -1 ) - s = L_shl_sat( s, INTERP_EXP + 1 ); /* Q_exc + Q15 */ //??sat + s = L_shl_sat( s, INTERP_EXP + 1 ); /* Q_exc + Q15 */ #endif - excO[j] = round_fx_sat( s ); /* Q_exc */ //??sat + excO[j] = round_fx_sat( s ); /* Q_exc */ move16(); #else #if ( INTERP_EXP != -1 ) @@ -231,8 +231,8 @@ void pred_lt4_tc_fx( L_sum = L_mac( L_sum, x0[i], win[k] ); /* Q15 */ } #ifdef ISSUE_1836_replace_overflow_libcom - L_sum = L_shl_sat( L_sum, 1 ); /* Q16 */ //??sat - excO[j] = round_fx_sat( L_sum ); /* Q0 */ //??sat + L_sum = L_shl_sat( L_sum, 1 ); /* Q16 */ + excO[j] = round_fx_sat( L_sum ); /* Q0 */ #else L_sum = L_shl_o( L_sum, 1, &Overflow ); /* Q16 */ excO[j] = round_fx_o( L_sum, &Overflow ); /* Q0 */ @@ -245,7 +245,7 @@ void pred_lt4_tc_fx( FOR( i = T0; i < L_SUBFR; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - exc[i + i_subfr] = add_sat( exc[i + i_subfr], mult_r( PIT_SHARP_fx, excO[i] ) ); /* Q0 */ //??sat + exc[i + i_subfr] = add_sat( exc[i + i_subfr], mult_r( PIT_SHARP_fx, excO[i] ) ); /* Q0 */ #else exc[i + i_subfr] = add_o( exc[i + i_subfr], mult_r( PIT_SHARP_fx, excO[i] ), &Overflow ); /* Q0 */ #endif diff --git a/lib_com/preemph_fx.c b/lib_com/preemph_fx.c index b24aa9467..db3949bca 100644 --- a/lib_com/preemph_fx.c +++ b/lib_com/preemph_fx.c @@ -36,7 +36,7 @@ void preemph_copy_fx( y[i] = msu_r_sat( L_deposit_h( x[i] ), x[i - 1], mu ); /* Qx */ move16(); } - y[0] = msu_r_sat( L_deposit_h( x[0] ), *mem, mu ); /* Qx */ //??sat + y[0] = msu_r_sat( L_deposit_h( x[0] ), *mem, mu ); /* Qx */ move16(); #else FOR( i = lg - 1; i > 0; i-- ) @@ -73,10 +73,10 @@ void preemph_copy_32fx( #ifdef ISSUE_1836_replace_overflow_libcom FOR( i = lg - 1; i > 0; i-- ) { - y[i] = L_msu_sat( L_deposit_h( x[i] ), x[i - 1], mu ); /* Qx+16 */ //??sat + y[i] = L_msu_sat( L_deposit_h( x[i] ), x[i - 1], mu ); /* Qx+16 */ move16(); } - y[0] = L_msu_sat( L_deposit_h( x[0] ), *mem, mu ); /* Qx+16 */ //??sat + y[0] = L_msu_sat( L_deposit_h( x[0] ), *mem, mu ); /* Qx+16 */ move16(); #else FOR( i = lg - 1; i > 0; i-- ) @@ -162,17 +162,17 @@ void E_UTIL_f_preemph2( #ifdef ISSUE_1836_replace_overflow_libcom FOR( i = lg - 1; i > 0; i-- ) { - L_tmp = L_mult( signal[i], 16384 ); /* Qx + 15 */ - L_tmp = L_msu0_sat( L_tmp, signal[i - 1], mu ); /* Qx + 15 */ //??sat - L_tmp = L_shl_sat( L_tmp, add( shift, 1 ) ); /* Qx + shift + 16 */ - signal[i] = round_fx_sat( L_tmp ); /* Qx + shift */ //??sat + L_tmp = L_mult( signal[i], 16384 ); /* Qx + 15 */ + L_tmp = L_msu0_sat( L_tmp, signal[i - 1], mu ); /* Qx + 15 */ + L_tmp = L_shl_sat( L_tmp, add( shift, 1 ) ); /* Qx + shift + 16 */ + signal[i] = round_fx_sat( L_tmp ); /* Qx + shift */ move16(); } - L_tmp = L_mult( signal[0], 16384 ); /* Qx + 15 */ - L_tmp = L_msu0_sat( L_tmp, *mem, mu ); /* Qx + 15 */ //??sat - L_tmp = L_shl_sat( L_tmp, add( shift, 1 ) ); /* Qx + shift + 16 */ - signal[0] = round_fx_sat( L_tmp ); /* Qx + shift */ //??sat + L_tmp = L_mult( signal[0], 16384 ); /* Qx + 15 */ + L_tmp = L_msu0_sat( L_tmp, *mem, mu ); /* Qx + 15 */ + L_tmp = L_shl_sat( L_tmp, add( shift, 1 ) ); /* Qx + shift + 16 */ + signal[0] = round_fx_sat( L_tmp ); /* Qx + shift */ move16(); #else FOR( i = lg - 1; i > 0; i-- ) diff --git a/lib_com/pvq_com_fx.c b/lib_com/pvq_com_fx.c index d53004f03..9e2f58ed0 100644 --- a/lib_com/pvq_com_fx.c +++ b/lib_com/pvq_com_fx.c @@ -459,7 +459,7 @@ void NearOppSplitAdjustment_fx( *qnear = qboth; /* Q3 */ move16(); #ifdef ISSUE_1836_replace_overflow_libcom - QIb = extract_h( L_shl_sat( L_QIb, 16 ) ); /* may saturate Q0*/ //??sat + QIb = extract_h( L_shl_sat( L_QIb, 16 ) ); /* may saturate Q0*/ #else QIb = extract_h( L_shl_o( L_QIb, 16, &Overflow ) ); /* may saturate Q0*/ #endif @@ -561,7 +561,7 @@ void fine_gain_quant_fx( L_tmp = L_Comp( tmp1, exp2 ); Mpy_32_16_ss( L_tmp, 24660, &L_tmp, &lsb ); /* 24660 = 20*log10(2) in Q12 */ /*16+12-15=13 */ #ifdef ISSUE_1836_replace_overflow_libcom - gain_db = round_fx_sat( L_shl_sat( L_tmp, 17 ) ); //??sat + gain_db = round_fx_sat( L_shl_sat( L_tmp, 17 ) ); #else gain_db = round_fx_sat( L_shl_o( L_tmp, 17, &Overflow ) ); #endif diff --git a/lib_com/residu_fx.c b/lib_com/residu_fx.c index 1de4fac6c..d338e3163 100644 --- a/lib_com/residu_fx.c +++ b/lib_com/residu_fx.c @@ -75,32 +75,32 @@ void Residu3_lc_fx( q = add( q, shift ); } #ifdef ISSUE_1836_replace_overflow_libcom - *y++ = shl_sat( x[0], shift ); //??sat + *y++ = shl_sat( x[0], shift ); move16(); FOR( i = 1; i < m; i++ ) { - s = L_mult_sat( x[i], a[0] ); //??sat + s = L_mult_sat( x[i], a[0] ); /* Stop at i to Avoid Mults with Zeros */ FOR( j = 1; j <= i; j++ ) { - s = L_mac_sat( s, x[i - j], a[j] ); //??sat + s = L_mac_sat( s, x[i - j], a[j] ); } - s = L_shl_sat( s, q ); //??sat - *y++ = round_fx_sat( s ); //??sat + s = L_shl_sat( s, q ); + *y++ = round_fx_sat( s ); } FOR( ; i < lg; i++ ) { - s = L_mult_sat( x[i], a[0] ); //??sat + s = L_mult_sat( x[i], a[0] ); FOR( j = 1; j <= m; j++ ) { - s = L_mac_sat( s, x[i - j], a[j] ); //??sat + s = L_mac_sat( s, x[i - j], a[j] ); } - s = L_shl_sat( s, q ); //??sat - *y++ = round_fx_sat( s ); //??sat + s = L_shl_sat( s, q ); + *y++ = round_fx_sat( s ); } #else @@ -207,7 +207,7 @@ void Residu3_fx( s64 = W_mac_16_16( s64, x[i - 16], a[16] ); s32 = W_shl_sat_l( s64, q ); #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = round_fx_sat( s32 ); //??sat + y[i] = round_fx_sat( s32 ); #else y[i] = round_fx_o( s32, &Overflow ); #endif diff --git a/lib_com/stat_noise_uv_mod_fx.c b/lib_com/stat_noise_uv_mod_fx.c index 7624375d3..23ebe81b4 100644 --- a/lib_com/stat_noise_uv_mod_fx.c +++ b/lib_com/stat_noise_uv_mod_fx.c @@ -112,7 +112,7 @@ void stat_noise_uv_mod_fx( tmp_res = div_l( L_tmp_res, tmp_den ); move16(); #ifdef ISSUE_1836_replace_overflow_libcom - min_alpha = add_sat( tmp_res, 16384 ); //??sat + min_alpha = add_sat( tmp_res, 16384 ); #else min_alpha = add_o( tmp_res, 16384, &Overflow ); #endif @@ -265,7 +265,7 @@ void stat_noise_uv_mod_fx( L_tmp_res = Mult_32_16( L_tmp_res, sub( 32767, beta ) ); /*30-Q_local-tmp_shift+15-15 */ L_tmp_res = L_add_sat( L_shl_sat( L_tmp_res, sub( add( Q_local, tmp_shift ), 15 ) ), beta ); /* Q15 */ #ifdef ISSUE_1836_replace_overflow_libcom - tmp_res = extract_h( L_shl_sat( L_tmp_res, 15 ) ); /* 15+15-16=14 */ //??sat + tmp_res = extract_h( L_shl_sat( L_tmp_res, 15 ) ); /* 15+15-16=14 */ #else tmp_res = extract_h( L_shl_o( L_tmp_res, 15, &Overflow ) ); /* 15+15-16=14 */ #endif @@ -437,7 +437,7 @@ void stat_noise_uv_mod_ivas_fx( tmp_den = shl( tmp_den, tmp_shift ); tmp_res = div_l( L_tmp_res, tmp_den ); #ifdef ISSUE_1836_replace_overflow_libcom - min_alpha = add_sat( tmp_res, 16384 ); //??sat + min_alpha = add_sat( tmp_res, 16384 ); #else min_alpha = add_o( tmp_res, 16384, &Overflow ); #endif @@ -492,7 +492,7 @@ void stat_noise_uv_mod_ivas_fx( { exctilt = calc_tilt_fx( &Exc2_local[i_subfr], En_shift, L_SUBFR ); /*Q15 */ #ifdef ISSUE_1836_replace_overflow_libcom - exctilt = mult( shl_sat( sub( TILT_COMP_LIM_FX, min_alpha ), 2 ), exctilt ); /*Q15 */ //??sat + exctilt = mult( shl_sat( sub( TILT_COMP_LIM_FX, min_alpha ), 2 ), exctilt ); /*Q15 */ #else exctilt = mult( shl_o( sub( TILT_COMP_LIM_FX, min_alpha ), 2, &Overflow ), exctilt ); /*Q15 */ #endif @@ -521,7 +521,7 @@ void stat_noise_uv_mod_ivas_fx( tmp_den = shl( tmp_den, tmp_shift ); tmp_res = div_s( tmp_nom, tmp_den ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp_res = shl_sat( tmp_res, tmp_shift ); //??sat + tmp_res = shl_sat( tmp_res, tmp_shift ); #else tmp_res = shl_o( tmp_res, tmp_shift, &Overflow ); #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 771e978bc..f642e7310 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -1040,7 +1040,7 @@ static void filt_mu_fx( temp = mult_r( mu, ( *ptrs++ ) ); temp = add_sat( temp, *ptrs ); /*Q12 */ #ifdef ISSUE_1836_replace_overflow_libcom - sig_out[n] = shl_sat( mult_r( ga, temp ), 1 ); //??sat + sig_out[n] = shl_sat( mult_r( ga, temp ), 1 ); #else sig_out[n] = shl_o( mult_r( ga, temp ), 1, &Overflow ); #endif @@ -1572,7 +1572,7 @@ void GenShapedWBExcitation_ivas_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - excNoisyEnv[i] = L_add_sat( *mem_csfilt, L_mult( csfilt_num2[0], excTmp2[i] ) ); // L_mult: sat not poosible, excTmp2 > 0 //??sat + excNoisyEnv[i] = L_add_sat( *mem_csfilt, L_mult( csfilt_num2[0], excTmp2[i] ) ); // L_mult: sat not poosible, excTmp2 > 0 #else excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); #endif @@ -1618,8 +1618,8 @@ void GenShapedWBExcitation_ivas_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_mult_sat( exc4k_frac[i], exc4k_frac[i] ); /* Q29 */ //??sat - pow22 = L_add( pow22, L_shr( L_tmp, 10 ) ); /* Q22 */ + L_tmp = L_mult_sat( exc4k_frac[i], exc4k_frac[i] ); /* Q29 */ + pow22 = L_add( pow22, L_shr( L_tmp, 10 ) ); /* Q22 */ #else L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ pow22 = L_add_o( pow22, L_shr( L_tmp, 10 ), &Overflow ); /* Q22 */ @@ -1633,7 +1633,7 @@ void GenShapedWBExcitation_ivas_fx( { L_tmp = root_a_over_b_fx( pow1, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); #ifdef ISSUE_1836_replace_overflow_libcom - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ //??sat //??sat + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ #else scale = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q15 */ #endif @@ -1641,7 +1641,7 @@ void GenShapedWBExcitation_ivas_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - exc4kWhtnd[i] = round_fx_sat( L_shl_sat( L_mult_sat( exc4k_frac[i], scale ), sc ) ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ //??sat //??sat //??sat + exc4kWhtnd[i] = round_fx_sat( L_shl_sat( L_mult_sat( exc4k_frac[i], scale ), sc ) ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ #else exc4kWhtnd[i] = round_fx_o( L_shl_o( L_mult_o( exc4k_frac[i], scale, &Overflow ), sc, &Overflow ), &Overflow ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ #endif @@ -1661,7 +1661,7 @@ void GenShapedWBExcitation_ivas_fx( /*tmp_vfac = 2*voice_factors[i]; tmp_vfac = min(1, tmp_vfac);*/ #ifdef ISSUE_1836_replace_overflow_libcom - tmp_vfac = shl_sat( voice_factors[i], 1 ); //??sat + tmp_vfac = shl_sat( voice_factors[i], 1 ); #else tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); #endif @@ -1674,15 +1674,15 @@ void GenShapedWBExcitation_ivas_fx( Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); #ifdef ISSUE_1836_replace_overflow_libcom - temp1 = round_fx_sat( L_shl_sat( Ltemp1, exp ) ); /* Q15 */ //??sat //??sat - L_tmp = Mult_32_16( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ + temp1 = round_fx_sat( L_shl_sat( Ltemp1, exp ) ); /* Q15 */ + L_tmp = Mult_32_16( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ Ltemp2 = root_a_over_b_fx( L_tmp, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); - temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ //??sat //??sat + temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ FOR( j = 0; j < L_FRAME16k / 16; j++ ) { - L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat - exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat + L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ + exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ move16(); k++; } @@ -1863,8 +1863,8 @@ void GenShapedWBExcitation_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_mult_sat( excTmp2_frac[i], excTmp2_frac[i] ); /* Q29 */ //??sat - pow1 = L_add_sat( pow1, L_shr( L_tmp, 7 ) ); /* Q22 */ //??sat + L_tmp = L_mult_sat( excTmp2_frac[i], excTmp2_frac[i] ); /* Q29 */ + pow1 = L_add_sat( pow1, L_shr( L_tmp, 7 ) ); /* Q22 */ #else L_tmp = L_mult_o( excTmp2_frac[i], excTmp2_frac[i], &Overflow ); /* Q29 */ pow1 = L_add_o( pow1, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ @@ -1875,7 +1875,7 @@ void GenShapedWBExcitation_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - excNoisyEnv[i] = L_add_sat( *mem_csfilt, L_mult( csfilt_num2[0], excTmp2[i] ) ); //??sat + excNoisyEnv[i] = L_add_sat( *mem_csfilt, L_mult( csfilt_num2[0], excTmp2[i] ) ); #else excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); #endif @@ -1922,8 +1922,8 @@ void GenShapedWBExcitation_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_mult_sat( exc4k_frac[i], exc4k_frac[i] ); /* Q29 */ //??sat - pow22 = L_add( pow22, L_shr( L_tmp, 7 ) ); /* Q22 */ + L_tmp = L_mult_sat( exc4k_frac[i], exc4k_frac[i] ); /* Q29 */ + pow22 = L_add( pow22, L_shr( L_tmp, 7 ) ); /* Q22 */ #else L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ pow22 = L_add_o( pow22, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ @@ -1937,11 +1937,11 @@ void GenShapedWBExcitation_fx( { L_tmp = root_a_over_b_fx( pow1, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); #ifdef ISSUE_1836_replace_overflow_libcom - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ //??sat //??sat + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ sc = sub( add( n2, Q_bwe_exc ), 14 ); FOR( i = 0; i < L_FRAME16k / 4; i++ ) { - exc4kWhtnd[i] = round_fx_sat( L_shl_sat( L_mult_sat( exc4k_frac[i], scale ), sc ) ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ //??sat //??sat //??sat + exc4kWhtnd[i] = round_fx_sat( L_shl_sat( L_mult_sat( exc4k_frac[i], scale ), sc ) ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ move16(); } #else @@ -1968,7 +1968,7 @@ void GenShapedWBExcitation_fx( /*tmp_vfac = 2*voice_factors[i]; tmp_vfac = min(1, tmp_vfac);*/ #ifdef ISSUE_1836_replace_overflow_libcom - tmp_vfac = shl_sat( voice_factors[i], 1 ); //??sat + tmp_vfac = shl_sat( voice_factors[i], 1 ); #else tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); #endif @@ -1981,15 +1981,15 @@ void GenShapedWBExcitation_fx( Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); #ifdef ISSUE_1836_replace_overflow_libcom - temp1 = round_fx_sat( L_shl_sat( Ltemp1, exp ) ); /* Q15 */ //??sat //??sat - L_tmp = Mpy_32_16_1( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ + temp1 = round_fx_sat( L_shl_sat( Ltemp1, exp ) ); /* Q15 */ + L_tmp = Mpy_32_16_1( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ Ltemp2 = root_a_over_b_fx( L_tmp, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); - temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ //??sat //??sat + temp2 = round_fx_sat( L_shl_sat( Ltemp2, exp ) ); /* Q15 */ FOR( j = 0; j < L_FRAME16k / 16; j++ ) { - L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ //??sat //??sat - exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ //??sat + L_tmp = L_mult_sat( temp1, exc4kWhtnd[k] ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_sat( L_tmp, L_shl_sat( L_mult_sat( temp2, exc4k_frac[k] ), sc ) ); /* Q(16+Q_bwe_exc) */ + exc4kWhtnd[k] = round_fx_sat( L_tmp ); /* Q_bwe_exc */ move16(); k = add( k, 1 ); } @@ -5886,7 +5886,7 @@ void non_linearity_fx( /* (log2(scale / prev_scale))/length */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ //??sat + L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ #else L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ #endif @@ -5895,7 +5895,7 @@ void non_linearity_fx( tmp = extract_l( Pow2( 14, frac ) ); #ifdef ISSUE_1836_replace_overflow_libcom - scale_step = shl_sat( tmp, exp ); /* Q14 */ //??sat + scale_step = shl_sat( tmp, exp ); /* Q14 */ #else scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ #endif @@ -5923,7 +5923,7 @@ void non_linearity_fx( exp = norm_s( max_val ); tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ #ifdef ISSUE_1836_replace_overflow_libcom - scale = L_shl_sat( L_mult( 21955 /* 0.67 in Q15 */, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ //??sat + scale = L_shl_sat( L_mult( 21955 /* 0.67 in Q15 */, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ #else scale = L_shl_o( L_mult( 21955 /* 0.67 in Q15 */, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ #endif @@ -5976,7 +5976,7 @@ void non_linearity_fx( /* (log2(scale / prev_scale))/length */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ //??sat + L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ #else L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ #endif @@ -6160,7 +6160,7 @@ void non_linearity_ivas_fx( /* (log2(scale / prev_scale))/length */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ //??sat + L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ #else L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ #endif @@ -6169,7 +6169,7 @@ void non_linearity_ivas_fx( tmp = extract_l( Pow2( 14, frac ) ); #ifdef ISSUE_1836_replace_overflow_libcom - scale_step = shl_sat( tmp, exp ); /* Q14 */ //??sat + scale_step = shl_sat( tmp, exp ); /* Q14 */ #else scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ #endif @@ -6197,7 +6197,7 @@ void non_linearity_ivas_fx( exp = norm_s( max_val ); tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ #ifdef ISSUE_1836_replace_overflow_libcom - scale = L_shl_sat( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ //??sat + scale = L_shl_sat( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ #else scale = L_shl_o( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ #endif @@ -6250,7 +6250,7 @@ void non_linearity_ivas_fx( /* (log2(scale / prev_scale))/length */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ //??sat + L_tmp = L_shl_sat( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ) ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ #else L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ #endif @@ -6259,7 +6259,7 @@ void non_linearity_ivas_fx( tmp = extract_l( Pow2( 14, frac ) ); #ifdef ISSUE_1836_replace_overflow_libcom - scale_step = shl_sat( tmp, exp ); /*Q14 */ //??sat + scale_step = shl_sat( tmp, exp ); /*Q14 */ #else scale_step = shl_o( tmp, exp, &Overflow ); /*Q14 */ #endif @@ -7064,7 +7064,7 @@ void Estimate_mix_factors_fx( expb = norm_l( temp_p1_p2 ); #ifdef ISSUE_1836_replace_overflow_libcom - fracb = round_fx_sat( L_shl( temp_p1_p2, expb ) ); //??sat + fracb = round_fx_sat( L_shl( temp_p1_p2, expb ) ); #else fracb = round_fx_o( L_shl_o( temp_p1_p2, expb, &Overflow ), &Overflow ); #endif @@ -7211,7 +7211,7 @@ void prep_tbe_exc_fx( move16(); #ifdef ISSUE_1836_replace_overflow_libcom - pitch = shl_sat( add( shl_sat( T0, 2 ), T0_frac ), 5 ); /* Q7 */ //??sat //??sat + pitch = shl_sat( add( shl_sat( T0, 2 ), T0_frac ), 5 ); /* Q7 */ #else pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ #endif @@ -7245,14 +7245,14 @@ void prep_tbe_exc_fx( { interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ #ifdef ISSUE_1836_replace_overflow_libcom - gain_code16 = round_fx_sat( L_shl_sat( gain_code_fx, Q_exc ) ); /*Q_exc */ //??sat //??sat + gain_code16 = round_fx_sat( L_shl_sat( gain_code_fx, Q_exc ) ); /*Q_exc */ FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) { - L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ - L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ //??sat - L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */ //??sat - L_tmp = L_shl_sat( L_tmp, 1 ); /*16+Q_exc */ /* saturation can occur here */ - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_sat( L_tmp ); /*Q_exc */ //??sat + L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ + L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ + L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */ + L_tmp = L_shl_sat( L_tmp, 1 ); /*16+Q_exc */ /* saturation can occur here */ + bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_sat( L_tmp ); /*Q_exc */ move16(); } #else @@ -7281,10 +7281,10 @@ void prep_tbe_exc_fx( Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ #ifdef ISSUE_1836_replace_overflow_libcom - Ltemp1 = L_shl_sat( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/ ); /*Q_exc+16 */ //??sat - Ltemp2 = L_shl_sat( Ltemp2, add( Q_exc, shift ) /*Q_exc+ 2 + 6 (or) 10 - 13*/ ); /*Q_exc+16 */ //??sat + Ltemp1 = L_shl_sat( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/ ); /*Q_exc+16 */ + Ltemp2 = L_shl_sat( Ltemp2, add( Q_exc, shift ) /*Q_exc+ 2 + 6 (or) 10 - 13*/ ); /*Q_exc+16 */ - tmp_code_preInt_fx[i] = round_fx_sat( L_add_sat( Ltemp1, Ltemp2 ) ); /* Q_exc */ //??sat //??sat + tmp_code_preInt_fx[i] = round_fx_sat( L_add_sat( Ltemp1, Ltemp2 ) ); /* Q_exc */ #else Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, shift ) /*Q_exc+ 2 + 6 (or) 10 - 13*/, &Overflow ); /*Q_exc+16 */ @@ -7301,8 +7301,8 @@ void prep_tbe_exc_fx( /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ #ifdef ISSUE_1836_replace_overflow_libcom - Ltemp1 = L_shl_sat( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/ ); /*Q_exc+16 */ //??sat - tmp_code_preInt_fx[i] = round_fx_sat( Ltemp1 ); /* Q_exc */ //??sat + Ltemp1 = L_shl_sat( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/ ); /*Q_exc+16 */ + tmp_code_preInt_fx[i] = round_fx_sat( Ltemp1 ); /* Q_exc */ #else Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ @@ -7315,9 +7315,9 @@ void prep_tbe_exc_fx( FOR( i = 0; i < shl( L_subfr, 1 ); i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + ( i_subfr_fx << 1 )] ); /*Q14+Q_exc+1 */ - tmp = round_fx_sat( L_shl_sat( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/ ) ); /* tmp in Q_exc */ //??sat //??sat - bwe_exc_fx[i + ( i_subfr_fx << 1 )] = add_sat( tmp, tmp_code_fx[i] ); /*Q_exc */ //??sat + L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + ( i_subfr_fx << 1 )] ); /*Q14+Q_exc+1 */ + tmp = round_fx_sat( L_shl_sat( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/ ) ); /* tmp in Q_exc */ + bwe_exc_fx[i + ( i_subfr_fx << 1 )] = add_sat( tmp, tmp_code_fx[i] ); /*Q_exc */ #else L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + shl( i_subfr_fx, 1 )] ); /*Q14+Q_exc+1 */ tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ @@ -7390,7 +7390,7 @@ Word16 swb_formant_fac_fx( /* formant_fac = 1.0f - 0.5f*formant_fac */ tmp = mult_r( 16384, formant_fac ); /* 0.5 in Q15 */ #ifdef ISSUE_1836_replace_overflow_libcom - formant_fac = shl_sat( sub( 4096 /* 1 in Q12 */, tmp ), 3 ); //??sat + formant_fac = shl_sat( sub( 4096 /* 1 in Q12 */, tmp ), 3 ); #else formant_fac = shl_o( sub( 4096 /* 1 in Q12 */, tmp ), 3, &Overflow ); #endif diff --git a/lib_com/syn_filt_fx.c b/lib_com/syn_filt_fx.c index 6f4eb8763..891314fe2 100644 --- a/lib_com/syn_filt_fx.c +++ b/lib_com/syn_filt_fx.c @@ -18,8 +18,8 @@ static Word32 syn_kern_2( Word32 L_tmp, const Word16 a[], const Word16 y[] ) L_tmp = L_msu_o( L_tmp, y[-1], a[1], &Overflow ); return L_msu_o( L_tmp, y[-2], a[2], &Overflow ); #else - L_tmp = L_msu_sat( L_tmp, y[-1], a[1] ); //??sat - return L_msu_sat( L_tmp, y[-2], a[2] ); //??sat + L_tmp = L_msu_sat( L_tmp, y[-1], a[1] ); + return L_msu_sat( L_tmp, y[-2], a[2] ); #endif } @@ -385,8 +385,8 @@ void E_UTIL_synthesis( const Word16 shift, const Word16 a[], const Word16 x[], W /* Filtering Only from Input + Memory */ L_tmp = syn_kern( L_mult( a0, *x++ ), a, mem ); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( L_tmp, q ); //??sat - *y++ = round_fx_sat( L_tmp ); //??sat + L_tmp = L_shl_sat( L_tmp, q ); + *y++ = round_fx_sat( L_tmp ); #else L_tmp = L_shl_o( L_tmp, q, &Overflow ); *y++ = round_fx_o( L_tmp, &Overflow ); @@ -401,7 +401,7 @@ void E_UTIL_synthesis( const Word16 shift, const Word16 a[], const Word16 x[], W FOR( j = 1; j <= i; j++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_msu_sat( L_tmp, a[j], y[-j] ); //??sat + L_tmp = L_msu_sat( L_tmp, a[j], y[-j] ); #else L_tmp = L_msu_o( L_tmp, a[j], y[-j], &Overflow ); #endif @@ -412,8 +412,8 @@ void E_UTIL_synthesis( const Word16 shift, const Word16 a[], const Word16 x[], W L_tmp = L_msu_sat( L_tmp, a[j], mem[i - j] ); } #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( L_tmp, q ); //??sat - *y++ = round_fx_sat( L_tmp ); //??sat + L_tmp = L_shl_sat( L_tmp, q ); + *y++ = round_fx_sat( L_tmp ); #else L_tmp = L_shl_o( L_tmp, q, &Overflow ); *y++ = round_fx_o( L_tmp, &Overflow ); @@ -509,7 +509,7 @@ void E_UTIL_synthesis_fx( const Word16 shift, const Word32 a[], const Word32 x[] mem += m; /*move32();*/ #ifdef ISSUE_1836_replace_overflow_libcom - a0 = L_shr_sat( a[0], shift ); /* input / 2^shift */ //??sat + a0 = L_shr_sat( a[0], shift ); /* input / 2^shift */ #else a0 = L_shr_o( a[0], shift, &Overflow ); /* input / 2^shift */ #endif @@ -520,7 +520,7 @@ void E_UTIL_synthesis_fx( const Word16 shift, const Word32 a[], const Word32 x[] /* Filtering Only from Input + Memory */ L_tmp = syn_kern( Mpy_32_32( a0, *x++ ), a, mem ); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( L_tmp, q ); //??sat + L_tmp = L_shl_sat( L_tmp, q ); #else L_tmp = L_shl_o( L_tmp, q, &Overflow ); #endif @@ -542,7 +542,7 @@ void E_UTIL_synthesis_fx( const Word16 shift, const Word32 a[], const Word32 x[] L_tmp = Msub_32_32_r( L_tmp, a[j], mem[i - j] ); } #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( L_tmp, q ); //??sat + L_tmp = L_shl_sat( L_tmp, q ); #else L_tmp = L_shl_o( L_tmp, q, &Overflow ); #endif @@ -555,7 +555,7 @@ void E_UTIL_synthesis_fx( const Word16 shift, const Word32 a[], const Word32 x[] { L_tmp = syn_kern( Mpy_32_32( a0, *x++ ), a, y ); #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( L_tmp, q ); //??sat + L_tmp = L_shl_sat( L_tmp, q ); #else L_tmp = L_shl_o( L_tmp, q, &Overflow ); #endif diff --git a/lib_com/tcx_ltp_fx.c b/lib_com/tcx_ltp_fx.c index b3fe52dd6..9f92f0b5b 100644 --- a/lib_com/tcx_ltp_fx.c +++ b/lib_com/tcx_ltp_fx.c @@ -411,10 +411,10 @@ void predict_signal( FOR( j = 0; j < L_subfr; j++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - s = L_mult_sat( win[0], x0[0] ); /* Qx + 16 */ //??sat - s = L_mac_sat( s, win[1], x0[1] ); /* Qx + 16 */ //??sat - s = L_mac_sat( s, win[2], x0[2] ); /* Qx + 16 */ //??sat - excO[j] = mac_r_sat( s, win[3], x0[3] ); /* Qx + 16 */ //??sat + s = L_mult_sat( win[0], x0[0] ); /* Qx + 16 */ + s = L_mac_sat( s, win[1], x0[1] ); /* Qx + 16 */ + s = L_mac_sat( s, win[2], x0[2] ); /* Qx + 16 */ + excO[j] = mac_r_sat( s, win[3], x0[3] ); /* Qx + 16 */ #else s = L_mult_o( win[0], x0[0], &Overflow ); /* Qx + 16 */ s = L_mac_o( s, win[1], x0[1], &Overflow ); /* Qx + 16 */ diff --git a/lib_com/tcx_mdct_fx.c b/lib_com/tcx_mdct_fx.c index 135e54af8..29827b935 100644 --- a/lib_com/tcx_mdct_fx.c +++ b/lib_com/tcx_mdct_fx.c @@ -129,7 +129,7 @@ void TCX_MDCT( FOR( i = 0; i < l / 2; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[m / 2 + r / 2 + m / 2 + i] = L_msu_sat( L_mult( x[i], factor ), x[l - 1 - i], factor ); /* exp(y_e) */ //??sat + y[m / 2 + r / 2 + m / 2 + i] = L_msu_sat( L_mult( x[i], factor ), x[l - 1 - i], factor ); /* exp(y_e) */ #else y[m / 2 + r / 2 + m / 2 + i] = L_msu_o( L_mult( x[i], factor ), x[l - 1 - i], factor, &Overflow ); /* exp(y_e) */ #endif @@ -195,7 +195,7 @@ void TCX_MDST( FOR( i = 0; i < l / 2; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[m / 2 + r / 2 + m / 2 + i] = L_msu_sat( L_mult( x[i], neg_factor ), x[l - 1 - i], factor ); /* exp(y_e) */ //??sat + y[m / 2 + r / 2 + m / 2 + i] = L_msu_sat( L_mult( x[i], neg_factor ), x[l - 1 - i], factor ); /* exp(y_e) */ #else y[m / 2 + r / 2 + m / 2 + i] = L_msu_o( L_mult( x[i], neg_factor ), x[l - 1 - i], factor, &Overflow ); /* exp(y_e) */ #endif diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 19d0ed64c..0cfca3883 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -319,8 +319,8 @@ Word16 usquant_fx( /* o: index of the winning codeword */ exp = norm_s( delta ); tmp = div_s( shl( 1, sub( 14, exp ) ), delta ); /*Q(29-exp-(Qx-1))->Q(30-exp-Qx) */ #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_mult( sub_sat( x, qlow ), tmp ); /*Q(31-exp) */ //??sat - idx = extract_l( L_shr_r( L_add( L_tmp, shl_sat( 1, sub( 30, exp ) ) ), sub( 31, exp ) ) ); /*Q0 */ //??sat + L_tmp = L_mult( sub_sat( x, qlow ), tmp ); /*Q(31-exp) */ + idx = extract_l( L_shr_r( L_add( L_tmp, shl_sat( 1, sub( 30, exp ) ) ), sub( 31, exp ) ) ); /*Q0 */ #else L_tmp = L_mult( sub_o( x, qlow, &Overflow ), tmp ); /*Q(31-exp) */ idx = extract_l( L_shr_r( L_add( L_tmp, shl_o( 1, sub( 30, exp ), &Overflow ) ), sub( 31, exp ) ) ); /*Q0 */ @@ -731,7 +731,7 @@ void Copy_Scale_sig( FOR( i = 0; i < lg; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = shl_sat( x[i], exp0 ); //??sat + y[i] = shl_sat( x[i], exp0 ); #else y[i] = shl_o( x[i], exp0, &Overflow ); #endif @@ -775,7 +775,7 @@ void Copy_Scale_sig_16_32_DEPREC( FOR( i = 0; i < lg; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = L_deposit_l( shl_sat( x[i], exp0 ) ); //??sat + y[i] = L_deposit_l( shl_sat( x[i], exp0 ) ); #else y[i] = L_deposit_l( shl_o( x[i], exp0, &Overflow ) ); #endif @@ -792,7 +792,7 @@ void Copy_Scale_sig_16_32_DEPREC( assert( exp0 < 16 ); #endif #ifdef ISSUE_1836_replace_overflow_libcom - tmp = shl_sat( 1, exp0 ); //??sat + tmp = shl_sat( 1, exp0 ); #else tmp = shl_o( 1, exp0, &Overflow ); #endif @@ -835,7 +835,7 @@ void Copy_Scale_sig_16_32_no_sat( FOR( i = 0; i < lg; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = L_deposit_l( shl_sat( x[i], exp0 ) ); //??sat + y[i] = L_deposit_l( shl_sat( x[i], exp0 ) ); #else y[i] = L_deposit_l( shl_o( x[i], exp0, &Overflow ) ); #endif @@ -844,7 +844,7 @@ void Copy_Scale_sig_16_32_no_sat( return; } #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( 1, exp0 - 1 ); //??sat + L_tmp = L_shl_sat( 1, exp0 - 1 ); #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); #endif @@ -904,7 +904,7 @@ void Copy_Scale_sig_32_16( FOR( i = 0; i < lg; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = round_fx_sat( x[i] ); //??sat + y[i] = round_fx_sat( x[i] ); #else y[i] = round_fx_o( x[i], &Overflow ); #endif @@ -1960,25 +1960,25 @@ Word16 w_vquant_fx( dist = L_deposit_l( 0 ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = sub_sat( x[3], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[3], shr( cb[j++], Qx ) ); if ( weights[3] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[2], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[2], shr( cb[j++], Qx ) ); if ( weights[2] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[1], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[1], shr( cb[j++], Qx ) ); if ( weights[1] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[0], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[0], shr( cb[j++], Qx ) ); if ( weights[0] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } #else tmp = sub_o( x[3], shr( cb[j++], Qx ), &Overflow ); @@ -2032,25 +2032,25 @@ Word16 w_vquant_fx( dist = L_deposit_l( 0 ); #ifdef ISSUE_1836_replace_overflow_libcom - tmp = sub_sat( x[0], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[0], shr( cb[j++], Qx ) ); if ( weights[0] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[1], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[1], shr( cb[j++], Qx ) ); if ( weights[1] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[2], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[2], shr( cb[j++], Qx ) ); if ( weights[2] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } - tmp = sub_sat( x[3], shr( cb[j++], Qx ) ); //??sat + tmp = sub_sat( x[3], shr( cb[j++], Qx ) ); if ( weights[3] != 0 ) { - dist = L_mac0_sat( dist, tmp, tmp ); //??sat + dist = L_mac0_sat( dist, tmp, tmp ); } #else tmp = sub_o( x[0], shr( cb[j++], Qx ), &Overflow ); @@ -2556,7 +2556,7 @@ Word32 root_a_over_b_fx( exp_num = norm_l( b ); #ifdef ISSUE_1836_replace_overflow_libcom - num = round_fx_sat( L_shl_sat( b, exp_num ) ); //??sat + num = round_fx_sat( L_shl_sat( b, exp_num ) ); #else num = round_fx_o( L_shl_o( b, exp_num, &Overflow ), &Overflow ); #endif @@ -2564,14 +2564,14 @@ Word32 root_a_over_b_fx( exp_den = norm_l( a ); #ifdef ISSUE_1836_replace_overflow_libcom - den = round_fx_sat( L_shl_sat( a, exp_den ) ); //??sat + den = round_fx_sat( L_shl_sat( a, exp_den ) ); #else den = round_fx_o( L_shl_o( a, exp_den, &Overflow ), &Overflow ); #endif exp_den = sub( sub( 30, exp_den ), Q_a ); scale = shr( sub( den, num ), 15 ); -#ifdef ISSUE_1836_replace_overflow_libcom //??sat +#ifdef ISSUE_1836_replace_overflow_libcom num = shl_sat( num, scale ); #else num = shl_o( num, scale, &Overflow ); @@ -2749,7 +2749,7 @@ void fir_fx( const Word16 x[], /* i : input vector FOR( i = 0; i < L; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - s = L_mult_sat( buf_in[K + i], h[0] ); //??sat + s = L_mult_sat( buf_in[K + i], h[0] ); #else s = L_mult_o( buf_in[K + i], h[0], &Overflow ); #endif @@ -2757,14 +2757,14 @@ void fir_fx( const Word16 x[], /* i : input vector FOR( j = 1; j <= K; j++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - s = L_mac_sat( s, h[j], buf_in[K + i - j] ); //??sat + s = L_mac_sat( s, h[j], buf_in[K + i - j] ); #else s = L_mac_o( s, h[j], buf_in[K + i - j], &Overflow ); #endif } #ifdef ISSUE_1836_replace_overflow_libcom - s = L_shl_sat( s, shift ); //??sat - y[i] = round_fx_sat( s ); /*Qx */ //??sat + s = L_shl_sat( s, shift ); + y[i] = round_fx_sat( s ); /*Qx */ #else s = L_shl_o( s, shift, &Overflow ); y[i] = round_fx_o( s, &Overflow ); /*Qx */ @@ -2926,7 +2926,7 @@ Word16 squant_fx( /* o: index of the winning codeword */ /*dist += tmp*tmp; */ #ifdef ISSUE_1836_replace_overflow_libcom - L_dist = L_mac_sat( L_dist, tmp, tmp ); //??sat + L_dist = L_mac_sat( L_dist, tmp, tmp ); #else L_dist = L_mac_o( L_dist, tmp, tmp, &Overflow ); #endif @@ -3087,7 +3087,7 @@ void Copy_Scale_sig32( FOR( i = 0; i < lg; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = L_shl_sat( x[i], tmp ); //??sat + y[i] = L_shl_sat( x[i], tmp ); #else y[i] = L_shl_o( x[i], tmp, &Overflow ); #endif @@ -3096,7 +3096,7 @@ void Copy_Scale_sig32( return; } #ifdef ISSUE_1836_replace_overflow_libcom - L_tmp = L_shl_sat( 1, exp0 - 1 ); //??sat + L_tmp = L_shl_sat( 1, exp0 - 1 ); #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); #endif @@ -3289,7 +3289,7 @@ void add_vec_fx( FOR( i = 0; i < N; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = add_sat( x1[i], shr_r_sat( x2[i], Qyx2 ) ); //??sat //??sat + y[i] = add_sat( x1[i], shr_r_sat( x2[i], Qyx2 ) ); #else y[i] = add_o( x1[i], shr_r_sat( x2[i], Qyx2 ), &Overflow ); #endif @@ -3301,7 +3301,7 @@ void add_vec_fx( FOR( i = 0; i < N; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom - y[i] = add_sat( shr_r_sat( x1[i], Qyx1 ), shr_r_sat( x2[i], Qyx2 ) ); //??sat //!!sat //!!sat + y[i] = add_sat( shr_r_sat( x1[i], Qyx1 ), shr_r_sat( x2[i], Qyx2 ) ); //!!sat //!!sat #else y[i] = add_o( shr_r_sat( x1[i], Qyx1 ), shr_r_sat( x2[i], Qyx2 ), &Overflow ); #endif diff --git a/lib_com/weight_a_fx.c b/lib_com/weight_a_fx.c index 9f11efcde..4f19f2ba1 100644 --- a/lib_com/weight_a_fx.c +++ b/lib_com/weight_a_fx.c @@ -125,7 +125,7 @@ void weight_a_fx( FOR( i = 1; i < m; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - ap[i] = round_fx_sat( L_shl( L_mult0( a[i], fac ), shift ) ); /* Q11 + shift */ //??sat + ap[i] = round_fx_sat( L_shl( L_mult0( a[i], fac ), shift ) ); /* Q11 + shift */ #else ap[i] = round_fx_o( L_shl( L_mult0( a[i], fac ), shift ), &Overflow ); /* Q11 + shift */ #endif diff --git a/lib_com/wi_fx.c b/lib_com/wi_fx.c index d0058d3df..94ac31a8b 100644 --- a/lib_com/wi_fx.c +++ b/lib_com/wi_fx.c @@ -323,8 +323,8 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - ab1[k] = round_fx_sat( L_mac0_sat( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k] ) ); /* Q(-15) */ //??sat - ab2[k] = round_fx_sat( L_msu0_sat( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k] ) ); /* Q(-15) */ //??sat + ab1[k] = round_fx_sat( L_mac0_sat( L_mult0( X1.a_fx[k], X2.a_fx[k] ), X1.b_fx[k], X2.b_fx[k] ) ); /* Q(-15) */ + ab2[k] = round_fx_sat( L_msu0_sat( L_mult0( X1.a_fx[k], X2.b_fx[k] ), X1.b_fx[k], X2.a_fx[k] ) ); /* Q(-15) */ move16(); move16(); #else @@ -354,8 +354,8 @@ static Word16 DTFS_alignment_weight_fx( FOR( k = 0; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - corr_fx = L_mac0_sat( corr_fx, ab1[k], cos_table[s_and( temp, 511 )] ); //??sat - corr_fx = L_mac0_sat( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )] ); //??sat + corr_fx = L_mac0_sat( corr_fx, ab1[k], cos_table[s_and( temp, 511 )] ); + corr_fx = L_mac0_sat( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )] ); #else corr_fx = L_mac0_o( corr_fx, ab1[k], cos_table[s_and( temp, 511 )], &Overflow ); corr_fx = L_mac0_o( corr_fx, ab2[k], cos_table[s_and( add( temp, 128 ), 511 )], &Overflow ); @@ -373,8 +373,8 @@ static Word16 DTFS_alignment_weight_fx( } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - temp1 = round_fx_sat( (Word32) L_shl_sat( corr_fx, Qcorr ) ); /* Q(Qcorr-16) */ //??sat //??sat - wcorr_fx = L_mult_sat( temp1, shl_sat( temp, 2 ) ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ //??sat //!!sat + temp1 = round_fx_sat( (Word32) L_shl_sat( corr_fx, Qcorr ) ); /* Q(Qcorr-16) */ + wcorr_fx = L_mult_sat( temp1, shl_sat( temp, 2 ) ); /* Q(Qcorr-16+13+2+1)=Q(Qcorr) */ //!!sat IF( GE_16( Qmaxcorr, Qcorr ) ) { diff_corr = L_sub_sat( wcorr_fx, L_shl_sat( maxcorr_fx, sub( Qcorr, Qmaxcorr ) ) ); /* Qcorr */ @@ -483,8 +483,8 @@ Word16 DTFS_alignment_full_fx( FOR( k = 0; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - ab1[k] = round_fx_sat( L_mac_sat( L_mult_sat( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat - ab2[k] = round_fx_sat( L_msu_sat( L_mult_sat( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ //??sat //??sat //??sat + ab1[k] = round_fx_sat( L_mac_sat( L_mult_sat( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ + ab2[k] = round_fx_sat( L_msu_sat( L_mult_sat( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k] ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k] ) ); /* Q(-15); */ #else ab1[k] = round_fx_o( L_mac_o( L_mult_o( X1_DTFS_fx.a_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.b_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ ab2[k] = round_fx_o( L_msu_o( L_mult_o( X1_DTFS_fx.b_fx[k], X2_DTFS_fx.a_fx[k], &Overflow ), X1_DTFS_fx.a_fx[k], X2_DTFS_fx.b_fx[k], &Overflow ), &Overflow ); /* Q(-15); */ @@ -519,9 +519,9 @@ Word16 DTFS_alignment_full_fx( FOR( k = 0; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - corr_fx = L_mac_sat( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat - corr_fx = L_mac_sat( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); //??sat - temp = add_sat( temp, temp1 ); //??sat + corr_fx = L_mac_sat( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); + corr_fx = L_mac_sat( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )] ); + temp = add_sat( temp, temp1 ); #else corr_fx = L_mac_o( corr_fx, ab1[k], C_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); corr_fx = L_mac_o( corr_fx, ab2[k], S_fx[( 2 * temp ) % ( 4 * X2_DTFS_fx.lag_fx )], &Overflow ); @@ -649,9 +649,9 @@ void Q2phaseShift_fx( { temp = X_fx->a_fx[k]; #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat //??sat //??sat - X_fx->b_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat //??sat //??sat - temp2 = L_add_sat( temp2, (Word32) ph ); //??sat + X_fx->a_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ + X_fx->b_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); + temp2 = L_add_sat( temp2, (Word32) ph ); #else X_fx->a_fx[k] = round_fx_o( L_msu_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_mac_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); @@ -669,9 +669,9 @@ void Q2phaseShift_fx( { temp = X_fx->a_fx[k]; #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ //??sat - X_fx->b_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); //??sat - temp2 = add_sat( (Word16) temp2, negate( ph ) ); //??sat + X_fx->a_fx[k] = round_fx_sat( L_mac_sat( L_mult_sat( temp, C_fx[temp2 % ( 4 * Lag )] ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )] ) ); /* X.Q */ + X_fx->b_fx[k] = round_fx_sat( L_msu_sat( L_mult_sat( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )] ), temp, S_fx[temp2 % ( 4 * Lag )] ) ); + temp2 = add_sat( (Word16) temp2, negate( ph ) ); #else X_fx->a_fx[k] = round_fx_o( L_mac_o( L_mult_o( temp, C_fx[temp2 % ( 4 * Lag )], &Overflow ), X_fx->b_fx[k], S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); /* X.Q */ X_fx->b_fx[k] = round_fx_o( L_msu_o( L_mult_o( X_fx->b_fx[k], C_fx[temp2 % ( 4 * Lag )], &Overflow ), temp, S_fx[temp2 % ( 4 * Lag )], &Overflow ), &Overflow ); @@ -823,13 +823,13 @@ void DTFS_to_fs_fx( exp = norm_s( X_fx->lag_fx ); tmp = div_s( shl( 1, sub( 14, exp ) ), X_fx->lag_fx ); /* Q29-exp */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp1 = L_mult( 12800, tmp ); /* Q(30-exp) */ - diff_fx = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat + L_tmp1 = L_mult( 12800, tmp ); /* Q(30-exp) */ + diff_fx = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ exp = norm_s( diff_fx ); - tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ - L_tmp1 = L_mult_sat( X_fx->upper_cut_off_freq_fx, tmp ); /* Q(30-exp) */ //??sat - nH_band = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ //??sat + tmp = div_s( shl( 1, sub( 14, exp ) ), diff_fx ); /* Q29-exp */ + L_tmp1 = L_mult_sat( X_fx->upper_cut_off_freq_fx, tmp ); /* Q(30-exp) */ + nH_band = extract_h( L_shl_sat( L_tmp1, sub( exp, 14 ) ) ); /* Q0 */ #else L_tmp1 = L_mult_o( 12800, tmp, &Overflow ); /* Q(30-exp) */ diff_fx = extract_h( L_shl_o( L_tmp1, sub( exp, 14 ), &Overflow ) ); /* Q0 */ @@ -863,8 +863,8 @@ void DTFS_to_fs_fx( exp = norm_s( N ); tmp = div_s( shl( 1, ( sub( 14, exp ) ) ), N ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp = L_shl_sat( tmp, add( exp, 6 ) ); //??sat - inv_lag = round_fx_sat( L_tmp ); //??sat + L_tmp = L_shl_sat( tmp, add( exp, 6 ) ); + inv_lag = round_fx_sat( L_tmp ); #else L_tmp = L_shl_o( tmp, add( exp, 6 ), &Overflow ); inv_lag = round_fx_o( L_tmp, &Overflow ); @@ -883,8 +883,8 @@ void DTFS_to_fs_fx( FOR( n = 1; n < N; n++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac0_sat( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*cos(sum) */ //??sat - L_b = L_mac0_sat( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*sin(sum) */ //??sat + L_a = L_mac0_sat( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*cos(sum) */ + L_b = L_mac0_sat( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )] ); /* Q16 of x[n]*sin(sum) */ #else L_a = L_mac0_o( L_a, x[n], C_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*cos(sum) */ L_b = L_mac0_o( L_b, x[n], S_fx[( 4 * sum ) % ( 4 * N )], &Overflow ); /* Q16 of x[n]*sin(sum) */ @@ -926,8 +926,8 @@ void DTFS_to_fs_fx( FOR( n = 0; n < N - 1; n += 2 ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat - L_a = L_mac_sat( L_a, x[n + 1], temp_neg ); //??sat + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ + L_a = L_mac_sat( L_a, x[n + 1], temp_neg ); #else L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ L_a = L_mac_o( L_a, x[n + 1], temp_neg, &Overflow ); @@ -937,7 +937,7 @@ void DTFS_to_fs_fx( if ( s_and( N, 1 ) ) /*if N is odd we need to calculate last */ { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ //??sat + L_a = L_mac_sat( L_a, x[n], temp ); /* Q1 */ #else L_a = L_mac_o( L_a, x[n], temp, &Overflow ); /* Q1 */ #endif @@ -968,21 +968,21 @@ void DTFS_to_fs_fx( #ifdef ISSUE_1836_replace_overflow_libcom__remnant FOR( k = 1; k <= nH; k++ ) { - X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ move16(); - X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat - move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*2.0/N */ - X_fx->b_fx[k] = round_fx_sat( L_shl_sat( Lb[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*2.0/N */ + X_fx->b_fx[k] = round_fx_sat( L_shl_sat( Lb[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ move16(); - X_fx->b_fx[k] = mult_r_sat( X_fx->b_fx[k], inv_lag ); //??sat - move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of b[k]*2.0/N */ + X_fx->b_fx[k] = mult_r_sat( X_fx->b_fx[k], inv_lag ); + move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of b[k]*2.0/N */ } /* IF ( N%2 == 0 ) */ IF( s_and( N, 1 ) == 0 ) { - X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ //??sat //??sat - X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); //??sat + X_fx->a_fx[k] = round_fx_sat( L_shl_sat( La[k], temp ) ); /* Q(8+temp-16)=Q(temp-8) */ + X_fx->a_fx[k] = mult_r_sat( X_fx->a_fx[k], inv_lag ); move16(); move16(); /* Q(temp-8+19+1-16)=Q(temp-4) of a[k]*1.0/N */ X_fx->b_fx[k] = 0; @@ -1330,20 +1330,20 @@ void DTFS_zeroFilter_fx( FOR( n = 0; n < N; n++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); //??sat + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); /* Q(12+15+1) */ + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )] ); temp2 = add( temp2, temp ); } - temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat - temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ /* Calculate the circular convolution */ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); - L_temp1 = L_msu_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1) */ //??sat + L_temp1 = L_msu_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_mac_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1) */ //??sat + L_temp2 = L_mac_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1) */ #else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx->lag_fx )], &Overflow ); @@ -1379,8 +1379,8 @@ void DTFS_zeroFilter_fx( move16(); } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp1, nb ) ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ //??sat - X_fx->b_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp2, nb ) ); /* Q(Q+nb-3) */ //??sat + X_fx->a_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp1, nb ) ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ + X_fx->b_fx[k] = round_fx_sat( (Word32) L_shl_sat( L_temp2, nb ) ); /* Q(Q+nb-3) */ #else X_fx->a_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp1, nb, &Overflow ), &Overflow ); /* Q(13+Q+nb-16)=Q(Q+nb-3) */ X_fx->b_fx[k] = round_fx_o( (Word32) L_shl_o( L_temp2, nb, &Overflow ), &Overflow ); /* Q(Q+nb-3) */ @@ -1401,13 +1401,13 @@ void DTFS_zeroFilter_fx( FOR( k = 0; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); //??sat + X_fx->a_fx[k] = shl_sat( X_fx->a_fx[k], sub( Qmin, Qab[k] ) ); #else X_fx->a_fx[k] = shl_o( X_fx->a_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif move16(); /* Q(Q+Qab[k]+Qmin-Qab[k]=Q(Q+Qmin) */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); //??sat + X_fx->b_fx[k] = shl_sat( X_fx->b_fx[k], sub( Qmin, Qab[k] ) ); #else X_fx->b_fx[k] = shl_o( X_fx->b_fx[k], sub( Qmin, Qab[k] ), &Overflow ); #endif @@ -1670,8 +1670,8 @@ Word32 DTFS_getEngy_fx( temp_b_fx = X_fx->b_fx[k]; move16(); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat - en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); #else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); @@ -1682,7 +1682,7 @@ Word32 DTFS_getEngy_fx( temp_a_fx = X_fx->a_fx[0]; move16(); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); #else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); #endif @@ -1694,8 +1694,8 @@ Word32 DTFS_getEngy_fx( temp_b_fx = X_fx->b_fx[k]; move16(); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); //??sat - en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); //??sat + en_fx = L_mac0_sat( en_fx, temp_a_fx, temp_a_fx ); + en_fx = L_mac0_sat( en_fx, temp_b_fx, temp_b_fx ); #else en_fx = L_mac0_o( en_fx, temp_a_fx, temp_a_fx, &Overflow ); en_fx = L_mac0_o( en_fx, temp_b_fx, temp_b_fx, &Overflow ); @@ -1735,16 +1735,16 @@ Word32 DTFS_getEngy_P2A_fx( HalfLag_fx = s_min( HalfLag_fx, X_fx->nH_fx ); FOR( k = 1; k <= HalfLag_fx; k++ ) { - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); } en_fx = L_shr( en_fx, 1 ); - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[0], X_fx->a_fx[0] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[0], X_fx->a_fx[0] ); /* IF (X_fx->lag_fx%2 == 0) */ IF( s_and( X_fx->lag_fx, 1 ) == 0 ) { - en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); //??sat + en_fx = L_mac0_sat( en_fx, X_fx->a_fx[k], X_fx->a_fx[k] ); + en_fx = L_mac0_sat( en_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); } #else #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -1905,7 +1905,7 @@ void DTFS_car2pol_fx( Lacc_fx = L_mult( X_fx->a_fx[k], X_fx->a_fx[k] ); /* a[k]^2, 2Q+1 */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc_fx = L_mac_sat( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); /* a[k]^2+b[k]^2, 2Q+1 */ //??sat + Lacc_fx = L_mac_sat( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k] ); /* a[k]^2+b[k]^2, 2Q+1 */ #else Lacc_fx = L_mac_o( Lacc_fx, X_fx->b_fx[k], X_fx->b_fx[k], &Overflow ); /* a[k]^2+b[k]^2, 2Q+1 */ #endif @@ -2034,7 +2034,7 @@ Word32 DTFS_setEngyHarm_fx( FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_mac0_sat( Lacc, X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*X1.Q */ //??sat + Lacc = L_mac0_sat( Lacc, X_fx->a_fx[k], X_fx->a_fx[k] ); /* 2*X1.Q */ #else Lacc = L_mac0_o( Lacc, X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); /* 2*X1.Q */ #endif @@ -2053,8 +2053,8 @@ Word32 DTFS_setEngyHarm_fx( FOR( k = f_low_fx + 1; k <= HalfLag_fx; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - L_tmp = L_mult_sat( X_fx->a_fx[k], X_fx->a_fx[k] ); //??sat - Lacc = L_add_sat( Lacc, L_shr( L_tmp, expp ) ); /* 2*X1.Q-expp */ //??sat + L_tmp = L_mult_sat( X_fx->a_fx[k], X_fx->a_fx[k] ); + Lacc = L_add_sat( Lacc, L_shr( L_tmp, expp ) ); /* 2*X1.Q-expp */ #else L_tmp = L_mult_o( X_fx->a_fx[k], X_fx->a_fx[k], &Overflow ); Lacc = L_add_o( Lacc, L_shr( L_tmp, expp ), &Overflow ); /* 2*X1.Q-expp */ @@ -2072,7 +2072,7 @@ Word32 DTFS_setEngyHarm_fx( exp = norm_s( count ); tmp = div_s( shl( 1, sub( 14, exp ) ), count ); /* 29 - exp */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - en1_fx = L_shl_sat( Mult_32_16( Lacc, tmp ), sub( exp, 14 ) ); //??sat + en1_fx = L_shl_sat( Mult_32_16( Lacc, tmp ), sub( exp, 14 ) ); #else en1_fx = L_shl_o( Mult_32_16( Lacc, tmp ), sub( exp, 14 ), &Overflow ); #endif @@ -2087,7 +2087,7 @@ Word32 DTFS_setEngyHarm_fx( expb = norm_l( en1_fx ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = round_fx_sat( L_shl( en1_fx, expb ) ); //??sat + fracb = round_fx_sat( L_shl( en1_fx, expb ) ); #else fracb = round_fx_o( L_shl_o( en1_fx, expb, &Overflow ), &Overflow ); #endif @@ -2129,7 +2129,7 @@ Word32 DTFS_setEngyHarm_fx( /*L_temp_fx =(Word32)Mpy_32_16(extract_h(factor_fx),extract_l(factor_fx), X_fx->a_fx[k]); move32(); */ /* Q(temp+X1.Q-15) */ L_temp_fx = Mult_32_16( factor_fx, X_fx->a_fx[k] ); /* Q(temp+X1.Q-15) */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[k] = round_fx_sat( L_temp_fx ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ //??sat + X_fx->a_fx[k] = round_fx_sat( L_temp_fx ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ #else X_fx->a_fx[k] = round_fx_o( L_temp_fx, &Overflow ); /* Q(temp+X1.Q-15-16)=Q(temp+X1.Q-31); */ #endif @@ -2270,7 +2270,7 @@ static void cubicPhase_fx( Ltemp3 = L_sub( Ltemp3, L_shl( Ltemp1, 1 ) ); /* Ltemp3=N*c1-2*Ltemp1, Q20 */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - IF( GE_32( L_abs( Ltemp3 ), L_shl_sat( Ltemp2, 8 ) ) ) //??sat + IF( GE_32( L_abs( Ltemp3 ), L_shl_sat( Ltemp2, 8 ) ) ) #else IF( GE_32( L_abs( Ltemp3 ), L_shl_o( Ltemp2, 8, &Overflow ) ) ) #endif @@ -2300,7 +2300,7 @@ static void cubicPhase_fx( expb = norm_l( Ltemp2 ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = extract_h( L_shl( Ltemp2, expb ) ); //??sat + fracb = extract_h( L_shl( Ltemp2, expb ) ); #else fracb = extract_h( L_shl_o( Ltemp2, expb, &Overflow ) ); #endif @@ -2321,7 +2321,7 @@ static void cubicPhase_fx( } scale = shr( sub( fracb, fraca ), 15 ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = shl_sat( fraca, scale ); //??sat + fraca = shl_sat( fraca, scale ); #else fraca = shl_o( fraca, scale, &Overflow ); #endif @@ -2341,8 +2341,8 @@ static void cubicPhase_fx( } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_shl_sat( tmp, add( exp, 34 ) ); //??sat - Lacc = L_add_sat( Lacc, 0x08000 ); //??sat + Lacc = L_shl_sat( tmp, add( exp, 34 ) ); + Lacc = L_add_sat( Lacc, 0x08000 ); #else Lacc = L_shl_o( tmp, add( exp, 34 ), &Overflow ); Lacc = L_add_o( Lacc, 0x08000, &Overflow ); @@ -2473,7 +2473,7 @@ static void cubicPhase_fx( } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp3 = L_shl_sat( Mult_32_16( L_shl_sat( Ltemp3, 7 ), c0 ), 2 ); /* Ltemp3=c0*n^3, Q27 */ //??sat //?sat + Ltemp3 = L_shl_sat( Mult_32_16( L_shl_sat( Ltemp3, 7 ), c0 ), 2 ); /* Ltemp3=c0*n^3, Q27 */ //?sat #else Ltemp3 = L_shl_o( Mult_32_16( L_shl_o( Ltemp3, 7, &Overflow ), c0 ), 2, &Overflow ); /* Ltemp3=c0*n^3, Q27 */ #endif @@ -2605,7 +2605,7 @@ void DTFS_to_erb_fx( FOR( i = 0; i < num_erb_fx; i++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - out_fx[i] = round_fx_sat( L_shl_sat( sum_a_fx[i], n ) ); /* Q13 */ //?�sat //??sat + out_fx[i] = round_fx_sat( L_shl_sat( sum_a_fx[i], n ) ); /* Q13 */ //?�sat #else out_fx[i] = round_fx_o( L_shl_o( sum_a_fx[i], n, &Overflow ), &Overflow ); /* Q13 */ #endif @@ -2768,12 +2768,12 @@ void erb_slot_fx( FOR( j = 0; j < num_erb_fx; j++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - mfreq_fx[j] = round_fx_sat( L_shl_sat( mf_fx[j], 11 ) ); /* Q15 */ //??sat //??sat + mfreq_fx[j] = round_fx_sat( L_shl_sat( mf_fx[j], 11 ) ); /* Q15 */ move16(); IF( GT_16( out_fx[j], 1 ) ) { expb = norm_l( mf_fx[j] ); - fracb = round_fx_sat( L_shl_sat( mf_fx[j], expb ) ); //??sat //??sat + fracb = round_fx_sat( L_shl_sat( mf_fx[j], expb ) ); expb = sub( 30, add( expb, 20 ) ); @@ -2787,9 +2787,9 @@ void erb_slot_fx( tmp = div_s( fracb, fraca ); exp = sub( expb, expa ); - L_tmp = L_shl_sat( tmp, add( exp, 16 ) ); //??sat + L_tmp = L_shl_sat( tmp, add( exp, 16 ) ); - mfreq_fx[j] = round_fx_sat( L_tmp ); //??sat + mfreq_fx[j] = round_fx_sat( L_tmp ); move16(); } #else @@ -2958,7 +2958,7 @@ void DTFS_erb_inv_fx( move16(); } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - X_fx->a_fx[i] = round_fx_sat( L_shl_sat( Ltemp_fx, d2h ) ); /* Q(28-n+d2h) */ //??sat //??sat + X_fx->a_fx[i] = round_fx_sat( L_shl_sat( Ltemp_fx, d2h ) ); /* Q(28-n+d2h) */ #else X_fx->a_fx[i] = round_fx_o( L_shl_o( Ltemp_fx, d2h, &Overflow ), &Overflow ); /* Q(28-n+d2h) */ #endif @@ -3757,7 +3757,7 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W expb = norm_l( L_sum ); - fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat + fracb = round_fx_sat( L_shl( L_sum, expb ) ); #else fraca = extract_h( L_shl_o( maxPosEn_fx, expa, &Overflow ) ); expa = sub( 30, add( expa, 1 ) ); @@ -3772,7 +3772,7 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W scale = shr( sub( fraca, fracb ), 15 ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = shl_sat( fracb, scale ); //??sat + fracb = shl_sat( fracb, scale ); #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -3800,12 +3800,12 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W expa = norm_l( maxNegEn_fx ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fraca = extract_h( L_shl( maxNegEn_fx, expa ) ); //??sat - expa = sub( Q29, expa ); // 30 - expa - 1; + fraca = extract_h( L_shl( maxNegEn_fx, expa ) ); + expa = sub( Q29, expa ); // 30 - expa - 1; expb = norm_l( L_sum ); - fracb = round_fx_sat( L_shl( L_sum, expb ) ); //??sat + fracb = round_fx_sat( L_shl( L_sum, expb ) ); #else fraca = extract_h( L_shl_o( maxNegEn_fx, expa, &Overflow ) ); expa = sub( Q29, expa ); // 30 - expa - 1; @@ -3819,7 +3819,7 @@ void DTFS_peaktoaverage_fx( DTFS_STRUCTURE X_fx, Word32 *pos_fx, Word16 *Qpos, W scale = shr( sub( fraca, fracb ), 15 ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fracb = shl_sat( fracb, scale ); //??sat + fracb = shl_sat( fracb, scale ); #else fracb = shl_o( fracb, scale, &Overflow ); #endif @@ -4318,8 +4318,8 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE FOR( k = 1; k <= HalfLag; k++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc_fx = L_mult_sat( X1_fx->a_fx[k], X1_fx->a_fx[k] ); //??sat - Lacc_fx = L_mac_sat( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k] ); /* 2*Q+1 */ //??sat + Lacc_fx = L_mult_sat( X1_fx->a_fx[k], X1_fx->a_fx[k] ); + Lacc_fx = L_mac_sat( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k] ); /* 2*Q+1 */ #else Lacc_fx = L_mult_o( X1_fx->a_fx[k], X1_fx->a_fx[k], &Overflow ); Lacc_fx = L_mac_o( Lacc_fx, X1_fx->b_fx[k], X1_fx->b_fx[k], &Overflow ); /* 2*Q+1 */ @@ -4366,15 +4366,15 @@ void copy_phase_fx( DTFS_STRUCTURE *X1_fx, DTFS_STRUCTURE X2_fx, DTFS_STRUCTURE d1l = extract_l( Ltemp_fx ); Ltemp_fx = L_mult0( X1_fx->b_fx[k], d1l ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ //??sat - sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->b_fx[k] = mult_r_sat( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->b_fx[k], d1h ) ); /* sin(w) in Q(q+16+Q-15) */ + sn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ + retX_fx->b_fx[k] = mult_r_sat( X2_fx.a_fx[k], sn ); /* X2_fx.Q */ move16(); Ltemp_fx = L_mult0( X1_fx->a_fx[k], d1l ); - Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ //??sat - cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ //??sat //??sat - retX_fx->a_fx[k] = mult_r_sat( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ + Ltemp_fx = L_add_sat( L_shr( Ltemp_fx, 15 ), L_mult_sat( X1_fx->a_fx[k], d1h ) ); /* cos(w) in Q(q+Q+1) */ + cn = round_fx_sat( L_shl_sat( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ) ) ); /* Q15 */ + retX_fx->a_fx[k] = mult_r_sat( X2_fx.a_fx[k], cn ); /* X2_fx.Q */ #else Ltemp_fx = L_add_o( L_shr( Ltemp_fx, 15 ), L_mult_o( X1_fx->b_fx[k], d1h, &Overflow ), &Overflow ); /* sin(w) in Q(q+16+Q-15) */ sn = round_fx_o( L_shl_o( Ltemp_fx, sub( 30, add( q, X1_fx->Q ) ), &Overflow ), &Overflow ); /* Q15 */ @@ -4480,7 +4480,7 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, { /* Compute Re */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_mac_sat( Lacc, curr_lpc[i], cos_tab[n % M_fx] ); /* Q28 */ //??sat + Lacc = L_mac_sat( Lacc, curr_lpc[i], cos_tab[n % M_fx] ); /* Q28 */ #else Lacc = L_mac_o( Lacc, curr_lpc[i], cos_tab[n % M_fx], &Overflow ); /* Q28 */ #endif @@ -4495,7 +4495,7 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, { /* Compute Im */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_msu_sat( Lacc, curr_lpc[i], sin_tab[n % M_fx] ); /* Q28 */ //??sat + Lacc = L_msu_sat( Lacc, curr_lpc[i], sin_tab[n % M_fx] ); /* Q28 */ #else Lacc = L_msu_o( Lacc, curr_lpc[i], sin_tab[n % M_fx], &Overflow ); /* Q28 */ #endif @@ -4504,7 +4504,7 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, Im = L_shr( Lacc, 1 ); /* Q27 */ /* Lacc=L_add(L_mult_ll(Re,Re),(Word32)L_mult_ll(Im,Im)); : Lacc=Re^2+Im^2 in Q23 */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Lacc = L_add_sat( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ) ); /* Lacc=Re^2+Im^2 in Q23 */ //??sat + Lacc = L_add_sat( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ) ); /* Lacc=Re^2+Im^2 in Q23 */ #else Lacc = L_add_o( Mult_32_32( Re, Re ), Mult_32_32( Im, Im ), &Overflow ); /* Lacc=Re^2+Im^2 in Q23 */ #endif @@ -4535,7 +4535,7 @@ Word32 getSpEngyFromResAmp_fx( DTFS_STRUCTURE *X_fx, Word16 lband, Word16 hband, tmp = div_s( fracb, fraca ); /* 15-exp */ exp = sub( expb, expa ); #ifdef ISSUE_1836_replace_overflow_libcom__remnant - Ltemp = L_shl_sat( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ) ); //??sat + Ltemp = L_shl_sat( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ) ); #else Ltemp = L_shl_o( tmp, sub( add( shl( X_fx->Q, 1 ), exp ), 27 ), &Overflow ); #endif @@ -4606,8 +4606,8 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ FOR( n = 0; n < N; n++ ) { #ifdef ISSUE_1836_replace_overflow_libcom__remnant - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ //??sat + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )] ); /* Q(12+15+1) */ #else sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[shl( temp2, 2 ) % shl( X_fx->lag_fx, 2 )], &Overflow ); /* Q(12+15+1) */ @@ -4616,15 +4616,15 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ } #ifdef ISSUE_1836_replace_overflow_libcom__remnant - temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ //??sat - temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ //??sat + temp1 = round_fx_sat( sum1_fx ); /* Q(12+15+1-16)=Q(12) */ + temp2 = round_fx_sat( sum2_fx ); /* Q(12) */ /* Calculate the circular convolution */ - sum = L_mac_sat( L_mult_sat( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ //??sat + sum = L_mac_sat( L_mult_sat( temp1, temp1 ), temp2, temp2 ); /* Q(12+12+1)=Q(25) */ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); - L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat + L_temp1 = L_mac_sat( L_temp1, temp2, X_fx->b_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ //??sat + L_temp2 = L_msu_sat( L_temp2, temp2, X_fx->a_fx[k] ); /* Q(12+Q+1)=Q(13+Q) */ #else temp1 = round_fx_o( sum1_fx, &Overflow ); /* Q(12+15+1-16)=Q(12) */ temp2 = round_fx_o( sum2_fx, &Overflow ); /* Q(12) */ @@ -4634,7 +4634,7 @@ void DTFS_poleFilter_fx( DTFS_STRUCTURE *X_fx, Word16 *LPC, Word16 N, Word16 *S_ L_temp1 = L_mult( temp1, X_fx->a_fx[k] ); L_temp1 = L_mac_o( L_temp1, temp2, X_fx->b_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ L_temp2 = L_mult( temp1, X_fx->b_fx[k] ); - L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ + L_temp2 = L_msu_o( L_temp2, temp2, X_fx->a_fx[k], &Overflow ); /* Q(12+Q+1)=Q(13+Q) */ #endif IF( sum ) { @@ -4755,8 +4755,8 @@ void poleFilter_setup_fx( const Word16 *LPC, Word16 N, DTFS_STRUCTURE X_fx, Word sum1_fx = L_mac_o( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ sum2_fx = L_mac_o( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )], &Overflow ); /* Q(12+15+1) */ #else - sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat - sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ //??sat + sum1_fx = L_mac_sat( sum1_fx, LPC[n], C_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ + sum2_fx = L_mac_sat( sum2_fx, LPC[n], S_fx[( 4 * temp2 ) % ( 4 * X_fx.lag_fx )] ); /* Q(12+15+1) */ #endif temp2 = add( temp2, k ); } diff --git a/lib_com/window_fx.c b/lib_com/window_fx.c index a182719fb..164d0e1e6 100644 --- a/lib_com/window_fx.c +++ b/lib_com/window_fx.c @@ -48,7 +48,7 @@ void ham_cos_window( /* fh_f[i] = 0.54f - 0.46f * (Float32)cos(cc); */ BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fh[i] = sub_sat( P54_0Q15, mult_r( getCosWord16( round_fx_sat( L_shl_sat( cc, 9 ) ) ), P92_0Q15 ) ); /*0Q15*/ //??sat //??sat //??sat + fh[i] = sub_sat( P54_0Q15, mult_r( getCosWord16( round_fx_sat( L_shl_sat( cc, 9 ) ) ), P92_0Q15 ) ); /*0Q15*/ #else fh[i] = sub_o( P54_0Q15, mult_r( getCosWord16( round_fx_o( L_shl_o( cc, 9, &Overflow ), &Overflow ) ), P92_0Q15 ), &Overflow ); /*0Q15*/ #endif @@ -69,7 +69,7 @@ void ham_cos_window( { /* fh_f[i] = (Float32)cos(cc); */ #ifdef ISSUE_1836_replace_overflow_libcom__remnant - fh[i] = shl_sat( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1 ); /*0Q15*/ //??sat + fh[i] = shl_sat( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1 ); /*0Q15*/ #else fh[i] = shl_o( getCosWord16( round_fx( L_shl( cc, 10 ) ) ), 1, &Overflow ); /*0Q15*/ #endif diff --git a/lib_dec/FEC_HQ_core_fx.c b/lib_dec/FEC_HQ_core_fx.c index 06028d601..325a7bb30 100644 --- a/lib_dec/FEC_HQ_core_fx.c +++ b/lib_dec/FEC_HQ_core_fx.c @@ -81,7 +81,7 @@ static void Regression_Anal_fx( b_p_fx[0] = L_add( b_p_fx[0], L_shr( values_fx[i], 2 ) ); /*10 */ move32(); #ifdef ISSUE_1866_replace_overflow_libdec - b_p_fx[1] = L_add( b_p_fx[1], Mult_32_16( values_fx[i], shl_sat( sub( num_pgf, i ), 13 ) ) ); /*10 */ //??sat + b_p_fx[1] = L_add( b_p_fx[1], Mult_32_16( values_fx[i], shl_sat( sub( num_pgf, i ), 13 ) ) ); /*10 */ #else b_p_fx[1] = L_add( b_p_fx[1], Mult_32_16( values_fx[i], shl_o( sub( num_pgf, i ), 13, &Overflow ) ) ); /*10 */ #endif @@ -391,7 +391,7 @@ void HQ_FEC_processing_fx( FOR( j = 0; j < Num_bands_p[i]; j++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - hHQ_nbfec->Norm_gain_fx[k] = shl_sat( tmp_fx, 1 ); //??sat + hHQ_nbfec->Norm_gain_fx[k] = shl_sat( tmp_fx, 1 ); #else hHQ_nbfec->Norm_gain_fx[k] = shl_o( tmp_fx, 1, &Overflow ); #endif @@ -533,7 +533,7 @@ void ivas_HQ_FEC_Mem_update_fx( k = add( k, 1 ); } #ifdef ISSUE_1866_replace_overflow_libdec - tmp_fx = shl_sat( inv_tbl_fx[Num_bands_p[i]], 1 ); /*16*/ //??sat + tmp_fx = shl_sat( inv_tbl_fx[Num_bands_p[i]], 1 ); /*16*/ #else tmp_fx = shl_o( inv_tbl_fx[Num_bands_p[i]], 1, &Overflow ); /*16*/ #endif @@ -657,7 +657,7 @@ void ivas_HQ_FEC_Mem_update_fx( tmp_fx = div_s( extract_h( L_shl( en_high_fx[i], exp1 ) ), extract_h( L_shl( hHQ_nbfec->ynrm_values_fx[i][0], exp2 ) ) ); exp = add( 15, sub( exp1, exp2 ) ); #ifdef ISSUE_1866_replace_overflow_libdec - *mean_en_high_fx = add_sat( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ) ); //??sat + *mean_en_high_fx = add_sat( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ) ); #else *mean_en_high_fx = add_o( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ), &Overflow ); #endif @@ -828,7 +828,7 @@ void HQ_FEC_Mem_update_fx( k = add( k, 1 ); } #ifdef ISSUE_1866_replace_overflow_libdec - tmp_fx = shl_sat( inv_tbl_fx[Num_bands_p[i]], 1 ); /*16*/ //??sat + tmp_fx = shl_sat( inv_tbl_fx[Num_bands_p[i]], 1 ); /*16*/ #else tmp_fx = shl_o( inv_tbl_fx[Num_bands_p[i]], 1, &Overflow ); /*16*/ #endif @@ -953,7 +953,7 @@ void HQ_FEC_Mem_update_fx( tmp_fx = div_s( extract_h( L_shl( en_high_fx[i], exp1 ) ), extract_h( L_shl( hHQ_nbfec->ynrm_values_fx[i][0], exp2 ) ) ); exp = add( 15, sub( exp1, exp2 ) ); #ifdef ISSUE_1866_replace_overflow_libdec - *mean_en_high_fx = add_sat( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ) ); //??sat + *mean_en_high_fx = add_sat( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ) ); #else *mean_en_high_fx = add_o( *mean_en_high_fx, shr_sat( tmp_fx, sub( exp, 5 ) ), &Overflow ); #endif @@ -1099,7 +1099,7 @@ static Word16 find_best_delay_fx( L_tmp2 = L_shl( min_corr_fx, exp2 ); tmp = div_s( extract_h( L_tmp1 ), extract_h( L_tmp2 ) ); /*15 + exp1 - exp2 */ #ifdef ISSUE_1866_replace_overflow_libdec - tmp = shl_sat( tmp, sub( exp2, add( exp1, 1 ) ) ); /*14 */ //??sat + tmp = shl_sat( tmp, sub( exp2, add( exp1, 1 ) ) ); /*14 */ #else tmp = shl_o( tmp, sub( exp2, add( exp1, 1 ) ), &Overflow ); /*14 */ #endif diff --git a/lib_dec/FEC_HQ_phase_ecu_fx.c b/lib_dec/FEC_HQ_phase_ecu_fx.c index b145a3aae..e6062420e 100644 --- a/lib_dec/FEC_HQ_phase_ecu_fx.c +++ b/lib_dec/FEC_HQ_phase_ecu_fx.c @@ -2928,7 +2928,7 @@ static Word32 mult_32_32_q( const Word32 a, const Word32 b, const Word16 q ) #else Mpy_32_32_ss( a, b, &hi, &lo ); - return L_or( L_shl_sat( hi, sub( 32 - 1, q ) ), L_lshr( (Word32) lo, add( q, 1 ) ) ); //??sat + return L_or( L_shl_sat( hi, sub( 32 - 1, q ) ), L_lshr( (Word32) lo, add( q, 1 ) ) ); #endif } diff --git a/lib_dec/FEC_fx.c b/lib_dec/FEC_fx.c index 4343c3edc..dec54026a 100644 --- a/lib_dec/FEC_fx.c +++ b/lib_dec/FEC_fx.c @@ -194,9 +194,9 @@ void FEC_exc_estim_fx( test(); test(); #ifdef ISSUE_1866_replace_overflow_libdec - IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), shl_sat( mult( 29491, st_fx->bfi_pitch_fx ), 1 ) ) && //??sat - GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ - GE_16( st_fx->upd_cnt, MAX_UPD_CNT ) ) /* or last update too far in the past */ + IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), shl_sat( mult( 29491, st_fx->bfi_pitch_fx ), 1 ) ) && + GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ + GE_16( st_fx->upd_cnt, MAX_UPD_CNT ) ) /* or last update too far in the past */ #else IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), shl_o( mult( 29491, st_fx->bfi_pitch_fx ), 1, &Overflow ) ) && GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ @@ -213,9 +213,9 @@ void FEC_exc_estim_fx( test(); test(); #ifdef ISSUE_1866_replace_overflow_libdec - IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), shl_sat( mult( 29491, st_fx->bfi_pitch_fx ), 1 ) ) && //??sat - GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ - GE_16( st_fx->upd_cnt, MAX_UPD_CNT ) ) /* or last update too far in the past */ + IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), shl_sat( mult( 29491, st_fx->bfi_pitch_fx ), 1 ) ) && + GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ + GE_16( st_fx->upd_cnt, MAX_UPD_CNT ) ) /* or last update too far in the past */ #else IF( ( LT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), shl_o( mult( 29491, st_fx->bfi_pitch_fx ), 1, &Overflow ) ) && GT_16( round_fx( L_shl( st_fx->old_pitch_buf_fx[2 * NB_SUBFR16k - 1], 6 ) ), mult( 19661, st_fx->bfi_pitch_fx ) ) ) || /* last pitch coherent with the past */ @@ -316,7 +316,7 @@ void FEC_exc_estim_fx( { /* if stable, do not decrease the energy, pitch_gain = 0 */ #ifdef ISSUE_1866_replace_overflow_libdec - alpha = mac_r_sat( ( 1L << 16 ) * 2 * _ALPHA_U_FX, st_fx->stab_fac_fx, 32768 - 2 * _ALPHA_U_FX ); /*st_fx->stab_fac_fx in Q15*/ //??sat + alpha = mac_r_sat( ( 1L << 16 ) * 2 * _ALPHA_U_FX, st_fx->stab_fac_fx, 32768 - 2 * _ALPHA_U_FX ); /*st_fx->stab_fac_fx in Q15*/ #else alpha = mac_ro( ( 1L << 16 ) * 2 * _ALPHA_U_FX, st_fx->stab_fac_fx, 32768 - 2 * _ALPHA_U_FX, &Overflow ); /*st_fx->stab_fac_fx in Q15*/ #endif @@ -369,7 +369,7 @@ void FEC_exc_estim_fx( L_tmp = Isqrt_lc( L_tmp, &exp ); #ifdef ISSUE_1866_replace_overflow_libdec - gain = extract_h( L_shl_sat( L_tmp, exp ) ); //??sat + gain = extract_h( L_shl_sat( L_tmp, exp ) ); #else gain = extract_h( L_shl_o( L_tmp, exp, &Overflow ) ); #endif @@ -793,7 +793,7 @@ static void pulseRes_preCalc( Word16 *cond1, Word16 *cond2, Word32 *cond3, Word1 BASOP_SATURATE_WARNING_OFF_EVS /*To calc Q15 threshold, overflow may happen - do negation and compare with negated value to check also highest possible value*/ #ifdef ISSUE_1866_replace_overflow_libdec - tmp_pit = shl_sat( negate( tmp_pit ), tmp_pit_e ); //??sat + tmp_pit = shl_sat( negate( tmp_pit ), tmp_pit_e ); #else tmp_pit = shl_o( negate( tmp_pit ), tmp_pit_e, &Overflow ); #endif diff --git a/lib_dec/LD_music_post_filter_fx.c b/lib_dec/LD_music_post_filter_fx.c index eb1f5eca9..11d28e2dc 100644 --- a/lib_dec/LD_music_post_filter_fx.c +++ b/lib_dec/LD_music_post_filter_fx.c @@ -189,7 +189,7 @@ void LD_music_post_filter_fx( { /*m_ave += lf_E[k];*/ #ifdef ISSUE_1866_replace_overflow_libdec - Ltmp = L_add_sat( lf_E[k], Ltmp ); /*2*Qdct+10*/ //??sat + Ltmp = L_add_sat( lf_E[k], Ltmp ); /*2*Qdct+10*/ #else Ltmp = L_add_o( lf_E[k], Ltmp, &Overflow ); /*2*Qdct+10*/ #endif @@ -532,7 +532,7 @@ static void spectrum_mod_dct_fx( IF( music_flag != 0 ) /* prevent subtraction on clean speech */ { #ifdef ISSUE_1866_replace_overflow_libdec - IF( LE_32( maxNoise, L_shl_sat( 10, scaling ) ) ) //??sat + IF( LE_32( maxNoise, L_shl_sat( 10, scaling ) ) ) #else IF( LE_32( maxNoise, L_shl_o( 10, scaling, &Overflow ) ) ) #endif @@ -612,8 +612,8 @@ static void spectrum_mod_dct_fx( Ltmp = L_mult( tmpN, m_binE ); /*2*Qdct+e_binE+9*/ e_binE = sub( add( e_tmp, e_binE ), 15 ); #ifdef ISSUE_1866_replace_overflow_libdec - Ltmp = L_shr_sat( Ltmp, e_binE ); /*2*Qdct+9*/ //??sat - Lgain = L_add_sat( Ltmp, Lshift ); /*Saturation can occure here result in Q30*/ //??sat + Ltmp = L_shr_sat( Ltmp, e_binE ); /*2*Qdct+9*/ + Lgain = L_add_sat( Ltmp, Lshift ); /*Saturation can occure here result in Q30*/ #else Ltmp = L_shr_o( Ltmp, e_binE, &Overflow ); /*2*Qdct+9*/ Lgain = L_add_o( Ltmp, Lshift, &Overflow ); /*Saturation can occure here result in Q30*/ @@ -622,7 +622,7 @@ static void spectrum_mod_dct_fx( Lpt2++; #ifdef ISSUE_1866_replace_overflow_libdec - gain = round_fx_sat( Lgain ); /*gain in Q30-16 = Q14*/ //??sat + gain = round_fx_sat( Lgain ); /*gain in Q30-16 = Q14*/ #else gain = round_fx_o( Lgain, &Overflow ); /*gain in Q30-16 = Q14*/ #endif @@ -947,7 +947,7 @@ static Word16 norm_lfe( /* Need to shl by 3 to take into account the 3 multiplications */ } #ifdef ISSUE_1866_replace_overflow_libdec - tmp16 = shl_sat( tmp16, exp3 ); /* Result in Q12 */ //??sat + tmp16 = shl_sat( tmp16, exp3 ); /* Result in Q12 */ #else tmp16 = shl_o( tmp16, exp3, &Overflow ); /* Result in Q12 */ #endif diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index c422d63e9..f075c26f5 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -973,7 +973,7 @@ static void decod_gen_voic_core_switch_fx( { /*gain_code = min(gain_code, 0.5f*gain_code+0.5f*st->lp_gainc);*/ #ifdef ISSUE_1866_replace_overflow_libdec - gain_code16 = s_min( gain_code16, mac_r( L_mult( 16384, gain_code16 ), shl_sat( 16384 >> 3, st_fx->Q_exc ), st_fx->lp_gainc_fx ) ); /* st_fx->lp_gainc_fx in Q3 >>3 to bring it to Q0 as gain_code16 */ //??sat + gain_code16 = s_min( gain_code16, mac_r( L_mult( 16384, gain_code16 ), shl_sat( 16384 >> 3, st_fx->Q_exc ), st_fx->lp_gainc_fx ) ); /* st_fx->lp_gainc_fx in Q3 >>3 to bring it to Q0 as gain_code16 */ #else gain_code16 = s_min( gain_code16, mac_r( L_mult( 16384, gain_code16 ), shl_o( 16384 >> 3, st_fx->Q_exc, &Overflow ), st_fx->lp_gainc_fx ) ); /* st_fx->lp_gainc_fx in Q3 >>3 to bring it to Q0 as gain_code16 */ #endif diff --git a/lib_dec/core_switching_dec_fx.c b/lib_dec/core_switching_dec_fx.c index 7fd3001c0..cc5bb03ed 100644 --- a/lib_dec/core_switching_dec_fx.c +++ b/lib_dec/core_switching_dec_fx.c @@ -201,7 +201,7 @@ void bw_switching_pre_proc_fx( *----------------------------------------------------------------------*/ #ifdef ISSUE_1866_replace_overflow_libdec - st_fx->tilt_wb_fx = round_fx_sat( L_shl_sat( calc_tilt_bwe_fx( old_syn_12k8_16k_fx, -1, st_fx->L_frame ), 3 ) ); /* Q11 */ //??sat //??sat + st_fx->tilt_wb_fx = round_fx_sat( L_shl_sat( calc_tilt_bwe_fx( old_syn_12k8_16k_fx, -1, st_fx->L_frame ), 3 ) ); /* Q11 */ #else st_fx->tilt_wb_fx = round_fx_o( L_shl_o( calc_tilt_bwe_fx( old_syn_12k8_16k_fx, -1, st_fx->L_frame ), 3, &Overflow ), &Overflow ); /* Q11 */ #endif @@ -216,7 +216,7 @@ void bw_switching_pre_proc_fx( FOR( i = 0; i < L_FRAME / 2; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, syn_dct_fx[i], syn_dct_fx[i] ); /* (2 * Q_syn2) */ //??sat + L_tmp = L_mac0_sat( L_tmp, syn_dct_fx[i], syn_dct_fx[i] ); /* (2 * Q_syn2) */ #else L_tmp = L_mac0_o( L_tmp, syn_dct_fx[i], syn_dct_fx[i], &Overflow ); /* (2 * Q_syn2) */ #endif @@ -228,7 +228,7 @@ void bw_switching_pre_proc_fx( FOR( ; i < L_FRAME; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, syn_dct_fx[i], syn_dct_fx[i] ); //??sat + L_tmp = L_mac0_sat( L_tmp, syn_dct_fx[i], syn_dct_fx[i] ); #else L_tmp = L_mac0_o( L_tmp, syn_dct_fx[i], syn_dct_fx[i], &Overflow ); #endif @@ -245,7 +245,7 @@ void bw_switching_pre_proc_fx( FOR( i = 0; i < 32; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ //??sat + L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ #else L_tmp = L_mac0_o( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i], &Overflow ); /* 2 * Q_syn2 */ #endif @@ -257,7 +257,7 @@ void bw_switching_pre_proc_fx( FOR( ; i < 64; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ //??sat + L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ #else L_tmp = L_mac0_o( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i], &Overflow ); /* 2 * Q_syn2 */ #endif @@ -272,7 +272,7 @@ void bw_switching_pre_proc_fx( FOR( i = 0; i < L_FRAME / 2; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ //??sat + L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ #else L_tmp = L_mac0_o( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i], &Overflow ); /* 2 * Q_syn2 */ #endif @@ -284,7 +284,7 @@ void bw_switching_pre_proc_fx( FOR( ; i < L_FRAME; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ //??sat + L_tmp = L_mac0_sat( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i] ); /* 2 * Q_syn2 */ #else L_tmp = L_mac0_o( L_tmp, st_fx->t_audio_q_fx[i], st_fx->t_audio_q_fx[i], &Overflow ); /* 2 * Q_syn2 */ #endif @@ -3097,7 +3097,7 @@ void ivas_bw_switching_pre_proc_fx( FOR( i = 0; i < 32; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); //??sat + L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); #else L_tmp = L_mac0_o( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i], &Overflow ); #endif @@ -3114,7 +3114,7 @@ void ivas_bw_switching_pre_proc_fx( FOR( ; i < 64; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); //??sat + L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); #else L_tmp = L_mac0_o( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i], &Overflow ); #endif @@ -3134,7 +3134,7 @@ void ivas_bw_switching_pre_proc_fx( FOR( i = 0; i < L_FRAME / 2; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); //??sat + L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); #else L_tmp = L_mac0_o( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i], &Overflow ); #endif @@ -3151,7 +3151,7 @@ void ivas_bw_switching_pre_proc_fx( FOR( ; i < L_FRAME; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); //??sat + L_tmp = L_mac0_sat( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i] ); #else L_tmp = L_mac0_o( L_tmp, st->t_audio_q_fx[i], st->t_audio_q_fx[i], &Overflow ); #endif diff --git a/lib_dec/dec_higher_acelp_fx.c b/lib_dec/dec_higher_acelp_fx.c index f8d2c5ec0..f85386e17 100644 --- a/lib_dec/dec_higher_acelp_fx.c +++ b/lib_dec/dec_higher_acelp_fx.c @@ -145,7 +145,7 @@ void transf_cdbk_dec_fx( FOR( i = 0; i < L_SUBFR; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - code_preQ[i] = shl_sat( code_preQ[i], q_Code_preQ ); //??sat + code_preQ[i] = shl_sat( code_preQ[i], q_Code_preQ ); #else code_preQ[i] = shl_o( code_preQ[i], q_Code_preQ, &Overflow ); #endif diff --git a/lib_dec/dec_pit_exc_fx.c b/lib_dec/dec_pit_exc_fx.c index 1f6e837d1..76bdb33d5 100644 --- a/lib_dec/dec_pit_exc_fx.c +++ b/lib_dec/dec_pit_exc_fx.c @@ -253,7 +253,7 @@ void dec_pit_exc_fx( #ifndef ISSUE_1866_replace_overflow_libdec gain_code_fx = L_mult0( s_max( sub( 32767, shl_o( gain_pit_fx, 1, &Overflow ) ), 16384 /*0.5.Q15*/ ), st_fx->lp_gainc_fx ); /* Use gain pitch and past gain code as an indicator to help finding the best scaling value. gain_code_fx used a temp var*/ #else - gain_code_fx = L_mult0( s_max( sub( 32767, shl_sat( gain_pit_fx, 1 ) ), 16384 /*0.5.Q15*/ ), st_fx->lp_gainc_fx ); /* Use gain pitch and past gain code as an indicator to help finding the best scaling value. gain_code_fx used a temp var*/ //??sat + gain_code_fx = L_mult0( s_max( sub( 32767, shl_sat( gain_pit_fx, 1 ) ), 16384 /*0.5.Q15*/ ), st_fx->lp_gainc_fx ); /* Use gain pitch and past gain code as an indicator to help finding the best scaling value. gain_code_fx used a temp var*/ #endif } diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c index d707ac495..af2b6ea7b 100644 --- a/lib_dec/dec_post_fx.c +++ b/lib_dec/dec_post_fx.c @@ -505,7 +505,7 @@ static void modify_pst_param_fx( IF( NE_16( coder_type, INACTIVE ) && LT_16( lp_noise, LP_NOISE_THR_FX ) ) { #ifdef ISSUE_1866_replace_overflow_libdec - lp_noiseQ12 = shl_sat( lp_noise, 4 ); /* to go from Q8 to Q12 */ //??sat + lp_noiseQ12 = shl_sat( lp_noise, 4 ); /* to go from Q8 to Q12 */ #else lp_noiseQ12 = shl_o( lp_noise, 4, &Overflow ); /* to go from Q8 to Q12 */ #endif @@ -684,7 +684,7 @@ static void pst_ltp_fx( /* gain_plt += (1.0f-gain_plt) * gain_factor */ /* gain_plt = gain_plt + gain_factor - gain_plt*gain_factor */ #ifdef ISSUE_1866_replace_overflow_libdec - gain_plt = msu_r_sat( L_msu( L_deposit_h( gain_plt ), gain_plt, gain_factor ), -32768, gain_factor ); // Q15 //??sat + gain_plt = msu_r_sat( L_msu( L_deposit_h( gain_plt ), gain_plt, gain_factor ), -32768, gain_factor ); // Q15 #else gain_plt = msu_ro( L_msu( L_deposit_h( gain_plt ), gain_plt, gain_factor ), -32768, gain_factor, &Overflow ); // Q15 #endif @@ -1463,7 +1463,7 @@ void Filt_mu_fx( temp = sub( 1, abs_s( mu ) ); BASOP_SATURATE_WARNING_OFF_EVS; #ifdef ISSUE_1866_replace_overflow_libdec - mu2 = add_sat( 32767, temp ); /* Q15 (1 - |mu|) */ //??sat + mu2 = add_sat( 32767, temp ); /* Q15 (1 - |mu|) */ #else mu2 = add_o( 32767, temp, &Overflow ); /* Q15 (1 - |mu|) */ #endif @@ -1563,7 +1563,7 @@ void Filt_mu_ivas_fx( temp = sub( 1, abs_s( mu ) ); BASOP_SATURATE_WARNING_OFF_EVS; #ifdef ISSUE_1866_replace_overflow_libdec - mu2 = add_sat( 32767, temp ); /* Q15 (1 - |mu|) */ //??sat + mu2 = add_sat( 32767, temp ); /* Q15 (1 - |mu|) */ #else mu2 = add_o( 32767, temp, &Overflow ); /* Q15 (1 - |mu|) */ #endif @@ -1720,9 +1720,9 @@ void blend_subfr2_fx( FOR( i = 0; i < L_SUBFR / 2; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - sigOut[i] = mac_r_sat( L_mult_sat( fac1, sigIn1[i] ), fac2, sigIn2[i] ); // Qx //??sat - fac1 = sub_sat( fac1, step ); //??sat - fac2 = add_sat( fac2, step ); //??sat + sigOut[i] = mac_r_sat( L_mult_sat( fac1, sigIn1[i] ), fac2, sigIn2[i] ); // Qx + fac1 = sub_sat( fac1, step ); + fac2 = add_sat( fac2, step ); #else sigOut[i] = mac_ro( L_mult_o( fac1, sigIn1[i], &Overflow ), fac2, sigIn2[i], &Overflow ); // Qx fac1 = sub_o( fac1, step, &Overflow ); diff --git a/lib_dec/dec_tcx_fx.c b/lib_dec/dec_tcx_fx.c index e56a3d54c..e728382cc 100644 --- a/lib_dec/dec_tcx_fx.c +++ b/lib_dec/dec_tcx_fx.c @@ -548,7 +548,7 @@ void decoder_tcx_fx( move16(); tmp32 = Sqrt32( tmp32, &st->last_gain_syn_deemph_e ); #ifdef ISSUE_1866_replace_overflow_libdec - st->last_gain_syn_deemph = round_fx_sat( tmp32 ); //??sat + st->last_gain_syn_deemph = round_fx_sat( tmp32 ); #else st->last_gain_syn_deemph = round_fx_o( tmp32, &Overflow ); #endif @@ -1358,7 +1358,7 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, tmp32 = Mpy_32_16_1( tmp32, getInvFrameLen( hTcxDec->L_frameTCX ) ); tmp2 = norm_l( tmp32 ); #ifdef ISSUE_1866_replace_overflow_libdec - tmp1 = round_fx_sat( L_shl( tmp32, tmp2 ) ); //??sat + tmp1 = round_fx_sat( L_shl( tmp32, tmp2 ) ); #else tmp1 = round_fx_o( L_shl( tmp32, tmp2 ), &Overflow ); #endif @@ -1455,7 +1455,7 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, tmp2 = BASOP_Util_Add_MantExp( hTcxDec->conceal_eof_gain, 15 - 14, negate( tmp1 ), tmp2, &tmp1 ); #ifdef ISSUE_1866_replace_overflow_libdec - step = L_shl_sat( L_mult( tmp1, getInvFrameLen( st_fx->L_frame ) ), sub( tmp2, 6 /*scaling from table lookup*/ + 1 /*go to Q30*/ ) ); /*Q30*/ //??sat + step = L_shl_sat( L_mult( tmp1, getInvFrameLen( st_fx->L_frame ) ), sub( tmp2, 6 /*scaling from table lookup*/ + 1 /*go to Q30*/ ) ); /*Q30*/ #else step = L_shl_o( L_mult( tmp1, getInvFrameLen( st_fx->L_frame ) ), sub( tmp2, 6 /*scaling from table lookup*/ + 1 /*go to Q30*/ ), &Overflow ); /*Q30*/ #endif @@ -1465,7 +1465,7 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, conceal_eof_gainFB = L_deposit_h( hTcxDec->conceal_eof_gain ); /*Q30*/ Mpy_32_32_ss( step, L_shl( L_mult0( st_fx->L_frame, getInvFrameLen( hTcxDec->L_frameTCX ) ), 8 ), &stepFB, &dmy ); #ifdef ISSUE_1866_replace_overflow_libdec - stepFB = L_shl_sat( stepFB, 3 - 1 ); /*Q30*/ //??sat + stepFB = L_shl_sat( stepFB, 3 - 1 ); /*Q30*/ #else stepFB = L_shl_o( stepFB, 3 - 1, &Overflow ); /*Q30*/ #endif @@ -1474,7 +1474,7 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, synthFB[i] = round_fx_sat( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB, synthFB[i] ), 1 ) ); move16(); #ifdef ISSUE_1866_replace_overflow_libdec - conceal_eof_gainFB = L_sub_sat( conceal_eof_gainFB, stepFB ); //??sat + conceal_eof_gainFB = L_sub_sat( conceal_eof_gainFB, stepFB ); #else conceal_eof_gainFB = L_sub_o( conceal_eof_gainFB, stepFB, &Overflow ); #endif @@ -1486,13 +1486,13 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, xn_buf[i] = round_fx_sat( L_shl_sat( Mpy_32_16_1( conceal_eof_gain32 /*Q30*/, xn_buf[i] ), 1 ) ); move16(); #ifdef ISSUE_1866_replace_overflow_libdec - conceal_eof_gain32 = L_sub_sat( conceal_eof_gain32, step ); //??sat + conceal_eof_gain32 = L_sub_sat( conceal_eof_gain32, step ); #else conceal_eof_gain32 = L_sub_o( conceal_eof_gain32, step, &Overflow ); #endif } #ifdef ISSUE_1866_replace_overflow_libdec - hTcxDec->conceal_eof_gain = round_fx_sat( conceal_eof_gain32 ); /*Q14*/ //??sat + hTcxDec->conceal_eof_gain = round_fx_sat( conceal_eof_gain32 ); /*Q14*/ #else hTcxDec->conceal_eof_gain = round_fx_o( conceal_eof_gain32, &Overflow ); /*Q14*/ #endif @@ -1505,7 +1505,7 @@ void decoder_tcx_post_fx( Decoder_State *st_fx, st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB, st_fx->last_concealed_gain_syn_deemph ), st_fx->last_concealed_gain_syn_deemph_e ) ); - /*Q30->Q14*/ //??sat + /*Q30->Q14*/ #else st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_o( Mpy_32_16_1( conceal_eof_gainFB, st_fx->last_concealed_gain_syn_deemph ), @@ -1669,7 +1669,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx, tmp32 = Mpy_32_16_1( tmp32, getInvFrameLen( hTcxDec->L_frameTCX ) ); tmp2 = norm_l( tmp32 ); #ifdef ISSUE_1866_replace_overflow_libdec - tmp1 = round_fx_sat( L_shl( tmp32, tmp2 ) ); //??sat + tmp1 = round_fx_sat( L_shl( tmp32, tmp2 ) ); #else tmp1 = round_fx_o( L_shl( tmp32, tmp2 ), &Overflow ); #endif @@ -1846,7 +1846,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx, IF( 0 == st_fx->enablePlcWaveadjust || EQ_16( st_fx->hPlcInfo->concealment_method, TCX_TONAL ) ) { #ifdef ISSUE_1866_replace_overflow_libdec - st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB, st_fx->last_concealed_gain_syn_deemph ), st_fx->last_concealed_gain_syn_deemph_e ) ); /*Q30->Q14*/ //??sat + st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB, st_fx->last_concealed_gain_syn_deemph ), st_fx->last_concealed_gain_syn_deemph_e ) ); /*Q30->Q14*/ #else st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_o( Mpy_32_16_1( conceal_eof_gainFB, st_fx->last_concealed_gain_syn_deemph ), st_fx->last_concealed_gain_syn_deemph_e, &Overflow ) ); /*Q30->Q14*/ #endif @@ -4362,7 +4362,7 @@ void decoder_tcx_invQ_fx( { tmp32 = L_shr( x[i], sub( 31, *x_e ) ); #ifdef ISSUE_1866_replace_overflow_libdec - *nf_seed = add_sat( *nf_seed, extract_l( L_shl( i_mult( (Word16) L_abs( tmp32 ), i ), 1 ) ) ); // abs( tmp32 ) * i * 2 //??sat + *nf_seed = add_sat( *nf_seed, extract_l( L_shl( i_mult( (Word16) L_abs( tmp32 ), i ), 1 ) ) ); // abs( tmp32 ) * i * 2 #else *nf_seed = add_o( *nf_seed, extract_l( L_shl( i_mult( (Word16) L_abs( tmp32 ), i ), 1 ) ), &Overflow ); // abs( tmp32 ) * i * 2 #endif @@ -4606,7 +4606,7 @@ void decoder_tcx_invQ_fx( move16(); tmp32 = Sqrt32( tmp32, &st->last_gain_syn_deemph_e ); #ifdef ISSUE_1866_replace_overflow_libdec - st->last_gain_syn_deemph = round_fx_sat( tmp32 ); // Q15 //??sat + st->last_gain_syn_deemph = round_fx_sat( tmp32 ); // Q15 #else st->last_gain_syn_deemph = round_fx_o( tmp32, &Overflow ); // Q15 #endif diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c index fd77497b8..ae2ddc341 100644 --- a/lib_dec/er_dec_tcx_fx.c +++ b/lib_dec/er_dec_tcx_fx.c @@ -37,7 +37,7 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, tmp_loop = shl( L_subfr, 1 ); BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1866_replace_overflow_libdec - tmp16_2 = round_fx_sat( L_shl_sat( lp_gainp, 2 ) ); /*Q31->Q15, no severe saturation, because st->lp_gainp here is [0,1]*/ //??sat //??sat + tmp16_2 = round_fx_sat( L_shl_sat( lp_gainp, 2 ) ); /*Q31->Q15, no severe saturation, because st->lp_gainp here is [0,1]*/ #else tmp16_2 = round_fx_o( L_shl_o( lp_gainp, 2, &Overflow ), &Overflow ); /*Q31->Q15, no severe saturation, because st->lp_gainp here is [0,1]*/ #endif @@ -48,7 +48,7 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, /*st->lp_gainc += ( exc[i-2*L_subfr] - st->Mode2_lp_gainp * exc[i-2*L_subfr-(int)(st->old_fpitch+0.5f)] ) * ( exc[i-2*L_subfr] - st->Mode2_lp_gainp * exc[i-2*L_subfr-(int)(st->old_fpitch+0.5f)] );*/ #ifdef ISSUE_1866_replace_overflow_libdec - tmp16_3 = sub_sat( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/ ); //??sat + tmp16_3 = sub_sat( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/ ); #else tmp16_3 = sub_o( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/, &Overflow ); #endif diff --git a/lib_dec/er_scale_syn_fx.c b/lib_dec/er_scale_syn_fx.c index 195d79d9e..37229c7bb 100644 --- a/lib_dec/er_scale_syn_fx.c +++ b/lib_dec/er_scale_syn_fx.c @@ -100,7 +100,7 @@ Word16 Damping_fact_fx( /* o : damping factor gain32 = Sqrt32( lp_tmp, &s_gainp ); /*Q31-s_gainp*/ #ifdef ISSUE_1866_replace_overflow_libdec - gain = round_fx_sat( L_shl_sat( gain32, s_gainp ) ); /* Q15*/ //??sat //??sat + gain = round_fx_sat( L_shl_sat( gain32, s_gainp ) ); /* Q15*/ #else gain = round_fx_o( L_shl_o( gain32, s_gainp, &Overflow ), &Overflow ); /* Q15*/ #endif diff --git a/lib_dec/er_sync_exc_fx.c b/lib_dec/er_sync_exc_fx.c index 77a2eb294..ebcb07b66 100644 --- a/lib_dec/er_sync_exc_fx.c +++ b/lib_dec/er_sync_exc_fx.c @@ -65,7 +65,7 @@ static Word16 GetMinimumPosition_fx( BASOP_SATURATE_WARNING_OFF_EVS /*saturates if energy < 0*/ #ifdef ISSUE_1866_replace_overflow_libdec tmptest = L_sub_sat( energy, MAXVAL_WORD32 ); - /*Q31*/ //??sat + /*Q31*/ #else tmptest = L_sub_o( energy, MAXVAL_WORD32, &Overflow ); /*Q31*/ #endif @@ -305,7 +305,7 @@ void PulseResynchronization_fx( move16(); tmp32_a = L_negate( tmp32_a ); #ifdef ISSUE_1866_replace_overflow_libdec - tmp32_a = L_add( L_shl_sat( 1, sub( 31, tmp3_e ) ), tmp32_a ); /*Q31,tmp3_e*/ /*tmp32_a= 1.0f-pitchStart*freqStart*/ //??sat + tmp32_a = L_add( L_shl_sat( 1, sub( 31, tmp3_e ) ), tmp32_a ); /*Q31,tmp3_e*/ /*tmp32_a= 1.0f-pitchStart*freqStart*/ #else tmp32_a = L_add( L_shl_o( 1, sub( 31, tmp3_e ), &Overflow ), tmp32_a ); /*Q31,tmp3_e*/ /*tmp32_a= 1.0f-pitchStart*freqStart*/ #endif @@ -375,7 +375,7 @@ void PulseResynchronization_fx( cycleDelta_e = add( cycleDelta_e, tmp_e ); tmp32 = L_shr( tmp32, sub( tmp_e, 15 ) ); /*Q31 frac, cycleDelta_e*/ #ifdef ISSUE_1866_replace_overflow_libdec - cycleDelta = round_fx_sat( tmp32 ); /*Q15, cycleDelta_e*/ //??sat + cycleDelta = round_fx_sat( tmp32 ); /*Q15, cycleDelta_e*/ #else cycleDelta = round_fx_o( tmp32, &Overflow ); /*Q15, cycleDelta_e*/ #endif diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 72dc9387c..38f4ec816 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -56,7 +56,7 @@ void minimumStatistics_fx( BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1866_replace_overflow_libdec - IF( LT_16( shl_sat( currentFrameLevel, currentFrameLevel_e ), PLC_MIN_CNG_LEV ) ) //??sat + IF( LT_16( shl_sat( currentFrameLevel, currentFrameLevel_e ), PLC_MIN_CNG_LEV ) ) #else IF( LT_16( shl_o( currentFrameLevel, currentFrameLevel_e, &Overflow ), PLC_MIN_CNG_LEV ) ) #endif diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index c5f2d4708..98849ed71 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -457,7 +457,7 @@ ivas_error evs_dec_fx( hb_synth_fx[i] = mult_r( hb_synth_fx[i], tmp16_2 ); /*hb_synth_fx_exp*/ move16(); #ifdef ISSUE_1866_replace_overflow_libdec - tmp16_2 = add_sat( tmp16_2, tmp16 ); //??sat + tmp16_2 = add_sat( tmp16_2, tmp16 ); #else tmp16_2 = add_o( tmp16_2, tmp16, &Overflow ); #endif diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 91b566fe6..5e8edc095 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1100,7 +1100,7 @@ Word16 ApplyFdCng_fx( L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/ #ifdef ISSUE_1866_replace_overflow_libdec - st->cngTDLevel = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); /*Q15 - L_tmp_exp*/ //??sat + st->cngTDLevel = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); /*Q15 - L_tmp_exp*/ #else st->cngTDLevel = round_fx_o( Sqrt32( L_tmp, &L_tmp_exp ), &Overflow ); /*Q15 - L_tmp_exp*/ #endif diff --git a/lib_dec/gain_dec_fx.c b/lib_dec/gain_dec_fx.c index 267041c37..5900aa706 100644 --- a/lib_dec/gain_dec_fx.c +++ b/lib_dec/gain_dec_fx.c @@ -1499,7 +1499,7 @@ void gain_dec_amr_wb_fx( /* adjust gain according to energy of code */ L_tmp = Mult_32_16( *gain_code, *gain_inov ); #ifdef ISSUE_1866_replace_overflow_libdec - *gain_code = L_shl_sat( L_tmp, 3 ); /* gcode_inov in Q12*/ //??sat + *gain_code = L_shl_sat( L_tmp, 3 ); /* gcode_inov in Q12*/ #else *gain_code = L_shl_o( L_tmp, 3, &Overflow ); /* gcode_inov in Q12*/ #endif diff --git a/lib_dec/hf_synth_fx.c b/lib_dec/hf_synth_fx.c index 0bb289344..49d28d5ca 100644 --- a/lib_dec/hf_synth_fx.c +++ b/lib_dec/hf_synth_fx.c @@ -221,7 +221,7 @@ static void hf_synthesis_fx( *-----------------------------------------------------------------*/ /* tmp = 1.0 - fac */ #ifdef ISSUE_1866_replace_overflow_libdec - tmp = add_sat( 1, sub( 32767 /* 1 in Q15 */, tmp ) ); //??sat + tmp = add_sat( 1, sub( 32767 /* 1 in Q15 */, tmp ) ); #else tmp = add_o( 1, sub( 32767 /* 1 in Q15 */, tmp ), &Overflow ); #endif @@ -231,7 +231,7 @@ static void hf_synthesis_fx( /* emphasize HF noise in CNG */ /*fac *= 2.0f;*/ #ifdef ISSUE_1866_replace_overflow_libdec - tmp = add_sat( tmp, tmp ); /* Q15 */ //??sat + tmp = add_sat( tmp, tmp ); /* Q15 */ #else tmp = add_o( tmp, tmp, &Overflow ); /* Q15 */ #endif @@ -554,14 +554,14 @@ static void filt_6k_7k_scale_fx( FOR( j = 0; j < 31; j++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mac_sat( L_tmp, x[i + j], fir_6k_7k_fx[j] ); /* Q16 */ //??sat + L_tmp = L_mac_sat( L_tmp, x[i + j], fir_6k_7k_fx[j] ); /* Q16 */ #else L_tmp = L_mac_o( L_tmp, x[i + j], fir_6k_7k_fx[j], &Overflow ); /* Q16 */ #endif } #ifdef ISSUE_1866_replace_overflow_libdec - signal[i] = round_fx_sat( L_tmp ); /* Q0 */ //??sat + signal[i] = round_fx_sat( L_tmp ); /* Q0 */ #else signal[i] = round_fx_o( L_tmp, &Overflow ); /* Q0 */ #endif @@ -1444,7 +1444,7 @@ static Word16 EnhanceClass_fx( } #ifdef ISSUE_1866_replace_overflow_libdec - if ( GT_16( sub_sat( *unvoicing_fx, *unvoicing_sm_fx ), 3277 /* 0.1 in Q15 */ ) ) //??sat + if ( GT_16( sub_sat( *unvoicing_fx, *unvoicing_sm_fx ), 3277 /* 0.1 in Q15 */ ) ) #else if ( GT_16( sub_o( *unvoicing_fx, *unvoicing_sm_fx, &Overflow ), 3277 /* 0.1 in Q15 */ ) ) #endif @@ -1454,7 +1454,7 @@ static Word16 EnhanceClass_fx( } #ifdef ISSUE_1866_replace_overflow_libdec - if ( LT_16( sub_sat( *unvoicing_fx, *unvoicing_sm_fx ), 1638 /* 0.05 in Q15 */ ) ) //??sat + if ( LT_16( sub_sat( *unvoicing_fx, *unvoicing_sm_fx ), 1638 /* 0.05 in Q15 */ ) ) #else if ( LT_16( sub_o( *unvoicing_fx, *unvoicing_sm_fx, &Overflow ), 1638 /* 0.05 in Q15 */ ) ) #endif diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c index 3ae2927e8..2b1d207d3 100644 --- a/lib_dec/igf_dec_fx.c +++ b/lib_dec/igf_dec_fx.c @@ -1885,7 +1885,7 @@ static void IGF_appl( IGF_DEC_PRIVATE_DATA_HANDLE hPrivateData, /**< in /* divide E by sum */ #ifdef ISSUE_1866_replace_overflow_libdec - tmp = div_s( shr( round_fx_sat( E ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ //??sat + tmp = div_s( shr( round_fx_sat( E ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ #else tmp = div_s( shr( round_fx_o( E, &Overflow ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ #endif @@ -2576,7 +2576,7 @@ static void IGF_appl_ivas( IGF_DEC_PRIVATE_DATA_HANDLE hPrivateData, /**< in /* divide E by sum */ #ifdef ISSUE_1866_replace_overflow_libdec - tmp = div_s( shr( round_fx_sat( E ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ //??sat + tmp = div_s( shr( round_fx_sat( E ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ #else tmp = div_s( shr( round_fx_o( E, &Overflow ), 1 ), sum ); /* shift E 1 bit to the right in order to make it smaller than sum */ #endif @@ -3003,7 +3003,7 @@ static void IGF_RefineGrid( H_IGF_GRID hGrid /**< in tmp = add( tmp, 1 ); delta = sub( hGrid->swb_offset[sfb + 1], hGrid->swb_offset[sfb] ); #ifdef ISSUE_1866_replace_overflow_libdec - delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_sat( delta, 5 ) ); //??sat + delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_sat( delta, 5 ) ); #else delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_o( delta, 5, &Overflow ) ); #endif @@ -3057,7 +3057,7 @@ static void IGF_RefineGrid_ivas_fx( H_IGF_GRID hGrid /**< in/out: | IGF grid han tmp = add( tmp, 1 ); delta = sub( hGrid->swb_offset[sfb + 1], hGrid->swb_offset[sfb] ); #ifdef ISSUE_1796_replace_shl_o - delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_sat( delta, 5 ) ); //??sat + delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_sat( delta, 5 ) ); #else delta = mac_r( 0x00195000, 29491 /*0.45f Q16*/, shl_o( delta, 5, &Overflow ) ); #endif diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index b7dd1872d..4a9025ddd 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -1119,7 +1119,7 @@ ivas_error ivas_core_dec_fx( hb_synth_32_fx[n][i] = Mpy_32_16_1( hb_synth_32_fx[n][i], tmp16_2 ); /* Q11 */ move32(); #ifdef ISSUE_1866_replace_overflow_libdec - tmp16_2 = add_sat( tmp16_2, tmp16 ); /* Q15 */ //??sat + tmp16_2 = add_sat( tmp16_2, tmp16 ); /* Q15 */ #else tmp16_2 = add_o( tmp16_2, tmp16, &Overflow ); /* Q15 */ #endif diff --git a/lib_dec/pitch_extr_fx.c b/lib_dec/pitch_extr_fx.c index 4b159ee15..f33effc99 100644 --- a/lib_dec/pitch_extr_fx.c +++ b/lib_dec/pitch_extr_fx.c @@ -183,7 +183,7 @@ void pitch_pred_linear_fit( t7 = BASOP_Util_Add_Mant32Exp( t5, e5, t6, e6, &e7 ); /*Q31,e7*/ sum0_q = norm_l( t7 ); #ifdef ISSUE_1866_replace_overflow_libdec - sum0 = round_fx_sat( L_shl( t7, sum0_q ) ); /*Q15,e7-sum0_q*/ //??sat + sum0 = round_fx_sat( L_shl( t7, sum0_q ) ); /*Q15,e7-sum0_q*/ #else sum0 = round_fx_o( L_shl( t7, sum0_q ), &Overflow ); /*Q15,e7-sum0_q*/ #endif diff --git a/lib_dec/post_dec_fx.c b/lib_dec/post_dec_fx.c index 02462abbd..77b33d952 100644 --- a/lib_dec/post_dec_fx.c +++ b/lib_dec/post_dec_fx.c @@ -659,8 +659,8 @@ void cldfb_synth_set_bandsToZero( realQ1 = extract_l( L_shr( rAnalysis[k][i], sub( 31 + 3 - 15, scaleFactor.lb_scale ) ) ); /*31 - (15 + scaleFactor.lb_scale) + 3 )*/ imagQ1 = extract_l( L_shr( iAnalysis[k][i], sub( 31 + 3 - 15, scaleFactor.lb_scale ) ) ); /* Q(-3), headroom */ #ifdef ISSUE_1866_replace_overflow_libdec - nrgQ31 = L_mac0_sat( nrgQ31, realQ1, realQ1 ); //??sat - nrgQ31 = L_mac0_sat( nrgQ31, imagQ1, imagQ1 ); /* keep in Q(-6) */ //??sat + nrgQ31 = L_mac0_sat( nrgQ31, realQ1, realQ1 ); + nrgQ31 = L_mac0_sat( nrgQ31, imagQ1, imagQ1 ); /* keep in Q(-6) */ #else nrgQ31 = L_mac0_o( nrgQ31, realQ1, realQ1, &Overflow ); nrgQ31 = L_mac0_o( nrgQ31, imagQ1, imagQ1, &Overflow ); /* keep in Q(-6) */ diff --git a/lib_dec/pvq_core_dec_fx.c b/lib_dec/pvq_core_dec_fx.c index d3630545f..f4191a5f1 100644 --- a/lib_dec/pvq_core_dec_fx.c +++ b/lib_dec/pvq_core_dec_fx.c @@ -495,7 +495,7 @@ static void densitySymbolIndexDecode_fx( angle = atan2_fx( SQRT_DIM_fx[opp_sz], SQRT_DIM_fx[near_sz] ); // Q13 #ifdef ISSUE_1866_replace_overflow_libdec - angle = shl_sat( angle, 1 ); //??sat + angle = shl_sat( angle, 1 ); #else angle = shl_o( angle, 1, &Overflow ); #endif diff --git a/lib_dec/pvq_decode_fx.c b/lib_dec/pvq_decode_fx.c index 85d4e3558..f48a34397 100644 --- a/lib_dec/pvq_decode_fx.c +++ b/lib_dec/pvq_decode_fx.c @@ -106,8 +106,8 @@ void pvq_decode_fx( Mpy_32_16_ss( L_isqrt, shl( y[i], shift_num ), &L_tmp, &u16_tmp ); /* Q31*Q(0+x) *2*/ Mpy_32_16_ss( L_tmp, neg_gain_norm, &L_tmp, &u16_tmp ); /* Q31*Q(0+x) *Q15 *2*/ #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_shr_sat( L_tmp, shift_tot ); //??sat - xq[i] = round_fx_sat( L_tmp ); /* Q15 , array move */ //??sat + L_tmp = L_shr_sat( L_tmp, shift_tot ); + xq[i] = round_fx_sat( L_tmp ); /* Q15 , array move */ #else L_tmp = L_shr_o( L_tmp, shift_tot, &Overflow ); xq[i] = round_fx_o( L_tmp, &Overflow ); /* Q15 , array move */ diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 94f18676c..3a0e4364f 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -965,7 +965,7 @@ void ivas_wb_tbe_dec_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - shaped_wb_excitation_frac[i] = shl_sat( shaped_wb_excitation[i], n ); /*Q14*/ //??sat + shaped_wb_excitation_frac[i] = shl_sat( shaped_wb_excitation[i], n ); /*Q14*/ #else shaped_wb_excitation_frac[i] = shl_o( shaped_wb_excitation[i], n, &Overflow ); /*Q14*/ #endif @@ -977,8 +977,8 @@ void ivas_wb_tbe_dec_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mult_sat( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i] ); /*Q29*/ //??sat - curr_frame_pow = L_add_sat( curr_frame_pow, L_shr( L_tmp, 7 ) ); /*Q22*/ //??sat + L_tmp = L_mult_sat( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i] ); /*Q29*/ + curr_frame_pow = L_add_sat( curr_frame_pow, L_shr( L_tmp, 7 ) ); /*Q22*/ #else L_tmp = L_mult_o( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i], &Overflow ); /*Q29*/ curr_frame_pow = L_add_o( curr_frame_pow, L_shr( L_tmp, 7 ), &Overflow ); /*Q22*/ @@ -1623,7 +1623,7 @@ void wb_tbe_dec_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - shaped_wb_excitation_frac[i] = shl_sat( shaped_wb_excitation[i], n ); /*Q14*/ //??sat + shaped_wb_excitation_frac[i] = shl_sat( shaped_wb_excitation[i], n ); /*Q14*/ #else shaped_wb_excitation_frac[i] = shl_o( shaped_wb_excitation[i], n, &Overflow ); /*Q14*/ #endif @@ -1635,8 +1635,8 @@ void wb_tbe_dec_fx( FOR( i = 0; i < L_FRAME16k / 4; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - L_tmp = L_mult_sat( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i] ); /*Q29*/ //??sat - curr_frame_pow = L_add_sat( curr_frame_pow, L_shr( L_tmp, 7 ) ); /*Q22*/ //??sat + L_tmp = L_mult_sat( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i] ); /*Q29*/ + curr_frame_pow = L_add_sat( curr_frame_pow, L_shr( L_tmp, 7 ) ); /*Q22*/ #else L_tmp = L_mult_o( shaped_wb_excitation_frac[i], shaped_wb_excitation_frac[i], &Overflow ); /*Q29*/ curr_frame_pow = L_add_o( curr_frame_pow, L_shr( L_tmp, 7 ), &Overflow ); /*Q22*/ @@ -1837,7 +1837,7 @@ void wb_tbe_dec_fx( L_tmp = Mult_32_16( Lacc, 102 ); /* Q22 */ exp = norm_l( L_tmp ); #ifdef ISSUE_1866_replace_overflow_libdec - tmp = round_fx_sat( L_shl( L_tmp, exp ) ); //??sat + tmp = round_fx_sat( L_shl( L_tmp, exp ) ); #else tmp = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); #endif diff --git a/lib_dec/syn_outp_fx.c b/lib_dec/syn_outp_fx.c index e5557fb99..b5f45e64d 100644 --- a/lib_dec/syn_outp_fx.c +++ b/lib_dec/syn_outp_fx.c @@ -85,7 +85,7 @@ void unscale_AGC( } BASOP_SATURATE_WARNING_OFF_EVS #ifdef ISSUE_1866_replace_overflow_libdec - tmp = shl_sat( 30000, Qx ); /* saturation can occur here */ //??sat + tmp = shl_sat( 30000, Qx ); /* saturation can occur here */ #else tmp = shl_o( 30000, Qx, &Overflow ); /* saturation can occur here */ #endif diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 0cbecda36..31b62a83f 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -860,7 +860,7 @@ static void ivas_CalcPowerSpecAndDetectTonalComponents_fx( FOR( i = 0; i < nSamples; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_sat( powerSpectrum[i] ); // Q31 - powerSpectrum_exp //??sat + hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_sat( powerSpectrum[i] ); // Q31 - powerSpectrum_exp #else hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_o( powerSpectrum[i], &Overflow ); // Q31 - powerSpectrum_exp #endif @@ -984,7 +984,7 @@ static void CalcPowerSpecAndDetectTonalComponents( FOR( i = 0; i < nSamples; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_sat( powerSpectrum[i] ); // Q31-powerSpectrum_exp //??sat + hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_sat( powerSpectrum[i] ); // Q31-powerSpectrum_exp #else hTonalMDCTConc->secondLastPowerSpectrum[i] = round_fx_o( powerSpectrum[i], &Overflow ); // Q31-powerSpectrum_exp #endif diff --git a/lib_dec/transition_dec_fx.c b/lib_dec/transition_dec_fx.c index ace403a84..2c9926656 100644 --- a/lib_dec/transition_dec_fx.c +++ b/lib_dec/transition_dec_fx.c @@ -832,7 +832,7 @@ static void tc_dec_fx( FOR( ; i <= j; i++ ) { #ifdef ISSUE_1866_replace_overflow_libdec - exc[i + i_subfr] = round_fx_sat( L_shl_sat( L_mult_sat( pt_shape[i], gain_trans ), sc ) ); /* (Qx * Q14 ) */ //??sat //??sat //??sat + exc[i + i_subfr] = round_fx_sat( L_shl_sat( L_mult_sat( pt_shape[i], gain_trans ), sc ) ); /* (Qx * Q14 ) */ #else exc[i + i_subfr] = round_fx_o( L_shl_o( L_mult_o( pt_shape[i], gain_trans, &Overflow ), sc, &Overflow ), &Overflow ); /* (Qx * Q14 ) */ #endif -- GitLab