Commit dda3192a authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '20250122_cleanup_BASOP_NOGLOB' into 'main'

[cleanup] accept BASOP_NOGLOB

See merge request !1007
parents 00e3a39d d44117a1
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -224,11 +224,7 @@ void tcx_arith_scale_envelope(

        tmp = norm_l( env[k] );
        tmp2 = sub( 15, tmp );
#ifdef BASOP_NOGLOB
        tmp = Inv16( round_fx_o( L_shl_o( env[k], tmp, &Overflow ), &Overflow ), &tmp2 ); /* exp(tmp2) */
#else
        tmp = Inv16( round_fx( L_shl( env[k], tmp ) ), &tmp2 );
#endif
        ienv[k] = L_shl( L_deposit_h( tmp ), sub( tmp2, 15 ) );                           /* Q16 */
        move32();
        mean = L_add( mean, ienv[k] ); /* Q16 */
@@ -276,11 +272,7 @@ void tcx_arith_scale_envelope(

    tmp2 = BASOP_Util_Add_MantExp( negate( b ), b_e, tmp, tmp2, &scale ); /* exp(scale) */
    scale = BASOP_Util_Divide1616_Scale( scale, round_fx( a ), &tmp );
#ifdef BASOP_NOGLOB
    scale = shl_o( scale, sub( sub( add( tmp, tmp2 ), a_e ), 1 ), &Overflow ); /* Q15 */
#else
    scale = shl( scale, sub( sub( add( tmp, tmp2 ), a_e ), 1 ) ); /* Q15 */
#endif

    /* iscale = 1.0f / scale; */
    iscale_e = 0;
@@ -329,11 +321,7 @@ void tcx_arith_scale_envelope(
                L_tmp = L_add( L_tmp, L_shl( Mpy_32_16_1( env[k], mult_r( 1147 /*0.035f Q15*/, iscale ) ), iscale_e ) ); /* Q16 */

                tmp = norm_l( L_tmp );
#ifdef BASOP_NOGLOB
                statesi = mult_r( statesi, round_fx_o( L_shl_o( L_tmp, tmp, &Overflow ), &Overflow ) );
#else
                statesi = mult_r( statesi, round_fx( L_shl( L_tmp, tmp ) ) );
#endif
                bits = add( bits, sub( 15, tmp ) );

                tmp = norm_s( statesi );
@@ -420,11 +408,7 @@ void tcx_arith_scale_envelope(
    *s_env_e = sub( add( 15, iscale_e ), tmp );
    move16();
    BASOP_SATURATE_WARNING_OFF_EVS;
#ifdef BASOP_NOGLOB
    a = L_shl_o( 1265000, sub( 15, *s_env_e ), &Overflow );
#else /* BASOP_NOGLOB */
    a = L_shl( 1265000, sub( 15, *s_env_e ) );
#endif
    BASOP_SATURATE_WARNING_ON_EVS;

    FOR( k = 0; k < L_frame; k++ )
+0 −300

File changed.

Preview size limit exceeded, changes collapsed.

+14 −94
Original line number Diff line number Diff line
@@ -86,17 +86,11 @@
 |   Constants and Globals                                                   |
 |___________________________________________________________________________|
*/
#ifndef BASOP_NOGLOB
extern Flag Overflow, Overflow2;
extern Flag Carry;

#else  /* BASOP_NOGLOB */
/* DISABLED TO AVOID GLOBAL VARIABLES */
/*
extern Flag BASOP_Overflow, BASOP_Overflow2;
extern Flag BASOP_Carry;
*/
#endif /* BASOP_NOGLOB */
#define BASOP_SATURATE_WARNING_ON_EVS
#define BASOP_SATURATE_WARNING_OFF_EVS
#define BASOP_SATURATE_ERROR_ON_EVS
@@ -114,36 +108,17 @@ extern Flag BASOP_Carry;

#define MAX_16 (Word16) 0x7fff
#define MIN_16 (Word16) 0x8000
#ifdef BASOP_NOGLOB
void set_overflow( Flag *overflow );
void unset_overflow( Flag *overflow );
void set_carry( Flag *carry );
void unset_carry( Flag *carry );
Flag get_carry( const Flag *carry );
#endif /* BASOP_NOGLOB */
/*___________________________________________________________________________
 |                                                                           |
 |   Prototypes for basic arithmetic operators                               |
 |___________________________________________________________________________|
*/

#ifndef BASOP_NOGLOB
Word16 add( Word16 var1, Word16 var2 );                    /* Short add,           1   */
Word16 sub( Word16 var1, Word16 var2 );                    /* Short sub,           1   */
Word16 abs_s( Word16 var1 );                               /* Short abs,           1   */
Word16 shl( Word16 var1, Word16 var2 );                    /* Short shift left,    1   */
Word16 shr( Word16 var1, Word16 var2 );                    /* Short shift right,   1   */
Word16 mult( Word16 var1, Word16 var2 );                   /* Short mult,          1   */
Word32 L_mult( Word16 var1, Word16 var2 );                 /* Long mult,           1   */
Word16 negate( Word16 var1 );                              /* Short negate,        1   */
Word16 extract_h( Word32 L_var1 );                         /* Extract high,        1   */
Word16 extract_l( Word32 L_var1 );                         /* Extract low,         1   */
Word16 round_fx( Word32 L_var1 );                          /* Round,               1   */
Word32 L_mac( Word32 L_var3, Word16 var1, Word16 var2 );   /* Mac,  1  */
Word32 L_msu( Word32 L_var3, Word16 var1, Word16 var2 );   /* Msu,  1  */
Word32 L_macNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac without
                                                             sat, 1   */
#else                                                      /* BASOP_NOGLOB */
Word16 add( Word16 var1, Word16 var2 );                                      /* Short add,           1   */
Word16 sub( Word16 var1, Word16 var2 );                                      /* Short sub,           1   */
Word16 abs_s( Word16 var1 );                                                 /* Short abs,           1   */
@@ -165,27 +140,9 @@ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow );
Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow );
Word32 L_sub_c( Word32 L_var1, Word32 L_var2 ); /* Long sub with c, 2 */

#endif /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word32 L_msuNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu without
                                                              sat, 1   */
#else                                                      /* BASOP_NOGLOB */
Word32 DEPR_L_msuNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ); /* Msu without
                                                              sat, 1   */
#endif                                                     /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_add( Word32 L_var1, Word32 L_var2 );   /* Long add,        1 */
Word32 L_sub( Word32 L_var1, Word32 L_var2 );   /* Long sub,        1 */
Word32 L_add_c( Word32 L_var1, Word32 L_var2 ); /* Long add with c, 2 */
Word32 L_sub_c( Word32 L_var1, Word32 L_var2 ); /* Long sub with c, 2 */
Word32 L_negate( Word32 L_var1 );               /* Long negate,     1 */
Word16 mult_r( Word16 var1, Word16 var2 );      /* Mult with round, 1 */
Word32 L_shl( Word32 L_var1, Word16 var2 );     /* Long shift left, 1 */
Word32 L_shr( Word32 L_var1, Word16 var2 );     /* Long shift right, 1 */
Word16 shr_r( Word16 var1, Word16 var2 );       /* Shift right with
                                                   round, 2           */
#else                                           /* BASOP_NOGLOB */
Word32 L_add( Word32 L_var1, Word32 L_var2 );                                /* Long add,        1 */
Word32 L_sub( Word32 L_var1, Word32 L_var2 );                                /* Long sub,        1 */
Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry );                 /* Long add with c, 2 */
@@ -196,44 +153,16 @@ Word32 L_shl( Word32 L_var1, Word16 var2 ); /*
Word32 L_shr( Word32 L_var1, Word16 var2 );                                  /* Long shift right, 1 */
Word16 shr_r( Word16 var1, Word16 var2 );                                    /* Shift right with
                                                   round, 2           */
#endif                                          /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word16 mac_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac with
                                                           rounding, 1 */
#else                                                    /* BASOP_NOGLOB */
Word16 mac_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac with
                                                         rounding, 1 */
#endif                                                   /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word16 msu_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu with
                                                           rounding, 1 */
#else                                                    /* BASOP_NOGLOB */
Word16 msu_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu with
                                       rounding, 1 */
#endif                                                   /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_deposit_h( Word16 var1 ); /* 16 bit var1 -> MSB,     1 */
Word32 L_deposit_l( Word16 var1 ); /* 16 bit var1 -> LSB,     1 */
#else                              /* BASOP_NOGLOB */
Word32 L_deposit_h( Word16 var1 );                       /* 16 bit var1 -> MSB,     1 */
Word32 L_deposit_l( Word16 var1 );                       /* 16 bit var1 -> LSB,     1 */
#endif                             /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word32 L_shr_r( Word32 L_var1, Word16 var2 );                     /* Long shift right with
                                     round,             3  */
#else                                         /* BASOP_NOGLOB */
Word32 L_shr_r( Word32 L_var1, Word16 var2 );                                /* Long shift right with
                                                round,             3  */
#endif                                        /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_abs( Word32 L_var1 );            /* Long abs,              1  */
Word32 L_sat( Word32 L_var1 );            /* Long saturation,       4  */
Word16 norm_s( Word16 var1 );             /* Short norm,            1  */
Word16 div_s( Word16 var1, Word16 var2 ); /* Short division,       18  */
Word16 norm_l( Word32 L_var1 );           /* Long norm,             1  */
#else                                     /* BASOP_NOGLOB */
Word32 L_abs( Word32 L_var1 );                                    /* Long abs,              1  */
Word32 DEPR_L_sat_co( Word32 L_var1, Flag Overflow, Flag Carry ); /* Long saturation,       4  */
Word16 norm_s( Word16 var1 );                                     /* Short norm,            1  */
@@ -241,22 +170,15 @@ Word16 div_s( Word16 var1, Word16 var2 ); /*
Word32 div_w( Word32 L_num, Word32 L_den );
Word16 norm_l( Word32 L_var1 ); /* Long norm,             1  */
Word32 L_sat( Word32 L_var1 );  /* Long saturation,       4  */
#endif                                    /* BASOP_NOGLOB */


/*
 * Additional G.723.1 operators
 */
#ifndef BASOP_NOGLOB
Word32 L_mls( Word32, Word16 );      /* Weight FFS; currently assigned 5 */
Word16 div_l( Word32, Word16 );      /* Weight FFS; currently assigned 32 */
Word16 i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */
#else                                /* BASOP_NOGLOB */
Word32 L_mls( Word32, Word16 );           /* Weight FFS; currently assigned 5 */
Word16 div_l( Word32, Word16 );           /* Weight FFS; currently assigned 32 */
Word16 i_mult( Word16 a, Word16 b );      /* Weight FFS; currently assigned 3 */
Word16 DEPR_i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */
#endif                               /* BASOP_NOGLOB */

/*
 *  New shiftless operators, not used in G.729/G.723.1
@@ -264,7 +186,6 @@ Word16 DEPR_i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */
Word32 L_mult0( Word16 v1, Word16 v2 );             /* 32-bit Multiply w/o shift         1 */
Word32 L_mac0( Word32 L_v3, Word16 v1, Word16 v2 ); /* 32-bit Mac w/o shift  1 */
Word32 L_msu0( Word32 L_v3, Word16 v1, Word16 v2 ); /* 32-bit Msu w/o shift  1 */
#ifdef BASOP_NOGLOB

/*
 * Overflowing operators
@@ -295,7 +216,6 @@ Word32 L_shr_ro( Word32 L_var1, Word16 var2, Flag *Overflow );
Word32 L_macNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *Overflow );
Word32 L_msuNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *Overflow );

#endif /* BASOP_NOGLOB */

/*
 * Saturating operators
+0 −4
Original line number Diff line number Diff line
@@ -245,9 +245,7 @@ static Word16 E_LPC_f_lsp_pol_get(
    Word16 Ovf = 0;
    Word16 Q_out;
    Word16 m2;
#ifdef BASOP_NOGLOB
    Flag Overflow;
#endif        /* BASOP_NOGLOB */
    move16(); // move for Ovf = 0

    Q_out = 31 - 23;
@@ -302,9 +300,7 @@ static Word16 E_LPC_f_lsp_pol_get(
    test();
    IF( Overflow > 0 && isMODE1 )
    {
#ifdef BASOP_NOGLOB
        assert( 0 );
#endif /* BASOP_NOGLOB */
        /* If an overflow is detected, redo the computation with 1 bit less */
        Ovf = add( Ovf, 1 );
        Ovf = E_LPC_f_lsp_pol_get( lsp, f, n, Ovf, isMODE1 ); /* Q0 */
+0 −57
Original line number Diff line number Diff line
@@ -306,11 +306,7 @@ void BASOP_Util_Divide_MantExp( Word16 a_m, /*!< Mantissa of dividend a

    /* normalize result */
    postShift = norm_l( m32 );
#ifdef BASOP_NOGLOB
    m = round_fx_o( L_shl( m32, postShift ), &Overflow );
#else
    m = round_fx( L_shl( m32, postShift ) );
#endif

    /* exponent */
    *ptrResult_e = sub( add( add( a_e, sub( 1, b_e ) ), preShift ), postShift );
@@ -326,9 +322,7 @@ static Word16 Sqrt16_common( Word16 m,
                             Word16 e )
{
    Word16 index, frac;
#ifdef BASOP_NOGLOB
    Flag Overflow;
#endif


    assert( ( m >= 0x4000 ) || ( m == 0 ) );
@@ -344,11 +338,7 @@ static Word16 Sqrt16_common( Word16 m,
    if ( m != 0 )
    {
        BASOP_SATURATE_WARNING_OFF_EVS;
#ifdef BASOP_NOGLOB
        m = mac_ro( SqrtTable[index], SqrtDiffTable[index], frac, &Overflow );
#else
        m = mac_r( SqrtTable[index], SqrtDiffTable[index], frac );
#endif
        BASOP_SATURATE_WARNING_ON_EVS;
    }

@@ -371,11 +361,7 @@ static Word32 Sqrt32_common( Word32 m,

    assert( ( m >= 0x40000000 ) || ( m == 0 ) );

#ifdef BASOP_NOGLOB
    m16 = round_fx_o( m, &Overflow );
#else  /* BASOP_NOGLOB */
    m16 = round_fx( m );
#endif /* BASOP_NOGLOB */

    /* get table index (upper 6 bits minus 32) */
    /* index = (m16 >> 9) - 32; */
@@ -388,11 +374,7 @@ static Word32 Sqrt32_common( Word32 m,
    if ( m != 0 )
    {
        BASOP_SATURATE_WARNING_OFF_EVS;
#ifdef BASOP_NOGLOB
        m = L_mac_sat( SqrtTable[index], SqrtDiffTable[index], frac );
#else
        m = L_mac( SqrtTable[index], SqrtDiffTable[index], frac );
#endif
        BASOP_SATURATE_WARNING_ON_EVS;
    }

@@ -439,11 +421,7 @@ static Word32 ISqrt32_common( Word32 m,

    assert( m >= 0x40000000 );

#ifdef BASOP_NOGLOB
    m16 = round_fx_o( m, &Overflow );
#else
    m16 = round_fx( m );
#endif

    /* get table index (upper 6 bits minus 32) */
    /* index = (m16 >> 25) - 32; */
@@ -676,13 +654,8 @@ void BASOP_Util_Sqrt_InvSqrt_MantExp( Word16 mantissa, /*!< mantissa */

    /* interpolate */
    BASOP_SATURATE_WARNING_OFF_EVS;
#ifdef BASOP_NOGLOB
    m = mac_r_sat( SqrtTable[index], SqrtDiffTable[index], frac );
    mi = msu_r_sat( ISqrtTable[index], ISqrtDiffTable[index], frac );
#else
    m = mac_r( SqrtTable[index], SqrtDiffTable[index], frac );
    mi = msu_r( ISqrtTable[index], ISqrtDiffTable[index], frac );
#endif
    BASOP_SATURATE_WARNING_ON_EVS;

    /* handle even/odd exponents */
@@ -929,11 +902,7 @@ Word16 divide3232( Word32 L_num, Word32 L_denom )
    L_denom = L_shl( L_denom, z );

    /* round_fx instead of extract_h improves spectral distortion in E_UTIL_lev_dur (schur version). */
#ifdef BASOP_NOGLOB
    z = div_l( L_num, round_fx_o( L_denom, &Overflow ) );
#else
    z = div_l( L_num, round_fx( L_denom ) );
#endif
    if ( 0 != sign )
    {
        z = negate( z );
@@ -1436,11 +1405,7 @@ Word16 getCosWord16R2(
    BASOP_SATURATE_WARNING_OFF
    sine = negate( sine );
    /* Saturation has been included based on the recommendation from the PC group */
#ifdef BASOP_NOGLOB
    result = msu_r_sat( L_mult( sine, residual ), cosine, -32768 );
#else
    result = msu_r( L_mult( sine, residual ), cosine, -32768 );
#endif
    BASOP_SATURATE_WARNING_ON

    return result;
@@ -1483,11 +1448,7 @@ Word16 getSqrtWord32( Word32 val )
    exp = sub( 31 - 32, exp2 );
    L_temp = Isqrt_lc( L_temp2, &exp ); /* 12 clks */

#ifdef BASOP_NOGLOB
    temp = round_fx_sat( L_temp );
#else
    temp = round_fx( L_temp );
#endif
    L_temp = Mpy_32_16_1( L_temp2, temp ); /* 2 clks */

    L_temp = L_shl( L_temp, sub( exp, exp2 ) );
@@ -1675,13 +1636,8 @@ Word32 norm_llQ31( /* o : normalized result Q31 */

    /* Move MSBit of L_sum into L_c */
    Carry = 0;
#ifdef BASOP_NOGLOB
    L_tmp = L_add_co( L_sum, L_sum, &Carry, &Overflow ); /* L_tmp = L_sum << 1         */
    L_c = L_add_co( L_c, L_c, &Carry, &Overflow );
#else /* BASOP_NOGLOB */
    L_tmp = L_add_c( L_sum, L_sum ); /* L_tmp = L_sum << 1         */
    L_c = L_add_c( L_c, L_c );
#endif
    L_add( 0, 0 );
    test();
    IF( ( L_c != (Word32) 0L ) && ( L_c != (Word32) 0xFFFFFFFFL ) )
@@ -1777,13 +1733,8 @@ Word32 Norm32Norm( const Word32 *x, const Word16 headroom, const Word16 length,
        if ( L_tmp2 >= 0 )
            L_tmp = L_shr( L_tmp, 2 );

#ifdef BASOP_NOGLOB
        tmp = round_fx_sat( L_shl_sat( x[i], shift ) );
        L_tmp = L_mac0_sat( L_tmp, tmp, tmp ); /* exponent = (1-shift*2) , Q(30+shift*2) */
#else
        tmp = round_fx( L_shl( x[i], shift ) );
        L_tmp = L_mac0( L_tmp, tmp, tmp ); /* exponent = (1-shift*2) , Q(30+shift*2) */
#endif
    }

    move16();
@@ -2217,11 +2168,7 @@ Word16 BASOP_Util_Cmp_Mant32Exp /*!< o: flag: result of comparison */
    }

    BASOP_SATURATE_WARNING_OFF_EVS
#ifdef BASOP_NOGLOB
    diff_m = L_sub_sat( a_m, b_m );
#else
    diff_m = L_sub( a_m, b_m );
#endif
    BASOP_SATURATE_WARNING_ON_EVS
    diff_e = sub( a_e, b_e );

@@ -2392,11 +2339,7 @@ void bufferCopyFx(
    {
        FOR( i = 0; i < length; i++ )
        {
#ifdef BASOP_NOGLOB
            *( dest + i ) = shr_sat( *( src + i ), tmp_16 );
#else
            *( dest + i ) = shr( *( src + i ), tmp_16 );
#endif
            move16();
        }
    }
Loading