Loading lib_dec/ivas_svd_dec_fx.c +11 −14 Original line number Diff line number Diff line Loading @@ -1004,15 +1004,14 @@ static void biDiagonalReductionLeft_64( { #define HEADROOM_LEFT_1 2 #define HEADROOM_LEFT_2 2 #define HEADROOM_LEFT_3 2 #define HEADROOM_LEFT_2 10 #define HEADROOM_LEFT_3 15 #define HEADROOM_LEFT_4 15 Word16 iCh, jCh; Word32 norm_x; Word16 norm_x_e; Word64 norm_64; printf("\nF\n"); ( *g ) = 0; ( *g_e ) = 0; move32(); Loading Loading @@ -1050,8 +1049,8 @@ static void biDiagonalReductionLeft_64( { ( *g ) = L_negate( *g ); } factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][currChannel], HEADROOM_LEFT_1 ) ); tmp_e = sub( HEADROOM_LEFT_1, ( *g_e ) ); factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][currChannel], HEADROOM_LEFT_2 ) ); tmp_e = sub( 2*HEADROOM_LEFT_1-HEADROOM_LEFT_2, ( *g_e ) ); tmpmul = W_mult0_32_32( ( *g ), factor2 ); tmpmul = W_shr( tmpmul, tmp_e ); r_64 = W_sub( tmpmul, norm_64 ); Loading Loading @@ -1084,16 +1083,12 @@ static void biDiagonalReductionLeft_64( norm_x_e = W_norm( norm_64 ); norm_x = W_extract_h( W_shl( norm_64, norm_x_e ) ); f = Mpy_32_32( norm_x, invVal ); printf("\nF:%08X norm_x_e:%3d r_e:%3d\n",f,norm_x_e,r_e); magic_shift = norm_x_e - r_e + ( 32 + 2*HEADROOM_LEFT_1 - HEADROOM_LEFT_2 -2*HEADROOM_LEFT_3 - HEADROOM_LEFT_4 ); printf("OUT:"); magic_shift = norm_x_e - r_e + ( 32 + HEADROOM_LEFT_1 - 2 * HEADROOM_LEFT_3 - HEADROOM_LEFT_4 ); FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) { factor1 = W_extract_h( W_shl( singularVectors_Left_64[jCh][currChannel], 32 - HEADROOM_LEFT_4 ) ); singularVectors_Left_64[jCh][iCh] = W_add( singularVectors_Left_64[jCh][iCh], W_shr( W_mult0_32_32( f, factor1 ), magic_shift ) ); printf("%016llX ",singularVectors_Left_64[jCh][iCh]); } printf("\n"); } } } Loading @@ -1119,8 +1114,8 @@ static void biDiagonalReductionRight_64( Word16 idx; #define HEADROOM_RIGHT_1 2 #define HEADROOM_RIGHT_2 2 #define HEADROOM_RIGHT_3 2 #define HEADROOM_RIGHT_2 10 #define HEADROOM_RIGHT_3 15 #define HEADROOM_RIGHT_4 15 Loading Loading @@ -1167,10 +1162,11 @@ static void biDiagonalReductionRight_64( move32(); move16(); factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][idx], HEADROOM_RIGHT_2 ) ); tmp_e = sub( HEADROOM_RIGHT_2, *g_e ); tmp_e = sub( 2*HEADROOM_RIGHT_1-HEADROOM_RIGHT_2, *g_e ); tmpmul = W_mult0_32_32( *g, factor2 ); tmpmul = W_shr( tmpmul, tmp_e ); r_64 = W_sub( tmpmul, norm_64 ); printf("\nR:%016llX-%016llX factor2:%016llx:%08X tmpmul:%016llX-%016llX norm64:%016llX g_e:%3d tmp_e:%3d\n",r_64,-r_64,singularVectors_Left_64[currChannel][idx],factor2,tmpmul,-tmpmul,norm_64,*g_e,tmp_e); r_e = W_norm( r_64 ); r = W_extract_h( W_shl( r_64, r_e ) ); Loading @@ -1196,7 +1192,8 @@ static void biDiagonalReductionRight_64( norm_x_e = W_norm( norm_64 ); norm_x = W_extract_h( W_shl( norm_64, norm_x_e ) ); f = Mpy_32_32( norm_x, invVal ); magic_shift = norm_x_e - r_e + ( 32 + 2*HEADROOM_RIGHT_1 - HEADROOM_RIGHT_2 -2*HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); // magic_shift = norm_x_e - r_e + ( 32 + 2 * HEADROOM_RIGHT_1 - HEADROOM_RIGHT_2 - 2 * HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); magic_shift = norm_x_e - r_e + ( 32 + HEADROOM_RIGHT_1 - 2 * HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) { Loading Loading
lib_dec/ivas_svd_dec_fx.c +11 −14 Original line number Diff line number Diff line Loading @@ -1004,15 +1004,14 @@ static void biDiagonalReductionLeft_64( { #define HEADROOM_LEFT_1 2 #define HEADROOM_LEFT_2 2 #define HEADROOM_LEFT_3 2 #define HEADROOM_LEFT_2 10 #define HEADROOM_LEFT_3 15 #define HEADROOM_LEFT_4 15 Word16 iCh, jCh; Word32 norm_x; Word16 norm_x_e; Word64 norm_64; printf("\nF\n"); ( *g ) = 0; ( *g_e ) = 0; move32(); Loading Loading @@ -1050,8 +1049,8 @@ static void biDiagonalReductionLeft_64( { ( *g ) = L_negate( *g ); } factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][currChannel], HEADROOM_LEFT_1 ) ); tmp_e = sub( HEADROOM_LEFT_1, ( *g_e ) ); factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][currChannel], HEADROOM_LEFT_2 ) ); tmp_e = sub( 2*HEADROOM_LEFT_1-HEADROOM_LEFT_2, ( *g_e ) ); tmpmul = W_mult0_32_32( ( *g ), factor2 ); tmpmul = W_shr( tmpmul, tmp_e ); r_64 = W_sub( tmpmul, norm_64 ); Loading Loading @@ -1084,16 +1083,12 @@ static void biDiagonalReductionLeft_64( norm_x_e = W_norm( norm_64 ); norm_x = W_extract_h( W_shl( norm_64, norm_x_e ) ); f = Mpy_32_32( norm_x, invVal ); printf("\nF:%08X norm_x_e:%3d r_e:%3d\n",f,norm_x_e,r_e); magic_shift = norm_x_e - r_e + ( 32 + 2*HEADROOM_LEFT_1 - HEADROOM_LEFT_2 -2*HEADROOM_LEFT_3 - HEADROOM_LEFT_4 ); printf("OUT:"); magic_shift = norm_x_e - r_e + ( 32 + HEADROOM_LEFT_1 - 2 * HEADROOM_LEFT_3 - HEADROOM_LEFT_4 ); FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) { factor1 = W_extract_h( W_shl( singularVectors_Left_64[jCh][currChannel], 32 - HEADROOM_LEFT_4 ) ); singularVectors_Left_64[jCh][iCh] = W_add( singularVectors_Left_64[jCh][iCh], W_shr( W_mult0_32_32( f, factor1 ), magic_shift ) ); printf("%016llX ",singularVectors_Left_64[jCh][iCh]); } printf("\n"); } } } Loading @@ -1119,8 +1114,8 @@ static void biDiagonalReductionRight_64( Word16 idx; #define HEADROOM_RIGHT_1 2 #define HEADROOM_RIGHT_2 2 #define HEADROOM_RIGHT_3 2 #define HEADROOM_RIGHT_2 10 #define HEADROOM_RIGHT_3 15 #define HEADROOM_RIGHT_4 15 Loading Loading @@ -1167,10 +1162,11 @@ static void biDiagonalReductionRight_64( move32(); move16(); factor2 = W_extract_l( W_shr( singularVectors_Left_64[currChannel][idx], HEADROOM_RIGHT_2 ) ); tmp_e = sub( HEADROOM_RIGHT_2, *g_e ); tmp_e = sub( 2*HEADROOM_RIGHT_1-HEADROOM_RIGHT_2, *g_e ); tmpmul = W_mult0_32_32( *g, factor2 ); tmpmul = W_shr( tmpmul, tmp_e ); r_64 = W_sub( tmpmul, norm_64 ); printf("\nR:%016llX-%016llX factor2:%016llx:%08X tmpmul:%016llX-%016llX norm64:%016llX g_e:%3d tmp_e:%3d\n",r_64,-r_64,singularVectors_Left_64[currChannel][idx],factor2,tmpmul,-tmpmul,norm_64,*g_e,tmp_e); r_e = W_norm( r_64 ); r = W_extract_h( W_shl( r_64, r_e ) ); Loading @@ -1196,7 +1192,8 @@ static void biDiagonalReductionRight_64( norm_x_e = W_norm( norm_64 ); norm_x = W_extract_h( W_shl( norm_64, norm_x_e ) ); f = Mpy_32_32( norm_x, invVal ); magic_shift = norm_x_e - r_e + ( 32 + 2*HEADROOM_RIGHT_1 - HEADROOM_RIGHT_2 -2*HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); // magic_shift = norm_x_e - r_e + ( 32 + 2 * HEADROOM_RIGHT_1 - HEADROOM_RIGHT_2 - 2 * HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); magic_shift = norm_x_e - r_e + ( 32 + HEADROOM_RIGHT_1 - 2 * HEADROOM_RIGHT_3 - HEADROOM_RIGHT_4 ); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) { Loading