Commit a48e81e3 authored by sagnowski's avatar sagnowski
Browse files

Replace overflowing basops, pt 2

parent 42a132bd
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -177,10 +177,17 @@ Word32 Dot_product12( /* (o) Q31: normalized result (1 < va
{
    Word16 i, sft;
    Word32 L_sum;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */

    L_sum = L_mac(1, x[0], y[0]);
    FOR (i = 1; i < lg; i++)
#ifdef BASOP_NOGLOB
        L_sum = L_mac_o(L_sum, x[i], y[i], &Overflow);
#else /* BASOP_NOGLOB */
        L_sum = L_mac(L_sum, x[i], y[i]);
#endif /* BASOP_NOGLOB */

    /* Normalize acc in Q31 */

@@ -211,6 +218,9 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 <
{
    Word16 i, sft, tmp;
    Word32 L_sum;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */


    L_sum = 0;   /* just to avoid superflous compiler warning about uninitialized use of L_sum */
@@ -220,7 +230,11 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 <
        L_sum = L_mac(1, x[0], x[0]);
        FOR (i = 1; i < lg; i++)
        {
#ifdef BASOP_NOGLOB
            L_sum = L_mac_o(L_sum, x[i], x[i], &Overflow);
#else /* BASOP_NOGLOB */
            L_sum = L_mac(L_sum, x[i], x[i]);
#endif /* BASOP_NOGLOB */
        }
    }
    IF (expi < 0)
+7 −0
Original line number Diff line number Diff line
@@ -71,9 +71,16 @@ Word32 Mpy_32_16_r (Word32 L_var1, Word16 var2) {
Word32 Mpy_32_32 (Word32 L_var1, Word32 L_var2) {
  Word32 L_var_out;
  Word64 L64_var1; 
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */

  L64_var1 = ((Word64)L_var1 * L_var2); 
#ifdef BASOP_NOGLOB
  L64_var1 = W_shl_o (L64_var1, 1, &Overflow);
#else /* BASOP_NOGLOB */
  L64_var1 = W_shl (L64_var1, 1);
#endif /* BASOP_NOGLOB */
  L_var_out = W_extract_h (L64_var1 );
#if (WMOPS)
    multiCounter[currCounter].Mpy_32_32++;
+7 −0
Original line number Diff line number Diff line
@@ -302,10 +302,17 @@ static Word32 Sqrt32_common(Word32 m,
                            Word16 e)
{
    Word16 m16, index, frac;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */

    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; */
+7 −0
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@ void bitalloc_fx (
    Word16 diff, temp;
    Word16 fac;
    Word16 ii;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */
    Word16 SFM_thr = SFM_G1G2;
    move16();

@@ -50,7 +53,11 @@ void bitalloc_fx (
        move16();
        FOR ( m=1; m<im; m++)
        {
#ifdef BASOP_NOGLOB
            v = sub_o( temp, y[m] , &Overflow);
#else /* BASOP_NOGLOB */
            v = sub( temp, y[m] );
#endif /* BASOP_NOGLOB */
            temp = s_max(temp, y[m]);
            if ( v < 0 )
            {
+20 −0
Original line number Diff line number Diff line
@@ -65,6 +65,9 @@ void CNG_exc_fx(
    Word16 exp_pow;
    Word32 L_tmp2;
    Word16 *pt_fft_io;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */

    /*------------------------------------------------------------------*
     * Initializations
@@ -476,7 +479,11 @@ void CNG_exc_fx(
            test();
            IF( NE_32(last_core_brate,SID_2k40)&&NE_32(last_core_brate,SID_1k75)&&NE_32(last_core_brate,FRAME_NO_DATA)&&EQ_32(core_brate,SID_2k40))
            {
#ifdef BASOP_NOGLOB
                IF ( GT_32(L_tmp,L_shl_o(1,sub(31,exp), &Overflow)))
#else /* BASOP_NOGLOB */
                IF ( GT_32(L_tmp,L_shl(1,sub(31,exp))))
#endif /* BASOP_NOGLOB */
                {
                    L_tmp = L_shl(1,sub(31,exp));
                }
@@ -552,7 +559,11 @@ void CNG_exc_fx(
        L_tmp = L_deposit_h(tmp);
        L_tmp = Isqrt_lc(L_tmp, &exp); /*Q(31-exp)*/

#ifdef BASOP_NOGLOB
        ftmp = extract_h(L_shl_o(L_tmp,exp, &Overflow));/* Q15 */
#else /* BASOP_NOGLOB */
        ftmp = extract_h(L_shl(L_tmp,exp));/* Q15 */
#endif /* BASOP_NOGLOB */
        FOR (i=0; i<L_frame; i++)
        {
            /* fft_io[i] *= ftmp;*/
@@ -614,6 +625,9 @@ void cng_params_postupd_fx(
    Word16 CNG_mode;
    Word16 ptr;
    Word32 last_active_brate;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
#endif /* BASOP_NOGLOB */

    ptr = add( sub(ho_circ_ptr, *cng_buf_cnt), 1);
    if( ptr < 0 )
@@ -637,9 +651,15 @@ void cng_params_postupd_fx(
        FOR(i = 0; i < NUM_ENV_CNG; i++)
        {
            /* sp[i] = 2.0f*(*ptR * *ptR + *ptI * *ptI)/L_FFT; */
#ifdef BASOP_NOGLOB
            L_tmp = L_mult_o(*ptR, *ptR, &Overflow);/* 2*Q_exc+1 */
            L_tmp = L_add_o(L_tmp, L_mult_o(*ptI, *ptI, &Overflow), &Overflow);/* 2*Q_exc+1 */
            L_tmp = L_add_o(L_tmp, L_tmp, &Overflow);/* 2*Q_exc+1 */
#else /* BASOP_NOGLOB */
            L_tmp = L_mult(*ptR, *ptR);/* 2*Q_exc+1 */
            L_tmp = L_add(L_tmp, L_mult(*ptI, *ptI));/* 2*Q_exc+1 */
            L_tmp = L_add(L_tmp, L_tmp);/* 2*Q_exc+1 */
#endif /* BASOP_NOGLOB */
            L_tmp = Mult_32_16(L_tmp, 128);/* 2*Q_exc+1 */
            tmp = add(add(Q_exc, Q_exc), 1);
            sp[i] = L_shr(L_tmp, sub(tmp, 6));
Loading