Commit f7e57bf5 authored by norvell's avatar norvell
Browse files

Merge with branch

parents 288c2060 575db4af
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -245,11 +245,24 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 <
        FOR (i = 1; i < lg; i++)
        {
            tmp = mult_r(x[i], sft);
#ifdef BASOP_NOGLOB
            L_sum = L_mac_o(L_sum, tmp, tmp, &Overflow);
#else
            L_sum = L_mac(L_sum, tmp, tmp);
#endif
        }
    }
    IF (expi > 0)
    {
#ifdef BASOP_NOGLOB
        tmp = shl_o(x[0], expi, &Overflow);
        L_sum = L_mac_o(1, tmp, tmp, &Overflow);
        FOR (i = 1; i < lg; i++)
        {
            tmp = shl_o(x[i], expi, &Overflow);
            L_sum = L_mac_o(L_sum, tmp, tmp, &Overflow);
        }
#else
        tmp = shl(x[0], expi);
        L_sum = L_mac(1, tmp, tmp);
        FOR (i = 1; i < lg; i++)
@@ -257,6 +270,7 @@ Word32 Energy_scale( /* (o) : Q31: normalized result (1 <
            tmp = shl(x[i], expi);
            L_sum = L_mac(L_sum, tmp, tmp);
        }
#endif
    }

    /* Normalize acc in Q31 */
+23 −6
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@

#include "stl.h"
#include "math_op.h"
#include "basop32.h"

/*****************************************************************************
 *                                                                           *
@@ -122,11 +123,17 @@ Word32 L_Comp (Word16 hi, Word16 lo)
Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2)
{
    Word32 L_32;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;

    L_32 = L_mult (hi1, hi2);
    L_32 = L_mac_o (L_32, mult (hi1, lo2), 1, &Overflow);
    L_32 = L_mac_o (L_32, mult (lo1, hi2), 1, &Overflow);
#else
    L_32 = L_mult (hi1, hi2);
    L_32 = L_mac (L_32, mult (hi1, lo2), 1);
    L_32 = L_mac (L_32, mult (lo1, hi2), 1);

#endif
    return (L_32);
}

@@ -154,11 +161,16 @@ Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2)
Word32 Mac_32 (Word32 L_num, Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2)
{
    Word32 L_32;

#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
    L_32 = L_mac_o (L_num, hi1, hi2, &Overflow);
    L_32 = L_mac_o(L_32, mult (hi1, lo2), 1, &Overflow);
    L_32 = L_mac_o(L_32, mult (lo1, hi2), 1, &Overflow);
#else
    L_32 = L_mac (L_num, hi1, hi2);
    L_32 = L_mac (L_32, mult (hi1, lo2), 1);
    L_32 = L_mac (L_32, mult (lo1, hi2), 1);

#endif
    return (L_32);
}

@@ -185,9 +197,14 @@ Word32 Mac_32 (Word32 L_num, Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2)
Word32 Sqr_32 (Word16 hi, Word16 lo)
{
    Word32 L_32;

#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
    L_32 = L_mult_o (hi, hi, &Overflow);
    L_32 = L_mac_o (L_32, mult (hi, lo), 2, &Overflow);
#else 
    L_32 = L_mult(hi, hi);
    L_32 = L_mac(L_32, mult(hi, lo), 2);
#endif

    return (L_32);
}
+14 −3
Original line number Diff line number Diff line
@@ -1881,14 +1881,21 @@ Word32 L_shr (Word32 L_var1, Word16 var2) {
 |             range : 0xffff 8000 <= var_out <= 0x0000 7fff.                |
 |___________________________________________________________________________|
*/
#ifdef BASOP_NOGLOB
Word16 shr_r_o (Word16 var1, Word16 var2, Flag* Overflow) {
#else
Word16 shr_r (Word16 var1, Word16 var2) {
#endif
  Word16 var_out;

  if (var2 > 15) {
    var_out = 0;
  } else {
#ifdef BASOP_NOGLOB
      var_out = shr_o(var1, var2, Overflow);
#else
      var_out = shr (var1, var2);

#endif
#if (WMOPS)
    multiCounter[currCounter].shr--;
#endif
@@ -1905,7 +1912,11 @@ Word16 shr_r (Word16 var1, Word16 var2) {
#endif
  return (var_out);
}

#ifdef BASOP_NOGLOB
Word16 shr_r(Word16 var1, Word16 var2) {
    return shr_r_o(var1, var2, NULL);
}
#endif /* BASOP_NOGLOB */

/*___________________________________________________________________________
 |                                                                           |
+1 −0
Original line number Diff line number Diff line
@@ -149,6 +149,7 @@ Word16 add_o (Word16 var1, Word16 var2, Flag * Overflow);
Word16 sub_o (Word16 var1, Word16 var2, Flag * Overflow);
Word16 shl_o (Word16 var1, Word16 var2, Flag * Overflow);
Word16 shr_o (Word16 var1, Word16 var2, Flag * Overflow);
Word16 shr_r_o(Word16 var1, Word16 var2, Flag* Overflow);
Word16 mult_o (Word16 var1, Word16 var2, Flag * Overflow);
Word32 L_mult_o (Word16 var1, Word16 var2, Flag * Overflow);
Word16 round_fx_o (Word32 L_var1, Flag * Overflow);
+8 −0
Original line number Diff line number Diff line
@@ -223,7 +223,11 @@ void tcx_arith_scale_envelope(

        tmp = norm_l(env[k]);
        tmp2 = sub(15, tmp);
#ifdef BASOP_NOGLOB
        tmp = Inv16(round_fx_o(L_shl_o(env[k], tmp, &Overflow), &Overflow), &tmp2);
#else
        tmp = Inv16(round_fx(L_shl(env[k], tmp)), &tmp2);
#endif
        ienv[k] = L_shl(L_deposit_h(tmp), sub(tmp2, 15)); /* Q16 */                 move32();
        mean = L_add(mean, ienv[k]);
    }
@@ -318,7 +322,11 @@ void tcx_arith_scale_envelope(
                L_tmp = L_add(L_tmp, L_shl(Mpy_32_16_1(env[k], mult_r(1147/*0.035f Q15*/, iscale)), iscale_e));

                tmp = norm_l(L_tmp);
#ifdef BASOP_NOGLOB
                statesi = mult_r(statesi, round_fx_o(L_shl_o(L_tmp, tmp, &Overflow), &Overflow));
#else
                statesi = mult_r(statesi, round_fx(L_shl(L_tmp, tmp)));
#endif
                bits = add(bits, sub(15, tmp));

                tmp = norm_s(statesi);
Loading