Loading lib_dec/ivas_svd_dec_fx.c +19 −5 Original line number Diff line number Diff line Loading @@ -1137,6 +1137,7 @@ static void biDiagonalReductionRight_64( Word16 iCh,jCh; Word32 norm_x; Word16 norm_x_e; Word16 norm_x_e2; Word32 abs_x; Word16 abs_x_e; Loading @@ -1158,6 +1159,8 @@ static void biDiagonalReductionRight_64( tmpe=W_norm(norm_64); norm_x=W_extract_h(W_shl(norm_64, tmpe )); norm_x_e = add(sub(shl(singularVectors_e, 1), tmpe), 3 ); norm_x_e2 = norm_x_e; move16(); tmpe=W_norm(abs_64); abs_x=W_extract_h(W_shl(abs_64, tmpe )); abs_x_e = add(sub(shl(singularVectors_e, 1), tmpe), 3 ); Loading Loading @@ -1216,6 +1219,7 @@ static void biDiagonalReductionRight_64( tmpe=add(singularVectors_e,2); for ( iCh=currChannel+1; iCh<nChannelsC; iCh++) { Word16 magic_shift; Word32 tmp2; Word32 tmp3; tmp2=W_extract_l(W_shr(singularVectors_Left_64[iCh][currChannel],tmpe)); Loading @@ -1235,13 +1239,23 @@ static void biDiagonalReductionRight_64( f_e=add(invVal_e, sub(norm_x_e, r_e )); printf("F: \x1b[1;33mnorm:%016llX --> %08X<%2X %08X<%2X\x1b[0m\n",norm_64,norm_x,norm_x_e,f,f_e); printf("singularVectors_Left%d,%d: \x1b[1;35m",currChannel,iCh); printf("f_e:d norm_x_e:%d ",f_e,norm_x_e); printf("f_e:d norm_x_e:%d norm_x_e2:%d tmpe:%d ",f_e,norm_x_e,norm_x_e2,tmpe); switch(iCh) { case 1: magic_shift=37;break; case 2: magic_shift=30;break; // case 3: magic_shift=35;break; // case 4: magic_shift=33;break; default: magic_shift=norm_x_e+27;break; } printf("magic_shift:%d ",magic_shift); for (jCh=idx;jCh<nChannelsC; jCh++) { tmp2=W_extract_l(W_shr(singularVectors_Left_64[currChannel][jCh],tmpe)); // printf("s=0x%016llxll;f=0x%08xll;tmp2=0x%08xll;",singularVectors_Left_64[iCh][jCh],f,tmp2); singularVectors_Left_64[iCh][jCh]=W_add(singularVectors_Left_64[iCh][jCh],W_shr(W_mult0_32_32(f,tmp2),28+norm_x_e)); printf("%016llX ",singularVectors_Left_64[iCh][jCh]); printf("s=0x%016llxll;f=0x%08xll;tmp2=%016llx --> 0x%08xll;",singularVectors_Left_64[iCh][jCh],f,singularVectors_Left_64[currChannel][jCh],tmp2); singularVectors_Left_64[iCh][jCh]=W_add(singularVectors_Left_64[iCh][jCh],W_shr(W_mult0_32_32(f,tmp2),magic_shift)); printf("\x1b[45m%016llX\x1b[0m\x1b[1;35m ",singularVectors_Left_64[iCh][jCh]); } printf("\x1b[0m\n"); } Loading Loading @@ -1667,7 +1681,7 @@ static void biDiagonalReductionRight_fx( FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { singularVectors[iCh][jCh] = BASOP_Util_Add_Mant32Exp( singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh], Mpy_32_32( norm_x, singularVectors[currChannel][jCh] ), add( norm_x_e, singularVectors2_e[currChannel][jCh] ), &singularVectors2_e[iCh][jCh] ); /* exp(sing_exp2) */ // printf("|%08X*%08X|expected=0x%08Xll;",norm_x, singularVectors[currChannel][jCh],singularVectors[iCh][jCh]); printf("|%08X*%08X|expected=0x%08Xll;",norm_x, singularVectors[currChannel][jCh],singularVectors[iCh][jCh]); printf("%08X<%2X ",singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh]); move32(); } Loading Loading
lib_dec/ivas_svd_dec_fx.c +19 −5 Original line number Diff line number Diff line Loading @@ -1137,6 +1137,7 @@ static void biDiagonalReductionRight_64( Word16 iCh,jCh; Word32 norm_x; Word16 norm_x_e; Word16 norm_x_e2; Word32 abs_x; Word16 abs_x_e; Loading @@ -1158,6 +1159,8 @@ static void biDiagonalReductionRight_64( tmpe=W_norm(norm_64); norm_x=W_extract_h(W_shl(norm_64, tmpe )); norm_x_e = add(sub(shl(singularVectors_e, 1), tmpe), 3 ); norm_x_e2 = norm_x_e; move16(); tmpe=W_norm(abs_64); abs_x=W_extract_h(W_shl(abs_64, tmpe )); abs_x_e = add(sub(shl(singularVectors_e, 1), tmpe), 3 ); Loading Loading @@ -1216,6 +1219,7 @@ static void biDiagonalReductionRight_64( tmpe=add(singularVectors_e,2); for ( iCh=currChannel+1; iCh<nChannelsC; iCh++) { Word16 magic_shift; Word32 tmp2; Word32 tmp3; tmp2=W_extract_l(W_shr(singularVectors_Left_64[iCh][currChannel],tmpe)); Loading @@ -1235,13 +1239,23 @@ static void biDiagonalReductionRight_64( f_e=add(invVal_e, sub(norm_x_e, r_e )); printf("F: \x1b[1;33mnorm:%016llX --> %08X<%2X %08X<%2X\x1b[0m\n",norm_64,norm_x,norm_x_e,f,f_e); printf("singularVectors_Left%d,%d: \x1b[1;35m",currChannel,iCh); printf("f_e:d norm_x_e:%d ",f_e,norm_x_e); printf("f_e:d norm_x_e:%d norm_x_e2:%d tmpe:%d ",f_e,norm_x_e,norm_x_e2,tmpe); switch(iCh) { case 1: magic_shift=37;break; case 2: magic_shift=30;break; // case 3: magic_shift=35;break; // case 4: magic_shift=33;break; default: magic_shift=norm_x_e+27;break; } printf("magic_shift:%d ",magic_shift); for (jCh=idx;jCh<nChannelsC; jCh++) { tmp2=W_extract_l(W_shr(singularVectors_Left_64[currChannel][jCh],tmpe)); // printf("s=0x%016llxll;f=0x%08xll;tmp2=0x%08xll;",singularVectors_Left_64[iCh][jCh],f,tmp2); singularVectors_Left_64[iCh][jCh]=W_add(singularVectors_Left_64[iCh][jCh],W_shr(W_mult0_32_32(f,tmp2),28+norm_x_e)); printf("%016llX ",singularVectors_Left_64[iCh][jCh]); printf("s=0x%016llxll;f=0x%08xll;tmp2=%016llx --> 0x%08xll;",singularVectors_Left_64[iCh][jCh],f,singularVectors_Left_64[currChannel][jCh],tmp2); singularVectors_Left_64[iCh][jCh]=W_add(singularVectors_Left_64[iCh][jCh],W_shr(W_mult0_32_32(f,tmp2),magic_shift)); printf("\x1b[45m%016llX\x1b[0m\x1b[1;35m ",singularVectors_Left_64[iCh][jCh]); } printf("\x1b[0m\n"); } Loading Loading @@ -1667,7 +1681,7 @@ static void biDiagonalReductionRight_fx( FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { singularVectors[iCh][jCh] = BASOP_Util_Add_Mant32Exp( singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh], Mpy_32_32( norm_x, singularVectors[currChannel][jCh] ), add( norm_x_e, singularVectors2_e[currChannel][jCh] ), &singularVectors2_e[iCh][jCh] ); /* exp(sing_exp2) */ // printf("|%08X*%08X|expected=0x%08Xll;",norm_x, singularVectors[currChannel][jCh],singularVectors[iCh][jCh]); printf("|%08X*%08X|expected=0x%08Xll;",norm_x, singularVectors[currChannel][jCh],singularVectors[iCh][jCh]); printf("%08X<%2X ",singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh]); move32(); } Loading