Commit 13f79214 authored by Mohammadreza Naghibzadeh's avatar Mohammadreza Naghibzadeh
Browse files

replaced W_mult_32_32 with W_mult0_32_32 to avoid a 1-bit shift in W_mac_32_32.

parent 27eaae32
Loading
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -450,23 +450,23 @@ void hp20_fx_32(
    Word64 W_sum, W_y0, W_y1, W_y2;
    Word32 x0, x1, x2;

    W_sum = W_mult_32_32( b2_fx, mem_fx[2] );       /* b2*x2 */
    W_sum = W_mac_32_32( W_sum, b1_fx, mem_fx[3] ); /* b1*x1 */
    W_sum = W_mult0_32_32( b2_fx, mem_fx[2] );                 /* b2*x2 */
    W_sum = W_add( W_sum, W_mult0_32_32( b1_fx, mem_fx[3] ) ); /* b1*x1 */
    x2 = L_shr( signal_fx[0], prescale );
    W_sum = W_mac_32_32( W_sum, b2_fx, x2 );        /* b2*x0 */
    W_sum = W_mac_32_32( W_sum, mem_fx[0], a2_fx ); /* y2*a2 */
    W_sum = W_mac_32_32( W_sum, mem_fx[1], a1_fx ); /* y1*a1 */
    W_y2 = W_shl( W_sum, HP20_COEFF_SCALE );
    W_sum = W_add( W_sum, W_mult0_32_32( b2_fx, x2 ) );        /* b2*x0 */
    W_sum = W_add( W_sum, W_mult0_32_32( mem_fx[0], a2_fx ) ); /* y2*a2 */
    W_sum = W_add( W_sum, W_mult0_32_32( mem_fx[1], a1_fx ) ); /* y1*a1 */
    W_y2 = W_shl( W_sum, add( 1, HP20_COEFF_SCALE ) );
    signal_fx[0] = W_round64_L( W_shl( W_y2, prescale ) );
    move32();

    W_sum = W_mult_32_32( b2_fx, mem_fx[3] ); /* b2*x2 */
    W_sum = W_mac_32_32( W_sum, b1_fx, x2 );  /* b1*x1 */
    W_sum = W_mult0_32_32( b2_fx, mem_fx[3] );          /* b2*x2 */
    W_sum = W_add( W_sum, W_mult0_32_32( b1_fx, x2 ) ); /* b1*x1 */
    x1 = L_shr( signal_fx[1], prescale );
    W_sum = W_mac_32_32( W_sum, b2_fx, x1 );                  /* b2*x0 */
    W_sum = W_mac_32_32( W_sum, mem_fx[1], a2_fx );           /* y2*a2 */
    W_sum = W_mac_32_32( W_sum, W_round64_L( W_y2 ), a1_fx ); /* y1*a1 */
    W_y1 = W_shl( W_sum, HP20_COEFF_SCALE );
    W_sum = W_add( W_sum, W_mult0_32_32( b2_fx, x1 ) );                  /* b2*x0 */
    W_sum = W_add( W_sum, W_mult0_32_32( mem_fx[1], a2_fx ) );           /* y2*a2 */
    W_sum = W_add( W_sum, W_mult0_32_32( W_round64_L( W_y2 ), a1_fx ) ); /* y1*a1 */
    W_y1 = W_shl( W_sum, add( 1, HP20_COEFF_SCALE ) );
    signal_fx[1] = W_round64_L( W_shl( W_y1, prescale ) );
    move32();

@@ -478,13 +478,13 @@ void hp20_fx_32(

    FOR( i = 2; i < lg; i++ )
    {
        W_sum = W_mult_32_32( b2_fx, x2 );       /* b2*x2 */
        W_sum = W_mac_32_32( W_sum, b1_fx, x1 ); /* b1*x1 */
        W_sum = W_mult0_32_32( b2_fx, x2 );                 /* b2*x2 */
        W_sum = W_add( W_sum, W_mult0_32_32( b1_fx, x1 ) ); /* b1*x1 */
        x0 = L_shr( signal_fx[i], prescale_current_frame );
        W_sum = W_mac_32_32( W_sum, b2_fx, x0 );                  /* b2*x0 */
        W_sum = W_mac_32_32( W_sum, W_round64_L( W_y2 ), a2_fx ); /* y2*a2 */
        W_sum = W_mac_32_32( W_sum, W_round64_L( W_y1 ), a1_fx ); /* y1*a1 */
        W_y0 = W_shl( W_sum, HP20_COEFF_SCALE );
        W_sum = W_add( W_sum, W_mult0_32_32( b2_fx, x0 ) );                  /* b2*x0 */
        W_sum = W_add( W_sum, W_mult0_32_32( W_round64_L( W_y2 ), a2_fx ) ); /* y2*a2 */
        W_sum = W_add( W_sum, W_mult0_32_32( W_round64_L( W_y1 ), a1_fx ) ); /* y1*a1 */
        W_y0 = W_shl( W_sum, add( 1, HP20_COEFF_SCALE ) );

        signal_fx[i] = W_round64_L( W_shl( W_y0, prescale_current_frame ) );
        move32();