Commit c5aa5ebd authored by vaillancour's avatar vaillancour
Browse files

Merge branch 'sgi_remove_code_duplication' into basop_noglob

parents 845a35ac f43f655b
Loading
Loading
Loading
Loading
+21 −22
Original line number Diff line number Diff line
@@ -167,53 +167,39 @@ Word32 Pow2( /* (o) Q0 : result (range: 0<=v
 |       dot_product = sum(x[i]*y[i])     i=0..N-1                           |
 |___________________________________________________________________________|
*/

#ifdef BASOP_NOGLOB
Word32 Dot_product12_o(   /* (o) Q31: normalized result (1 < val <= -1) */
    const Word16 x[],  /* (i) 12bits: x vector                       */
    const Word16 y[],  /* (i) 12bits: y vector                       */
    const Word16 lg,   /* (i)    : vector length                     */
    Word16* exp,       /* (o)    : exponent of result (0..+30)       */
    Flag* Overflow_out /* o :  propagating the Overflow flag to upper level */
    Flag* Overflow_out /* o :  propagating the Overflow flag to upper level, set to NULL to ignore internal overflows */
)
{
    Word16 i, sft;
    Word32 L_sum;

    L_sum = L_mac(1, x[0], y[0]);
    FOR(i = 1; i < lg; i++)
    {
        L_sum = L_mac_o(L_sum, x[i], y[i], Overflow_out);
    }
    /* Normalize acc in Q31 */

    sft = norm_l(L_sum);
    L_sum = L_shl(L_sum, sft);

    *exp = sub(30, sft);                   move16();  /* exponent = 0..30 */

    return L_sum;
}
#endif
#else /* BASOP_NOGLOB */
Word32 Dot_product12(                      /* (o) Q31: normalized result (1 < val <= -1) */
     const Word16 x[],                     /* (i) 12bits: x vector                       */
     const Word16 y[],                     /* (i) 12bits: y vector                       */
     const Word16 lg,                      /* (i)    : vector length                     */
     Word16 * exp                          /* (o)    : exponent of result (0..+30)       */
)
#endif /* BASOP_NOGLOB */
{
    Word16 i, sft;
    Word32 L_sum;
#ifdef BASOP_NOGLOB
    Flag Overflow = 0;
    Flag Overflow_ignored = 0;
#endif /* BASOP_NOGLOB */

    L_sum = L_mac(1, x[0], y[0]);
    FOR (i = 1; i < lg; i++)
    {
#ifdef BASOP_NOGLOB
        L_sum = L_mac_o(L_sum, x[i], y[i], &Overflow);
        L_sum = L_mac_o(L_sum, x[i], y[i], Overflow_out ? Overflow_out : &Overflow_ignored);
#else /* BASOP_NOGLOB */
        L_sum = L_mac(L_sum, x[i], y[i]);
#endif /* BASOP_NOGLOB */
    }

    /* Normalize acc in Q31 */

@@ -225,6 +211,19 @@ Word32 Dot_product12( /* (o) Q31: normalized result (1 < va
    return L_sum;
}

#ifdef BASOP_NOGLOB
Word32 Dot_product12(                      /* (o) Q31: normalized result (1 < val <= -1) */
     const Word16 x[],                     /* (i) 12bits: x vector                       */
     const Word16 y[],                     /* (i) 12bits: y vector                       */
     const Word16 lg,                      /* (i)    : vector length                     */
     Word16 * exp                          /* (o)    : exponent of result (0..+30)       */
)
{
    /* Ignore internal overflows */
    return Dot_product12_o(x, y, lg, exp, NULL);
}
#endif /* BASOP_NOGLOB */

/*___________________________________________________________________________
 |                                                                           |
 |   Function Name : Energy_scale()                                          |
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ Word32 Dot_product12( /* (o) Q31: normalized result (1 < val <= -1) */
     const Word16 lg,   /* (i)    : vector length                     */
     Word16 * exp       /* (o)    : exponent of result (0..+30)       */
);

Word32 Energy_scale(    /* (o) Q31: normalized result (1 < val <= -1) */
     const Word16 x[],  /* (i) 12bits: x vector                       */
     const Word16 lg,   /* (i)  : vector length                       */