Commit 18bf870b authored by thomas dettbarn's avatar thomas dettbarn
Browse files

sns_1st_cod_fx_q15() implemented with a 32 bit multiplication.

parent d8dcbe89
Loading
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ static Word16 sns_1st_cod_fx_q15(
        const Word16 *cdbk_ptr;
        Word16 j0, j1;
        Word16 dist_split;
        Word64 dist_min_fx;
        Word32 dist_min_fx;
        const Word16 cdbk_fix = 8; // 1.f / powf( 2, SNS_CDBKS_BITS_4_FRAC ) in Q15
        move16();
        const Word16 *const cdbk = &sns_1st_cdbk[split][core - 1][0];
@@ -224,23 +224,26 @@ static Word16 sns_1st_cod_fx_q15(
        j1 = add( j0, split_len );

        cdbk_ptr = cdbk;
        dist_min_fx = 0x7fffffffffffffffull;
        dist_min_fx = MAXVAL_WORD32;
        dist_split = 0;
        move64();
        move32();
        move16();
        FOR( Word16 i = 0; i < 32; ++i )
        {
            Word64 dist_fx = 0;
            move64();
            Word32 dist_fx = 0;
            move32();
            FOR( Word16 j = j0; j < j1; ++j )
            {
                Word32 dist;
                Word32 tmp_1 = L_mult( ( *cdbk_ptr++ ), cdbk_fix ); // Q16
                dist = ( L_add( snsq_fx[j], L_negate( tmp_1 ) ) );
                dist_fx = W_mac_32_32( dist_fx, dist, dist );
                dist = L_shr( dist, 4 );	// TODO: Magic shift. 
                dist = L_mult( extract_l( dist ), extract_l( dist ) );
		dist = L_shr( dist, 4 );	// TODO: Magic shift
                dist_fx = L_add( dist_fx, dist );
            }

            IF( LT_64( dist_fx, dist_min_fx ) )
            IF( LT_32( dist_fx, dist_min_fx ) )
            {
                dist_min_fx = dist_fx;
                dist_split = i;