Commit d3143b03 authored by multrus's avatar multrus
Browse files

[cleanup] accept OPT_2181_MATRIX_TRANSP_1_MUL

parent ae82a114
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -118,7 +118,6 @@

/* #################### Start BASOP optimization switches ############################ */

#define OPT_2181_MATRIX_TRANSP_1_MUL        /* Dolby: Issue 2181, optimize matrixTransp1Mul_fx. */
#define OPT_2182_MATRIX_SCALE_OPS           /* Dolby: Issue 2181, move matrix scale operations outside mul operations. */
#define OPT_2185_MATRIX_OUT_SCALING         /* Dolby: Issue 2185, optimize matrix-mul output-format. */
#define NONBE_OPT_2239_IVAS_FILTER_PROCESS  /* Dolby: Issue 2239, optimize ivas_filter_process_fx. */
+0 −45
Original line number Diff line number Diff line
@@ -4360,25 +4360,16 @@ static void matrixTransp1Mul_fx(

    Word64 tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
    Word64 tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
#ifdef OPT_2181_MATRIX_TRANSP_1_MUL
    Word64 tmp64;
    Word16 common_lsh, q;
    q = add( add( q_A, q_B ), 1 );
    common_lsh = sub( 63, q );
    move16();
#else
    Word16 q_tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
    Word16 q_tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS];
    Word64 tmp64_1, tmp64_2;
    Word16 tmp16, q_common = 63;
    move16();
#endif

    FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
    {
        FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
        {
#ifdef OPT_2181_MATRIX_TRANSP_1_MUL
            tmp64 = W_mult_32_32( Are_fx[0][chA], Bre_fx[0][chB] );
            tmp64 = W_mac_32_32( tmp64, Are_fx[1][chA], Bre_fx[1][chB] );
            tmp64 = W_mac_32_32( tmp64, Aim_fx[0][chA], Bim_fx[0][chB] );
@@ -4392,30 +4383,6 @@ static void matrixTransp1Mul_fx(
            tmp_outIm_fx[chA][chB] = W_mac_32_32( tmp64, Are_fx[1][chA], Bim_fx[1][chB] );
            move64();
            common_lsh = s_min( common_lsh, W_norm( tmp_outIm_fx[chA][chB] ) );
#else
            tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bre_fx[0][chB] ), Are_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
            tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bim_fx[0][chB] ), Aim_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
            tmp_outRe_fx[chA][chB] = W_add( tmp64_1, tmp64_2 );                                                      // Q: add( add( q_A, q_B ), 1 )
            move64();
            tmp16 = W_norm( tmp_outRe_fx[chA][chB] );
            tmp_outRe_fx[chA][chB] = W_shl( tmp_outRe_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) )
            move64();
            q_tmp_outRe_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) );
            move16();
            q_common = s_min( q_tmp_outRe_fx[chA][chB], q_common );


            tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bim_fx[0][chB] ), Are_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
            tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bre_fx[0][chB] ), Aim_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 )
            tmp_outIm_fx[chA][chB] = W_sub( tmp64_1, tmp64_2 );                                                      // Q: add( add( q_A, q_B ), 1 )
            move64();
            tmp16 = W_norm( tmp_outIm_fx[chA][chB] );
            tmp_outIm_fx[chA][chB] = W_shl( tmp_outIm_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) )
            move64();
            q_tmp_outIm_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) );
            move16();
            q_common = s_min( q_tmp_outIm_fx[chA][chB], q_common );
#endif
        }
    }
#ifdef OPT_2185_MATRIX_OUT_SCALING
@@ -4425,30 +4392,18 @@ static void matrixTransp1Mul_fx(
    {
        FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
        {
#ifdef OPT_2181_MATRIX_TRANSP_1_MUL
            outRe_fx[chA][chB] = W_extract_h( W_shl( tmp_outRe_fx[chA][chB], common_lsh ) );
            move32();
            outIm_fx[chA][chB] = W_extract_h( W_shl( tmp_outIm_fx[chA][chB], common_lsh ) );
            move32();
#else
            outRe_fx[chA][chB] = W_extract_h( W_shl( tmp_outRe_fx[chA][chB], s_max( -63, sub( q_common, q_tmp_outRe_fx[chA][chB] ) ) ) );
            move32();
            outIm_fx[chA][chB] = W_extract_h( W_shl( tmp_outIm_fx[chA][chB], s_max( -63, sub( q_common, q_tmp_outIm_fx[chA][chB] ) ) ) );
            move32();
#endif
#ifdef OPT_2185_MATRIX_OUT_SCALING
            not_zero = L_or( not_zero, outRe_fx[chA][chB] );
            not_zero = L_or( not_zero, outIm_fx[chA][chB] );
#endif
        }
    }
#ifdef OPT_2181_MATRIX_TRANSP_1_MUL
    *q_out = sub( add( q, common_lsh ), 32 );
    move16();
#else
    *q_out = sub( q_common, 32 );
    move16();
#endif
#ifdef OPT_2185_MATRIX_OUT_SCALING
    if ( !not_zero )
    {