Commit 7fb713a5 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

LTV test for 2633 MR - Testing only

parent fea01257
Loading
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -3495,10 +3495,11 @@ Word16 rand_gauss_fix(
    Word16 *seed )
{
    Word32 temp;
    Word32 num;

    temp = shr( own_random( seed ), Q2 );
    temp = L_add( temp, shr( own_random( seed ), Q2 ) );
    temp = L_add( temp, shr( own_random( seed ), Q2 ) );
    num = shr( own_random( seed ), Q2 );
    temp = L_add( num, num );
    temp = L_add( temp, num );

    *x = (Word16) temp;
    move32();
+88 −136
Original line number Diff line number Diff line
@@ -4727,13 +4727,13 @@ static void fft_len16(
    cmplx t[4];
    cmplx y[16];

    s[0] = CL_shr( x[0], SCALEFACTOR16 ); // Qx
    s[0] = x[0]; // Qx
    move64();
    s[1] = CL_shr( x[4], SCALEFACTOR16 ); // Qx
    s[1] = x[4]; // Qx
    move64();
    s[2] = CL_shr( x[8], SCALEFACTOR16 ); // Qx
    s[2] = x[8]; // Qx
    move64();
    s[3] = CL_shr( x[12], SCALEFACTOR16 ); // Qx
    s[3] = x[12]; // Qx
    move64();

    t[0] = CL_add( s[0], s[2] );
@@ -4754,13 +4754,13 @@ static void fft_len16(
    y[3] = CL_add( t[1], t[3] );
    move64();

    s[0] = CL_shr( x[1], SCALEFACTOR16 ); // Qx
    s[0] = x[1]; // Qx
    move64();
    s[1] = CL_shr( x[5], SCALEFACTOR16 ); // Qx
    s[1] = x[5]; // Qx
    move64();
    s[2] = CL_shr( x[9], SCALEFACTOR16 ); // Qx
    s[2] = x[9]; // Qx
    move64();
    s[3] = CL_shr( x[13], SCALEFACTOR16 ); // Qx
    s[3] = x[13]; // Qx
    move64();

    t[0] = CL_add( s[0], s[2] );
@@ -4781,13 +4781,13 @@ static void fft_len16(
    y[7] = CL_add( t[1], t[3] );
    move64();

    s[0] = CL_shr( x[2], SCALEFACTOR16 ); // Qx
    s[0] = x[2]; // Qx
    move64();
    s[1] = CL_shr( x[6], SCALEFACTOR16 ); // Qx
    s[1] = x[6]; // Qx
    move64();
    s[2] = CL_shr( x[10], SCALEFACTOR16 ); // Qx
    s[2] = x[10]; // Qx
    move64();
    s[3] = CL_shr( x[14], SCALEFACTOR16 ); // Qx
    s[3] = x[14]; // Qx
    move64();

    t[0] = CL_add( s[0], s[2] );
@@ -4810,13 +4810,13 @@ static void fft_len16(
    y[11] = CL_add( t[1], t[3] );
    move64();

    s[0] = CL_shr( x[3], SCALEFACTOR16 ); // Qx
    s[0] = x[3]; // Qx
    move64();
    s[1] = CL_shr( x[7], SCALEFACTOR16 ); // Qx
    s[1] = x[7]; // Qx
    move64();
    s[2] = CL_shr( x[11], SCALEFACTOR16 ); // Qx
    s[2] = x[11]; // Qx
    move64();
    s[3] = CL_shr( x[15], SCALEFACTOR16 ); // Qx
    s[3] = x[15]; // Qx
    move64();

    t[0] = CL_add( s[0], s[2] );
@@ -4978,15 +4978,15 @@ static void fft_len20_fx(
    cmplx tt[4];
    cmplx y[20];

    xx[0] = CL_shr( x[0], SCALEFACTOR20 ); // Qx
    xx[0] = x[0]; // CL_shr( x[0], SCALEFACTOR20 ); // Qx
    move64();
    xx[1] = CL_shr( x[16], SCALEFACTOR20 ); // Qx
    xx[1] = x[16]; // CL_shr( x[16], SCALEFACTOR20 ); // Qx
    move64();
    xx[2] = CL_shr( x[12], SCALEFACTOR20 ); // Qx
    xx[2] = x[12]; // CL_shr( x[12], SCALEFACTOR20 ); // Qx
    move64();
    xx[3] = CL_shr( x[8], SCALEFACTOR20 ); // Qx
    xx[3] = x[8]; // CL_shr( x[8], SCALEFACTOR20 ); // Qx
    move64();
    xx[4] = CL_shr( x[4], SCALEFACTOR20 ); // Qx
    xx[4] = x[4]; // CL_shr( x[4], SCALEFACTOR20 ); // Qx
    move64();

    s[0] = CL_add( xx[1], xx[4] );
@@ -5023,15 +5023,15 @@ static void fft_len20_fx(
    y[12] = CL_msu_j( s[2], s[3] );
    move64();

    xx[0] = CL_shr( x[5], SCALEFACTOR20 );
    xx[0] = x[5]; // CL_shr( x[5], SCALEFACTOR20 );
    move64();
    xx[1] = CL_shr( x[1], SCALEFACTOR20 );
    xx[1] = x[1]; // CL_shr( x[1], SCALEFACTOR20 );
    move64();
    xx[2] = CL_shr( x[17], SCALEFACTOR20 );
    xx[2] = x[17]; // CL_shr( x[17], SCALEFACTOR20 );
    move64();
    xx[3] = CL_shr( x[13], SCALEFACTOR20 );
    xx[3] = x[13]; // CL_shr( x[13], SCALEFACTOR20 );
    move64();
    xx[4] = CL_shr( x[9], SCALEFACTOR20 );
    xx[4] = x[9]; // CL_shr( x[9], SCALEFACTOR20 );
    move64();

    s[0] = CL_add( xx[1], xx[4] );
@@ -5068,15 +5068,15 @@ static void fft_len20_fx(
    y[13] = CL_msu_j( s[2], s[3] );
    move64();

    xx[0] = CL_shr( x[10], SCALEFACTOR20 );
    xx[0] = x[10]; // CL_shr( x[10], SCALEFACTOR20 );
    move64();
    xx[1] = CL_shr( x[6], SCALEFACTOR20 );
    xx[1] = x[6]; // CL_shr( x[6], SCALEFACTOR20 );
    move64();
    xx[2] = CL_shr( x[2], SCALEFACTOR20 );
    xx[2] = x[2]; // CL_shr( x[2], SCALEFACTOR20 );
    move64();
    xx[3] = CL_shr( x[18], SCALEFACTOR20 );
    xx[3] = x[18]; // CL_shr( x[18], SCALEFACTOR20 );
    move64();
    xx[4] = CL_shr( x[14], SCALEFACTOR20 );
    xx[4] = x[14]; // CL_shr( x[14], SCALEFACTOR20 );
    move64();

    s[0] = CL_add( xx[1], xx[4] );
@@ -5113,15 +5113,15 @@ static void fft_len20_fx(
    y[14] = CL_msu_j( s[2], s[3] );
    move64();

    xx[0] = CL_shr( x[15], SCALEFACTOR20 );
    xx[0] = x[15]; // CL_shr( x[15], SCALEFACTOR20 );
    move64();
    xx[1] = CL_shr( x[11], SCALEFACTOR20 );
    xx[1] = x[11]; // CL_shr( x[11], SCALEFACTOR20 );
    move64();
    xx[2] = CL_shr( x[7], SCALEFACTOR20 );
    xx[2] = x[7]; // CL_shr( x[7], SCALEFACTOR20 );
    move64();
    xx[3] = CL_shr( x[3], SCALEFACTOR20 );
    xx[3] = x[3]; // CL_shr( x[3], SCALEFACTOR20 );
    move64();
    xx[4] = CL_shr( x[19], SCALEFACTOR20 );
    xx[4] = x[19]; // CL_shr( x[19], SCALEFACTOR20 );
    move64();

    s[0] = CL_add( xx[1], xx[4] );
@@ -6501,84 +6501,66 @@ static void fft_lenN(
            cmplx s[8];
            cmplx y[8];

            test();
            test();
            test();
            test();
            IF( EQ_16( dim1, 30 ) || EQ_16( dim1, 20 ) || EQ_16( dim1, 15 ) || EQ_16( dim1, 10 ) || EQ_16( dim1, 5 ) )
            {
                FOR( i = 0; i < dim1; i++ )
                {
                    {
                        y[0] = xx[i]; // y[0] = xx[i + 0 * dim1]
            y[1] = xx[1 * dim1];
            move64();
                    };
                    IF( i == 0 )
                    {
                        {
                            y[1] = xx[( i + ( 1 * dim1 ) )];
            y[2] = xx[2 * dim1];
            move64();
                        };
                        {
                            y[2] = xx[( i + ( 2 * dim1 ) )];
            y[3] = xx[3 * dim1];
            move64();
                        };
                        {
                            y[3] = xx[( i + ( 3 * dim1 ) )];
            y[4] = xx[4 * dim1];
            move64();
                        };
                        {
                            y[4] = xx[( i + ( 4 * dim1 ) )];
            y[5] = xx[5 * dim1];
            move64();
                        };
                        {
                            y[5] = xx[( i + ( 5 * dim1 ) )];
            y[6] = xx[6 * dim1];
            move64();
                        };
                        {
                            y[6] = xx[( i + ( 6 * dim1 ) )];
            y[7] = xx[7 * dim1];
            move64();
                        };

            test();
            test();
            IF( EQ_16( dim1, 8 ) || EQ_16( dim1, 16 ) || EQ_16( dim1, 32 ) )
            {
                            y[7] = xx[( i + ( 7 * dim1 ) )];
                FOR( i = 0; i < dim1; i++ )
                {
                    {
                        y[0] = xx[i]; /* y[0] = xx[i + 0 * dim1] */
                        move64();
                    };
                    }
                    ELSE
                    IF( i > 0 )
                    {
                        {
                            y[1] = CL_mac_j( CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 1 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 1 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[1] = CL_mac_j( CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 1 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 1 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[2] = CL_mac_j( CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 2 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 2 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[2] = CL_mac_j( CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 2 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 2 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[3] = CL_mac_j( CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 3 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 3 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[3] = CL_mac_j( CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 3 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 3 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[4] = CL_mac_j( CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 4 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 4 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[4] = CL_mac_j( CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 4 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 4 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[5] = CL_mac_j( CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 5 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 5 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[5] = CL_mac_j( CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 5 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 5 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[6] = CL_mac_j( CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 6 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 6 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[6] = CL_mac_j( CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 6 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 6 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[7] = CL_mac_j( CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 7 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 7 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[7] = CL_mac_j( CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 7 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 7 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                    }
@@ -6625,7 +6607,7 @@ static void fft_lenN(
                    s[7] = CL_conjugate( s[7] );
                    move64();

                    x[i] = CL_add( s[0], s[1] ); /*x[add(i + i_mult(0 , dim1)] = CL_add( s[0], s[1] )*/
                    x[i] = CL_add( s[0], s[1] ); /*x[i + 0 * dim1] = CL_add( s[0], s[1] )*/
                    move64();
                    x[( i + ( 1 * dim1 ) )] = CL_add( s[5], s[6] );
                    move64();
@@ -6645,78 +6627,48 @@ static void fft_lenN(
            }
            ELSE
            {

                FOR( i = 0; i < dim1; i++ )
                {
                    {
                        y[0] = xx[i]; /* y[0] = xx[i + 0 * dim1] */
                        move64();
                    };
                    IF( i == 0 )
                    {
                        {
                            y[1] = xx[( i + ( 1 * dim1 ) )];
                            move64();
                        };
                        {
                            y[2] = xx[( i + ( 2 * dim1 ) )];
                            move64();
                        };
                        {
                            y[3] = xx[( i + ( 3 * dim1 ) )];
                            move64();
                        };
                        {
                            y[4] = xx[( i + ( 4 * dim1 ) )];
                            move64();
                        };
                        {
                            y[5] = xx[( i + ( 5 * dim1 ) )];
                            move64();
                        };
                        {
                            y[6] = xx[( i + ( 6 * dim1 ) )];
                        y[0] = xx[i]; // y[0] = xx[i + 0 * dim1]
                        move64();
                    };
                        {
                            y[7] = xx[( i + ( 7 * dim1 ) )];
                            move64();
                        };
                    }
                    ELSE
                    IF( i > 0 )
                    {
                        {
                            y[1] = CL_mac_j( CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 1 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 1 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[1] = CL_mac_j( CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 1 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 1 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 1 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[2] = CL_mac_j( CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 2 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 2 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[2] = CL_mac_j( CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 2 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 2 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 2 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[3] = CL_mac_j( CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 3 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 3 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[3] = CL_mac_j( CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 3 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 3 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 3 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[4] = CL_mac_j( CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 4 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 4 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[4] = CL_mac_j( CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 4 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 4 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 4 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[5] = CL_mac_j( CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 5 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 5 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[5] = CL_mac_j( CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 5 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 5 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 5 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[6] = CL_mac_j( CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 6 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 6 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[6] = CL_mac_j( CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 6 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 6 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 6 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                        {
                            y[7] = CL_mac_j( CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( sc * i ) + ( ( sc * 7 ) * dim1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( sc * 7 ) * dim1 ) ) + 1 ) - Woff )] ) ); // Qx
                            y[7] = CL_mac_j( CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( sc * i ) + ( ( ( sc * 7 ) * dim1 ) << 1 ) ) - Woff )] ),
                                             CL_scale( xx[( i + ( 7 * dim1 ) )], W[( ( ( ( sc * i ) + ( ( ( sc * 7 ) * dim1 ) << 1 ) ) + 1 ) - Woff )] ) ); // Qx
                            move64();
                        };
                    }
@@ -6763,7 +6715,7 @@ static void fft_lenN(
                    s[7] = CL_conjugate( s[7] );
                    move64();

                    x[i] = CL_add( s[0], s[1] ); /*x[i + 0 * dim1] = CL_add( s[0], s[1] )*/
                    x[i] = CL_add( s[0], s[1] ); /*x[add(i + i_mult(0 , dim1)] = CL_add( s[0], s[1] )*/
                    move64();
                    x[( i + ( 1 * dim1 ) )] = CL_add( s[5], s[6] );
                    move64();
@@ -7173,7 +7125,7 @@ void rfft_fx(
                move32();
                x[( length - ( i << 1 ) )] = Mpy_32_16_1( L_add( t1, t3 ), 16384 /*0.5.Q15*/ );
                move32();
                x[( ( length - ( i << 1 ) ) + 1 )] = Mpy_32_16_1( L_negate( L_add( t2, t4 ) ), 16384 /*0.5.Q15*/ );
                x[( ( length - ( i << 1 ) ) + 1 )] = Mpy_32_16_1( ( L_add( t2, t4 ) ), -16384 /*0.5.Q15*/ );
                move32();
            }

+29 −86
Original line number Diff line number Diff line
@@ -469,8 +469,9 @@ void hp20_fx_32(
{
    Word16 i;
    Word32 a1_fx, a2_fx, b1_fx, b2_fx;
    Word16 Qx0, Qx1, Qx2, Qy1, Qprev_y1, Qy2, Qprev_y2, Qmin;
    Word64 x0_fx64, x1_fx64, x2_fx64, y0_fx64, y1_fx64, y2_fx64, R1, R2, R3, R4, R5;
    Word16 Qy1, Qy2, Qmin;
    Word64 y0_fx64, y1_fx64, y2_fx64;
    Word32 x0, x1, x2;

    IF( EQ_32( Fs, 8000 ) )
    {
@@ -521,20 +522,22 @@ void hp20_fx_32(
    move32();
    move32();

    Qprev_y1 = extract_l( mem_fx[4] );
    Qprev_y2 = extract_l( mem_fx[5] );
    y1_fx64 = W_deposit32_l( mem_fx[0] );
    y2_fx64 = W_deposit32_l( mem_fx[1] );
    x0_fx64 = W_deposit32_l( mem_fx[2] );
    x1_fx64 = W_deposit32_l( mem_fx[3] );
    y1_fx64 = W_add( W_deposit32_l( mem_fx[0] ), W_deposit32_h( mem_fx[1] ) );
    y2_fx64 = W_add( W_deposit32_l( mem_fx[2] ), W_deposit32_h( mem_fx[3] ) );

    x0 = mem_fx[4];
    move32();
    x1 = mem_fx[5];
    move32();

    FOR( i = 0; i < lg; i++ )
    {
        x2_fx64 = x1_fx64;
        move64();
        x1_fx64 = x0_fx64;
        move64();
        x0_fx64 = W_deposit32_l( signal_fx[i] );
        x2 = x1;
        move32();
        x1 = x0;
        move32();
        x0 = signal_fx[i];
        move32();

        Qy1 = W_norm( y1_fx64 );
        if ( y1_fx64 == 0 )
@@ -542,9 +545,6 @@ void hp20_fx_32(
            Qy1 = 62;
            move16();
        }
        Qy1 = sub( Qy1, 34 );
        R1 = W_mult0_32_32( W_extract_l( W_shl( y1_fx64, Qy1 ) ), a1_fx );
        Qy1 = add( Qy1, Qprev_y1 );

        Qy2 = W_norm( y2_fx64 );
        if ( y2_fx64 == 0 )
@@ -552,89 +552,32 @@ void hp20_fx_32(
            Qy2 = 62;
            move16();
        }
        Qy2 = sub( Qy2, 34 );
        R2 = W_mult0_32_32( W_extract_l( W_shl( y2_fx64, Qy2 ) ), a2_fx );
        Qy2 = add( Qy2, Qprev_y2 );

        Qx0 = W_norm( x0_fx64 );
        if ( x0_fx64 == 0 )
        {
            Qx0 = 62;
            move16();
        }
        Qx0 = sub( Qx0, 34 );
        R3 = W_mult0_32_32( W_extract_l( W_shl( x0_fx64, Qx0 ) ), b2_fx );

        Qx1 = W_norm( x1_fx64 );
        if ( x1_fx64 == 0 )
        {
            Qx1 = 62;
            move16();
        }
        Qx1 = sub( Qx1, 34 );
        R4 = W_mult0_32_32( W_extract_l( W_shl( x1_fx64, Qx1 ) ), b1_fx );

        Qx2 = W_norm( x2_fx64 );
        if ( x2_fx64 == 0 )
        {
            Qx2 = 62;
            move16();
        }
        Qx2 = sub( Qx2, 34 );
        R5 = W_mult0_32_32( W_extract_l( W_shl( x2_fx64, Qx2 ) ), b2_fx );

        Qmin = s_min( Qy1, Qy2 );

        y0_fx64 = W_add( W_shr( R1, sub( Qy1, Qmin ) ), W_shr( R2, sub( Qy2, Qmin ) ) );

        Qmin = s_min( Qmin, Qx0 );
        Qmin = s_min( Qmin, Qx1 );
        Qmin = s_min( Qmin, Qx2 );
        Qmin = sub( Qmin, 34 );

        y0_fx64 = W_add( W_shr( y0_fx64, sub( s_min( Qy1, Qy2 ), Qmin ) ), W_add( W_shr( R3, sub( Qx0, Qmin ) ), W_add( W_shr( R4, sub( Qx1, Qmin ) ), W_shr( R5, sub( Qx2, Qmin ) ) ) ) );
        y0_fx64 = W_mac_32_32( W_mult_32_32( W_shl_sat_l( y1_fx64, Qmin ), a1_fx ), W_shl_sat_l( y2_fx64, Qmin ), a2_fx ); // Qmin + Q29 + Q30 + 1

        y0_fx64 = W_shr( y0_fx64, 29 );

        signal_fx[i] = W_extract_l( W_shr( y0_fx64, Qmin ) );
        move32();
        IF( signal_fx[i] < 0 )
        {
            signal_fx[i] = L_add( signal_fx[i], 1 );
        Word64 temp = W_mac_32_32( W_mac_32_32( W_mult_32_32( x2, b2_fx ), x1, b1_fx ), x0, b2_fx ); // Q30
        Word64 y0_fx = W_shr( y0_fx64, add( Qmin, Q30 ) );                                           // Q30
        y0_fx64 = W_add( temp, y0_fx );                                                              // Q30
        signal_fx[i] = W_extract_l( W_shr( y0_fx64, Q30 ) );
        move32();
        }

        y2_fx64 = y1_fx64;
        y1_fx64 = y0_fx64;
        Qprev_y2 = Qprev_y1;
        Qprev_y1 = Qmin;
        move64();
        y1_fx64 = y0_fx64;
        move64();
        move16();
        move16();
    }

    Qy1 = W_norm( y1_fx64 );
    test();
    IF( y1_fx64 != 0 && LT_16( Qy1, 32 ) )
    {
        y1_fx64 = W_shr( y1_fx64, sub( 32, Qy1 ) );
        Qprev_y1 = sub( Qprev_y1, sub( 32, Qy1 ) );
    }

    Qy2 = W_norm( y2_fx64 );
    test();
    IF( y2_fx64 != 0 && LT_16( Qy2, 32 ) )
    {
        y2_fx64 = W_shr( y2_fx64, sub( 32, Qy2 ) );
        Qprev_y2 = sub( Qprev_y2, sub( 32, Qy2 ) );
    }

    mem_fx[0] = W_extract_l( y1_fx64 );
    mem_fx[1] = W_extract_l( y2_fx64 );
    mem_fx[2] = W_extract_l( x0_fx64 );
    mem_fx[3] = W_extract_l( x1_fx64 );
    mem_fx[4] = Qprev_y1;
    mem_fx[5] = Qprev_y2;
    mem_fx[1] = W_extract_h( y1_fx64 );
    mem_fx[2] = W_extract_l( y2_fx64 );
    mem_fx[3] = W_extract_h( y2_fx64 );
    mem_fx[4] = x0;
    mem_fx[5] = x1;

    move32();
    move32();
    move32();
+29 −29

File changed.

Preview size limit exceeded, changes collapsed.

+34 −26

File changed.

Preview size limit exceeded, changes collapsed.

Loading