Loading lib_com/edct_fx.c +30 −9 Original line number Diff line number Diff line Loading @@ -396,10 +396,12 @@ void edct_16fx( const Word16 *px, *pt; Word16 *py; (void) element_mode; #ifndef ISSUE_1836_replace_overflow_libcom #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow; Overflow = 0; move32(); #endif #endif /*COMPLETE: some eDCT sub function are missing */ Loading Loading @@ -456,12 +458,21 @@ void edct_16fx( i2 = shl( i, 1 ); L_tmp = L_mult( x[i2], edct_table[i] ); /*Q(Qx+16) */ #ifdef ISSUE_1836_replace_overflow_libcom Lacc = L_mac_sat( L_tmp, *px, *pt ); /*Q(Qx+16) */ re2[i] = round_fx_sat( L_shl_sat( Lacc, Q_edct ) ); /* Q(Qx+Q_edct) */ move16(); L_tmp = L_mult( *px, edct_table[i] ); /*Q(Qx+16) */ Lacc = L_msu_sat( L_tmp, x[i2], *pt ); /*Q(Qx+16) */ im2[i] = round_fx_sat( L_shl_sat( Lacc, Q_edct ) ); /* Q(Qx+Q_edct) */ #else Lacc = L_mac_o( L_tmp, *px, *pt, &Overflow ); /*Q(Qx+16) */ re2[i] = round_fx_o( L_shl_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx+Q_edct) */ move16(); L_tmp = L_mult( *px, edct_table[i] ); /*Q(Qx+16) */ Lacc = L_msu_o( L_tmp, x[i2], *pt, &Overflow ); /*Q(Qx+16) */ im2[i] = round_fx_o( L_shl_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx+Q_edct) */ #endif move16(); px -= 2; pt--; Loading @@ -487,11 +498,19 @@ void edct_16fx( FOR( i = 0; i < shr( length, 1 ); i++ ) { tmp = mult_r( im2[i], fact ); /*Q(Qx+Q_edct) */ #ifdef ISSUE_1836_replace_overflow_libcom re[i] = sub_sat( re2[i], tmp ); /*Q(Qx+Q_edct) */ #else re[i] = sub_o( re2[i], tmp, &Overflow ); /*Q(Qx+Q_edct) */ #endif move16(); tmp = mult_r( re2[i], fact ); /*Q(Qx+Q_edct) */ #ifdef ISSUE_1836_replace_overflow_libcom im[i] = add_sat( im2[i], tmp ); /*Q(Qx+Q_edct) */ #else im[i] = add_o( im2[i], tmp, &Overflow ); /*Q(Qx+Q_edct) */ #endif move16(); } Loading @@ -503,19 +522,21 @@ void edct_16fx( i2 = shl( i, 1 ); L_tmp = L_mult( re[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ Lacc = L_mac_o( L_tmp, im[i], *pt, &Overflow ); /*Q(Qx+Q_edct+16) */ #ifdef ISSUE_1799_replace_L_shr_o y[i2] = round_fx_o( L_shr_sat( Lacc, Q_edct ), &Overflow ); /* Q(Qx) */ #ifdef ISSUE_1836_replace_overflow_libcom Lacc = L_mac_sat( L_tmp, im[i], *pt ); /*Q(Qx+Q_edct+16) */ y[i2] = round_fx_sat( L_shr_sat( Lacc, Q_edct ) ); /* Q(Qx) */ move16(); L_tmp = L_mult( re[i], edct_table[sub( shr( length, 1 ), add( 1, i ) )] ); /*Q(Qx+Q_edct+16) */ Lacc = L_msu( L_tmp, im[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ *py = round_fx_sat( L_shr_sat( Lacc, Q_edct ) ); /* Q(Qx) */ #else Lacc = L_mac_o( L_tmp, im[i], *pt, &Overflow ); /*Q(Qx+Q_edct+16) */ y[i2] = round_fx_o( L_shr_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx) */ #endif move16(); L_tmp = L_mult( re[i], edct_table[sub( shr( length, 1 ), add( 1, i ) )] ); /*Q(Qx+Q_edct+16) */ Lacc = L_msu( L_tmp, im[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ #ifdef ISSUE_1799_replace_L_shr_o *py = round_fx_o( L_shr_sat( Lacc, Q_edct ), &Overflow ); /* Q(Qx) */ #else *py = round_fx_o( L_shr_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx) */ #endif move16(); Loading Loading
lib_com/edct_fx.c +30 −9 Original line number Diff line number Diff line Loading @@ -396,10 +396,12 @@ void edct_16fx( const Word16 *px, *pt; Word16 *py; (void) element_mode; #ifndef ISSUE_1836_replace_overflow_libcom #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow; Overflow = 0; move32(); #endif #endif /*COMPLETE: some eDCT sub function are missing */ Loading Loading @@ -456,12 +458,21 @@ void edct_16fx( i2 = shl( i, 1 ); L_tmp = L_mult( x[i2], edct_table[i] ); /*Q(Qx+16) */ #ifdef ISSUE_1836_replace_overflow_libcom Lacc = L_mac_sat( L_tmp, *px, *pt ); /*Q(Qx+16) */ re2[i] = round_fx_sat( L_shl_sat( Lacc, Q_edct ) ); /* Q(Qx+Q_edct) */ move16(); L_tmp = L_mult( *px, edct_table[i] ); /*Q(Qx+16) */ Lacc = L_msu_sat( L_tmp, x[i2], *pt ); /*Q(Qx+16) */ im2[i] = round_fx_sat( L_shl_sat( Lacc, Q_edct ) ); /* Q(Qx+Q_edct) */ #else Lacc = L_mac_o( L_tmp, *px, *pt, &Overflow ); /*Q(Qx+16) */ re2[i] = round_fx_o( L_shl_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx+Q_edct) */ move16(); L_tmp = L_mult( *px, edct_table[i] ); /*Q(Qx+16) */ Lacc = L_msu_o( L_tmp, x[i2], *pt, &Overflow ); /*Q(Qx+16) */ im2[i] = round_fx_o( L_shl_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx+Q_edct) */ #endif move16(); px -= 2; pt--; Loading @@ -487,11 +498,19 @@ void edct_16fx( FOR( i = 0; i < shr( length, 1 ); i++ ) { tmp = mult_r( im2[i], fact ); /*Q(Qx+Q_edct) */ #ifdef ISSUE_1836_replace_overflow_libcom re[i] = sub_sat( re2[i], tmp ); /*Q(Qx+Q_edct) */ #else re[i] = sub_o( re2[i], tmp, &Overflow ); /*Q(Qx+Q_edct) */ #endif move16(); tmp = mult_r( re2[i], fact ); /*Q(Qx+Q_edct) */ #ifdef ISSUE_1836_replace_overflow_libcom im[i] = add_sat( im2[i], tmp ); /*Q(Qx+Q_edct) */ #else im[i] = add_o( im2[i], tmp, &Overflow ); /*Q(Qx+Q_edct) */ #endif move16(); } Loading @@ -503,19 +522,21 @@ void edct_16fx( i2 = shl( i, 1 ); L_tmp = L_mult( re[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ Lacc = L_mac_o( L_tmp, im[i], *pt, &Overflow ); /*Q(Qx+Q_edct+16) */ #ifdef ISSUE_1799_replace_L_shr_o y[i2] = round_fx_o( L_shr_sat( Lacc, Q_edct ), &Overflow ); /* Q(Qx) */ #ifdef ISSUE_1836_replace_overflow_libcom Lacc = L_mac_sat( L_tmp, im[i], *pt ); /*Q(Qx+Q_edct+16) */ y[i2] = round_fx_sat( L_shr_sat( Lacc, Q_edct ) ); /* Q(Qx) */ move16(); L_tmp = L_mult( re[i], edct_table[sub( shr( length, 1 ), add( 1, i ) )] ); /*Q(Qx+Q_edct+16) */ Lacc = L_msu( L_tmp, im[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ *py = round_fx_sat( L_shr_sat( Lacc, Q_edct ) ); /* Q(Qx) */ #else Lacc = L_mac_o( L_tmp, im[i], *pt, &Overflow ); /*Q(Qx+Q_edct+16) */ y[i2] = round_fx_o( L_shr_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx) */ #endif move16(); L_tmp = L_mult( re[i], edct_table[sub( shr( length, 1 ), add( 1, i ) )] ); /*Q(Qx+Q_edct+16) */ Lacc = L_msu( L_tmp, im[i], edct_table[i] ); /*Q(Qx+Q_edct+16) */ #ifdef ISSUE_1799_replace_L_shr_o *py = round_fx_o( L_shr_sat( Lacc, Q_edct ), &Overflow ); /* Q(Qx) */ #else *py = round_fx_o( L_shr_o( Lacc, Q_edct, &Overflow ), &Overflow ); /* Q(Qx) */ #endif move16(); Loading