Commit 96e55cf1 authored by Manuel Jander's avatar Manuel Jander
Browse files

Add extract_l() checks to lib_com

parent f6dc3f4c
Loading
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -18,6 +18,10 @@
#include <stdlib.h>
#include "stl.h"

#ifdef FIX_2493_CHECK_64BIT
#include <assert.h>
#endif

#define WMC_TOOL_SKIP

/*****************************************************************************
@@ -74,7 +78,9 @@
Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 )
{
    Word64 L64_var_out;

#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var1 + L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) + ( L64_var2 >> 1 ) ) ) < 2 );
#endif
    L64_var_out = L64_var1 + L64_var2;

#ifdef WMOPS
@@ -117,7 +123,9 @@ Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 )
Word64 W_sub_nosat( Word64 L64_var1, Word64 L64_var2 )
{
    Word64 L64_var_out;

#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var1 - L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var2 >> 1 ) ) ) < 2 );
#endif
    L64_var_out = L64_var1 - L64_var2;

#ifdef WMOPS
@@ -316,6 +324,9 @@ Word64 W_shl_nosat( Word64 L64_var1, Word16 var2 )
    }
    else
    {
#ifdef FIX_2493_CHECK_64BIT
        assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 );
#endif
        L64_var_out = L64_var1 << var2;
    }
#ifdef WMOPS
@@ -369,6 +380,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 )
    if ( var2 < 0 )
    {
        var2 = -var2;
#ifdef FIX_2493_CHECK_64BIT
        assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 );
#endif
        L64_var_out = L64_var1 << var2;
    }
    else
@@ -423,6 +437,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 )
Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 )
{
    Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1;
#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 );
#endif
    L64_var_out += L64_var1;
#ifdef WMOPS
    multiCounter[currCounter].W_mac_32_16++;
@@ -470,6 +487,9 @@ Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 )
Word64 W_msu_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 )
{
    Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1;
#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 );
#endif
    L64_var_out = L64_var1 - L64_var_out;
#ifdef WMOPS
    multiCounter[currCounter].W_msu_32_16++;
@@ -596,6 +616,9 @@ Word64 W_mult0_16_16( Word16 var1, Word16 var2 )
Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 )
{
    Word64 L64_var_out = (Word64) var2 * var3;
#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 );
#endif
    L64_var_out += L64_var1;
#ifdef WMOPS
    multiCounter[currCounter].W_mac0_16_16++;
@@ -642,6 +665,9 @@ Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 )
Word64 W_msu0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 )
{
    Word64 L64_var_out = (Word64) var2 * var3;
#ifdef FIX_2493_CHECK_64BIT
    assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 );
#endif
    L64_var_out = L64_var1 - L64_var_out;
#ifdef WMOPS
    multiCounter[currCounter].W_msu0_16_16++;
+10 −2
Original line number Diff line number Diff line
@@ -690,7 +690,11 @@ void cng_params_postupd_fx(
            exp_pow = sub( 14, temp_hi_fx );
            L_tmp = Pow2( 14, temp_lo_fx );             /* Qexp_pow */
            L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */
#ifdef FIX_2493_CHECK_EXTRACT_L
            tmp = extract_l2( L_tmp ); /* Q13 */
#else
            tmp = extract_l( L_tmp ); /* Q13 */
#endif

            exp1 = norm_s( tmp );
            tmp = shl( tmp, exp1 );           /*Q(exp1+13) */
@@ -889,7 +893,11 @@ void cng_params_upd_fx(
            exp_pow = sub( 14, temp_hi_fx );
            L_tmp = Pow2( 14, temp_lo_fx );             /* Qexp_pow */
            L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */
#ifdef FIX_2493_CHECK_EXTRACT_L
            tmp = extract_l2( L_tmp ); /* Q13 */
#else
            tmp = extract_l( L_tmp ); /* Q13 */
#endif

            exp1 = norm_s( tmp );
            tmp = shl( tmp, exp1 );           /*Q(exp1+13) */
+25 −0
Original line number Diff line number Diff line
@@ -511,8 +511,13 @@ static void cft1st_fx(
        move16();
        wk1i = w[k2 + 1];
        move16();
#ifdef FIX_2493_CHECK_EXTRACT_L
        wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) );
        wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) );
#else
        wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) );
        wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) );
#endif
        x0r = L_add( a[j], a[j + 2] );
        x0i = L_add( a[j + 1], a[j + 3] );
        x1r = L_sub( a[j], a[j + 2] );
@@ -548,8 +553,13 @@ static void cft1st_fx(
        move16();
        wk1i = w[k2 + 3];
        move16();
#ifdef FIX_2493_CHECK_EXTRACT_L
        wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) );
        wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) );
#else
        wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) );
        wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) );
#endif
        x0r = L_add( a[j + 8], a[j + 10] );
        x0i = L_add( a[j + 9], a[j + 11] );
        x1r = L_sub( a[j + 8], a[j + 10] );
@@ -686,8 +696,13 @@ static void cftmdl_fx(
        move16();
        wk1i = w[k2 + 1];
        move16();
#ifdef FIX_2493_CHECK_EXTRACT_L
        wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) );
        wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) );
#else
        wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) );
        wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) );
#endif

        tmp = add( l, k );
        FOR( j = k; j < tmp; j += 2 )
@@ -731,8 +746,13 @@ static void cftmdl_fx(
        move16();
        wk1i = w[k2 + 3];
        move16();
#ifdef FIX_2493_CHECK_EXTRACT_L
        wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) );
        wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) );
#else
        wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) );
        wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) );
#endif

        tmp = add( l, add( k, m ) );
        FOR( j = k + m; j < tmp; j += 2 )
@@ -2169,8 +2189,13 @@ static void cftmdl_16fx(

            L_x0r = L_add( (Word32) x1r, (Word32) x3i );
            L_x0i = L_sub( (Word32) x1i, (Word32) x3r );
#ifdef FIX_2493_CHECK_EXTRACT_L
            x0r = extract_l2( L_x0r );
            x0i = extract_l2( L_x0i );
#else
            x0r = extract_l( L_x0r );
            x0i = extract_l( L_x0i );
#endif
            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) */
+20 −0
Original line number Diff line number Diff line
@@ -197,14 +197,22 @@ void bands_and_bit_alloc_fx(
        {
            /*  *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - 25; */
            L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ );
#ifdef FIX_2493_CHECK_EXTRACT_L
            tmp = extract_l2( L_shr_r( L_tmp, 5 ) );
#else
            tmp = extract_l( L_shr_r( L_tmp, 5 ) );
#endif
            *bit = sub( sub( tmp, bits_used ), 25 ); /*Q0*/
            move16();
        }
        ELSE
        {
            L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ );
#ifdef FIX_2493_CHECK_EXTRACT_L
            tmp = extract_l2( L_shr_r( L_tmp, 5 ) );
#else
            tmp = extract_l( L_shr_r( L_tmp, 5 ) );
#endif
            *bit = sub( sub( tmp, bits_used ), 21 ); /*Q0*/
            move16();
        }
@@ -216,7 +224,11 @@ void bands_and_bit_alloc_fx(
        /* *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - GSC_freq_bits[bit_index]; */

        L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ );
#ifdef FIX_2493_CHECK_EXTRACT_L
        tmp = extract_l2( L_shr_r( L_tmp, 5 ) );
#else
        tmp = extract_l( L_shr_r( L_tmp, 5 ) );
#endif
        *bit = sub( sub( tmp, bits_used ), GSC_freq_bits[bit_index] );
        move16();
    }
@@ -546,7 +558,11 @@ void bands_and_bit_alloc_fx(
                {
                    bits_per_bands[j] = L_add( bits_per_bands[j], L_shl( etmp, Q3 ) ); /* Q18 */
                    move32();
#ifdef FIX_2493_CHECK_EXTRACT_L
                    etmp = extract_l2( L_add( etmp, L_shr( bit_fracf, Q3 ) ) );
#else
                    etmp = extract_l( L_add( etmp, L_shr( bit_fracf, Q3 ) ) );
#endif
                }
            }
            ELSE
@@ -727,7 +743,11 @@ void bands_and_bit_alloc_fx(
        move16();
        FOR( i = 0; i < nb_bands; i++ )
        {
#ifdef FIX_2493_CHECK_EXTRACT_L
            out_bits_per_bands[i] = shl( extract_l2( L_shr( bits_per_bands[i], 18 ) ), 3 );
#else
            out_bits_per_bands[i] = shl( extract_l( L_shr( bits_per_bands[i], 18 ) ), 3 );
#endif
            move16();
            w_sum_bit = add( w_sum_bit, out_bits_per_bands[i] ); /* Q3 */
        }
+9 −3
Original line number Diff line number Diff line
@@ -125,9 +125,15 @@ Word16 Comp_and_apply_gain_fx(
            L32 = L_mult( L16, 27213 );                                  /* 3.321928 in Q13 -> Q26 */
            L32 = L_shr( L32, 10 );                                      /* From Q26 to Q16 */
            frac = L_Extract_lc( L32, &exp1 );                           /* Extract exponent of gcode0 */
#ifdef FIX_2493_CHECK_EXTRACT_L
            y_gain = extract_l2( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
                                                     /* output of Pow2() will be: */
                                                     /* 16384 < Pow2() <= 32767 */
#else
            y_gain = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */
                                                    /* output of Pow2() will be: */
                                                    /* 16384 < Pow2() <= 32767 */
#endif
            Ener_per_bd_yQ[i_band] = shl_sat( y_gain, sub( exp1, 13 ) );
            move16(); /*Q1     */
            tmp_exp = add( add( exp1, 1 ), sub( Q_exc, Qexc_diff ) );
Loading