Commit 0b54e7c8 authored by JÜRGEN Gerstacker's avatar JÜRGEN Gerstacker
Browse files

issue _1965_ fix

parent 788eaa26
Loading
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -2079,26 +2079,29 @@ Word32 norm_llQ31( /* o : normalized result Q31 */
)
{
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
    L_sum =w_norm_llQ31( (Word64)L_c<<32 | L_sum, exp);
    return L_sum;
//    Word16 exp2=*exp;
//    Word32 L_sumOld= L_sum;
//    Word32 L_cOld= L_c;
//    Word32 L_sum2 =w_norm_llQ31( ((Word64)L_c<<32) | (UWord32)L_sum, &exp2);
    L_sum =w_norm_llQ31( ((Word64)L_c<<32) | (UWord32)L_sum, exp);
#else
    Word16 i;
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOWxxx
    Word64 W_tmp;
#else
    Word32 L_tmp;
#endif
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
#if !defined( ISSUE_1836_replace_overflow_libcom ) && !defined( FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW )
#if !defined( ISSUE_1836_replace_overflow_libcom ) && !defined( FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOWxxx )
    Flag Overflow = 0;
#endif
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
#ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOWxxx
    Flag Carry = 0;
#endif
#endif /* BASOP_NOGLOB */

    /* Move MSBit of L_sum into L_c */
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOWxxx
    W_tmp = W_add( L_sum, L_sum ); /* W_tmp = L_sum << 1         */
    L_c = L_add( L_add( L_c, L_c ), W_extract_h( W_tmp ) );
#else
@@ -2118,7 +2121,7 @@ Word32 norm_llQ31( /* o : normalized result Q31 */
        i = norm_l( L_c );
        L_c = L_shl( L_c, i );
        i = sub( 31, i ); /* positive exponent  */
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW
#ifdef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOWxxx
        L_sum = W_lshr( W_tmp, 1 ); /* L_sum with MSBit=0 */
        L_sum = L_lshr( L_sum, i );
#else
@@ -2140,8 +2143,15 @@ Word32 norm_llQ31( /* o : normalized result Q31 */
    }
    *exp = i;
    move16();
    return L_sum;
#if 0
    char isnotok = *exp != exp2 || L_sum!=L_sum2;
    if (isnotok) fprintf(stderr, "%s: %s:%d: (0x%08x, 0x%08x)  0x%08x 0x%08x %d %d\n", isnotok?"ERROR ":"IS_OK ",
        __FILE__,__LINE__,
       L_cOld,L_sumOld,
       L_sum, L_sum2, *exp, exp2);
#endif
#endif
    return L_sum;
}