Commit eb09ec91 authored by ber's avatar ber
Browse files

Change behaviour of div replacement: if div replacement is not bitexact but...

Change behaviour of div replacement: if div replacement is not bitexact but replaces div by (isqrt)*(isqrt) wrap changes in REPLACEMENT macro
parent 66dea27f
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1038,15 +1038,17 @@ Word32 div_w( Word32 L_num, Word32 L_den )
}

/* Replace BASOP_Util_Divide3232_Scale_cadence() with simplified function which calculates an approximation */
//#define BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT
//#define func_BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT

#ifdef BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT
#ifdef func_BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT
Word32 BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT( Word32 x, Word32 y, Word16 *s )
{
    Word16 exp = 0;
    Word32 tmp32 = ISqrt32( y, &exp );
    tmp32 = Mpy_32_32( tmp32, tmp32 );
    exp = imult1616( 2, exp );

    if (L_sub(x, 0x7FFFFFFF) != 0)
      tmp32 = Mpy_32_32( tmp32, x );

    *s = exp;
+10 −6
Original line number Diff line number Diff line
@@ -4560,13 +4560,17 @@ static void formulate2x2MixingMatrix_fx(
        q_maxEneDiv = add( sub( 31, exp ), sub( Q30, 62 ) );
    }
    IF( maxEne_fx != 0 )
    {
        exp = sub( 31, q_maxEne );
        maxEneDiv_fx = ISqrt32( maxEne_fx, &exp );
        maxEneDiv_fx = Mpy_32_32( maxEneDiv_fx, maxEneDiv_fx );
        exp = imult1616( 2, exp );
        q_maxEneDiv = sub( 31, exp );
#ifdef func_BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT
    { /*use approximation*/
        maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence_REPLACEMENT( 0x7FFFFFFF, maxEne_fx, &exp );
        q_maxEneDiv = add( sub( 31, exp ), sub( 31, q_maxEne ) );
    }
#else
    { /*Use old style, instead*/
        maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, maxEne_fx, &exp );
        q_maxEneDiv = add( sub( 31, exp ), sub( Q30, q_maxEne ) );
    }
#endif
#else
    // 4611686 = Q62
    IF( maxEne_fx == 0 )