Loading basic_op/basop32.c +18 −2 Original line number Diff line number Diff line Loading @@ -2320,14 +2320,21 @@ Word32 L_deposit_l (Word16 var1) { | range : 0x8000 0000 <= var_out <= 0x7fff ffff. | |___________________________________________________________________________| */ #ifdef BASOP_NOGLOB Word32 L_shr_ro (Word32 L_var1, Word16 var2, Flag * Overflow) { #else Word32 L_shr_r (Word32 L_var1, Word16 var2) { #endif Word32 L_var_out; if (var2 > 31) { L_var_out = 0; } else { #ifdef BASOP_NOGLOB L_var_out = L_shr_o (L_var1, var2, Overflow); #else L_var_out = L_shr (L_var1, var2); #endif #if (WMOPS) multiCounter[currCounter].L_shr--; #endif Loading @@ -2343,6 +2350,15 @@ Word32 L_shr_r (Word32 L_var1, Word16 var2) { #endif return (L_var_out); } #ifdef BASOP_NOGLOB Word32 L_shr_r(Word32 L_var1, Word16 var2) { return L_shr_ro(L_var1, var2, NULL); } Word32 L_shr_r_sat(Word32 L_var1, Word16 var2) { Flag Overflow = 0; return L_shr_ro(L_var1, var2, &Overflow); } #endif /*___________________________________________________________________________ Loading basic_op/basop32.h +4 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,8 @@ Word16 mult_ro (Word16 var1, Word16 var2, Flag * Overflow); Word16 mac_ro (Word32 L_var3, Word16 var1, Word16 var2, Flag * Overflow); Word16 msu_ro (Word32 L_var3, Word16 var1, Word16 var2, Flag * Overflow); Word32 L_sat_co (Word32 L_var1, Flag Carry, Flag Overflow); Word32 L_shr_ro(Word32 L_var1, Word16 var2, Flag* Overflow); /* * Saturating operators Loading Loading @@ -248,6 +250,8 @@ Word32 L_msu0_sat(Word32 L_var3, Word16 var1, Word16 var2); Word16 mult_r_sat(Word16 var1, Word16 var2); Word16 mac_r_sat(Word32 L_var3, Word16 var1, Word16 var2); Word16 msu_r_sat(Word32 L_var3, Word16 var1, Word16 var2); Word32 L_shr_r_sat(Word32 L_var1, Word16 var2); #endif /* BASOP_NOGLOB */ #endif /* ifndef _BASIC_OP_H */ Loading lib_com/fd_cng_com.c +8 −2 Original line number Diff line number Diff line Loading @@ -1190,8 +1190,11 @@ void scalebands ( s = norm_l(tmp); s1 = sub(delta_s, s); #ifdef BASOP_NOGLOB delta = round_fx_sat(L_shl_sat(tmp, s)); #else delta = round_fx(L_shl(tmp, s)); #endif /* Choose scale such that the interpolation start and end point both are representable and add 1 additional bit hr. */ delta_s = sub(s_min(norm_l(partpow[j-1]), norm_l(partpow[j])), 1); val = L_shl(partpow[j-1], delta_s); Loading Loading @@ -1703,8 +1706,11 @@ void lpc_from_spectrum ( maxVal = L_max(maxVal, L_abs(powspec[i])); } s1 = norm_l(maxVal); #ifdef BASOP_NOGLOB nf = L_shr_r_sat(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9)); #else nf = L_shr_r(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9)); #endif ptr = fftBuffer; pti = fftBuffer+1; Loading lib_dec/swb_tbe_dec_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -1054,7 +1054,11 @@ void wb_tbe_dec_fx( L_tmp = Mult_32_16( Lacc, 102 ); /* Q22 */ exp = norm_l( L_tmp ); #ifdef BASOP_NOGLOB tmp = round_fx_o( L_shl_o( L_tmp, exp , &Overflow), &Overflow); #else tmp = round_fx( L_shl( L_tmp, exp ) ); #endif exp = sub( add( exp, 22 ), 30 ); tmp = div_s( 16384, tmp ); L_tmp = Isqrt_lc( L_deposit_h( tmp ), &exp ); /* Q(31-exp) */ Loading Loading
basic_op/basop32.c +18 −2 Original line number Diff line number Diff line Loading @@ -2320,14 +2320,21 @@ Word32 L_deposit_l (Word16 var1) { | range : 0x8000 0000 <= var_out <= 0x7fff ffff. | |___________________________________________________________________________| */ #ifdef BASOP_NOGLOB Word32 L_shr_ro (Word32 L_var1, Word16 var2, Flag * Overflow) { #else Word32 L_shr_r (Word32 L_var1, Word16 var2) { #endif Word32 L_var_out; if (var2 > 31) { L_var_out = 0; } else { #ifdef BASOP_NOGLOB L_var_out = L_shr_o (L_var1, var2, Overflow); #else L_var_out = L_shr (L_var1, var2); #endif #if (WMOPS) multiCounter[currCounter].L_shr--; #endif Loading @@ -2343,6 +2350,15 @@ Word32 L_shr_r (Word32 L_var1, Word16 var2) { #endif return (L_var_out); } #ifdef BASOP_NOGLOB Word32 L_shr_r(Word32 L_var1, Word16 var2) { return L_shr_ro(L_var1, var2, NULL); } Word32 L_shr_r_sat(Word32 L_var1, Word16 var2) { Flag Overflow = 0; return L_shr_ro(L_var1, var2, &Overflow); } #endif /*___________________________________________________________________________ Loading
basic_op/basop32.h +4 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,8 @@ Word16 mult_ro (Word16 var1, Word16 var2, Flag * Overflow); Word16 mac_ro (Word32 L_var3, Word16 var1, Word16 var2, Flag * Overflow); Word16 msu_ro (Word32 L_var3, Word16 var1, Word16 var2, Flag * Overflow); Word32 L_sat_co (Word32 L_var1, Flag Carry, Flag Overflow); Word32 L_shr_ro(Word32 L_var1, Word16 var2, Flag* Overflow); /* * Saturating operators Loading Loading @@ -248,6 +250,8 @@ Word32 L_msu0_sat(Word32 L_var3, Word16 var1, Word16 var2); Word16 mult_r_sat(Word16 var1, Word16 var2); Word16 mac_r_sat(Word32 L_var3, Word16 var1, Word16 var2); Word16 msu_r_sat(Word32 L_var3, Word16 var1, Word16 var2); Word32 L_shr_r_sat(Word32 L_var1, Word16 var2); #endif /* BASOP_NOGLOB */ #endif /* ifndef _BASIC_OP_H */ Loading
lib_com/fd_cng_com.c +8 −2 Original line number Diff line number Diff line Loading @@ -1190,8 +1190,11 @@ void scalebands ( s = norm_l(tmp); s1 = sub(delta_s, s); #ifdef BASOP_NOGLOB delta = round_fx_sat(L_shl_sat(tmp, s)); #else delta = round_fx(L_shl(tmp, s)); #endif /* Choose scale such that the interpolation start and end point both are representable and add 1 additional bit hr. */ delta_s = sub(s_min(norm_l(partpow[j-1]), norm_l(partpow[j])), 1); val = L_shl(partpow[j-1], delta_s); Loading Loading @@ -1703,8 +1706,11 @@ void lpc_from_spectrum ( maxVal = L_max(maxVal, L_abs(powspec[i])); } s1 = norm_l(maxVal); #ifdef BASOP_NOGLOB nf = L_shr_r_sat(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9)); #else nf = L_shr_r(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9)); #endif ptr = fftBuffer; pti = fftBuffer+1; Loading
lib_dec/swb_tbe_dec_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -1054,7 +1054,11 @@ void wb_tbe_dec_fx( L_tmp = Mult_32_16( Lacc, 102 ); /* Q22 */ exp = norm_l( L_tmp ); #ifdef BASOP_NOGLOB tmp = round_fx_o( L_shl_o( L_tmp, exp , &Overflow), &Overflow); #else tmp = round_fx( L_shl( L_tmp, exp ) ); #endif exp = sub( add( exp, 22 ), 30 ); tmp = div_s( 16384, tmp ); L_tmp = Isqrt_lc( L_deposit_h( tmp ), &exp ); /* Q(31-exp) */ Loading