Commit 24ab5972 authored by Manuel Jander's avatar Manuel Jander
Browse files

Add first series of overflow checks to see what happens.

parent c08287c7
Loading
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -1210,6 +1210,52 @@ Word16 extract_l( Word32 L_var1 )
    return ( var_out );
}

#ifdef FIX_2493_CHECK_EXTRACT_L
/*___________________________________________________________________________
 |                                                                           |
 |   Function Name : extract_l2                                              |
 |                                                                           |
 |   Purpose :                                                               |
 |                                                                           |
 |   Return the 16 LSB of L_var1. Check range.                               |
 |                                                                           |
 |   Complexity weight : 1                                                   |
 |                                                                           |
 |   Inputs :                                                                |
 |                                                                           |
 |    L_var1                                                                 |
 |             32 bit long signed integer (Word32 ) whose value falls in the |
 |             range : 0xffff 8000 <= L_var1 <= 0x0000 7fff.                 |
 |                                                                           |
 |   Outputs :                                                               |
 |                                                                           |
 |    none                                                                   |
 |                                                                           |
 |   Return Value :                                                          |
 |                                                                           |
 |    var_out                                                                |
 |             16 bit short signed integer (Word16) whose value falls in the |
 |             range : 0xffff 8000 <= var_out <= 0x0000 7fff.                |
 |___________________________________________________________________________|
*/
Word16 extract_l2( Word32 L_var1 )
{
    Word16 var_out;

    assert( L_var1 <=(Word32)MAX_16 && L_var1 >= (Word32)(Word16)MIN_16 );

    var_out = (Word16) L_var1;

#ifdef WMOPS
    multiCounter[currCounter].extract_l++;
#endif

    BASOP_CHECK();


    return ( var_out );
}
#endif

/*___________________________________________________________________________
 |                                                                           |
+3 −0
Original line number Diff line number Diff line
@@ -129,6 +129,9 @@ Word32 L_mult( Word16 var1, Word16 var2 ); /*
Word16 negate( Word16 var1 );                                                /* Short negate,        1   */
Word16 extract_h( Word32 L_var1 );                                           /* Extract high,        1   */
Word16 extract_l( Word32 L_var1 );                                           /* Extract low,         1   */
#ifdef FIX_2493_CHECK_EXTRACT_L
Word16 extract_l2( Word32 L_var1 );                                          /* Extract low and check range 1 */
#endif
Word16 round_fx( Word32 L_var1 );                                            /* Round,               1   */
Word32 L_mac( Word32 L_var3, Word16 var1, Word16 var2 );                     /* Mac,  1  */
Word32 L_msu( Word32 L_var3, Word16 var1, Word16 var2 );                     /* Msu,  1  */
+46 −0
Original line number Diff line number Diff line
@@ -868,6 +868,52 @@ Word32 W_extract_l( Word64 L64_var1 )
    return ( L_var_out );
}

#ifdef FIX_2493_CHECK_EXTRACT_L

#include <assert.h>

/*__________________________________________________________________________________
|                                                                                  |
|   Function Name : W_extract_l                                                    |
|                                                                                  |
|   Purpose :                                                                      |
|                                                                                  |
|   Return the 32 LSB of L64_var1 and check the range                              |
|                                                                                  |
|   Complexity weight : 1                                                          |
|                                                                                  |
|   Inputs :                                                                       |
|                                                                                  |
|    L64_var1                                                                      |
|             64 bit long long signed integer (Word64) whose value falls in        |
|             range : 0x00000000 80000000LL <= L64_var1 <= 0xffffffff 7fffffffLL.  |
|                                                                                  |
|   Outputs :                                                                      |
|                                                                                  |
|    none                                                                          |
|                                                                                  |
|   Return Value :                                                                 |
|                                                                                  |
|    L_var_out                                                                     |
|             32 bit long signed integer (Word32) whose value falls in the         |
|             range : 0x8000 0000 <= L_var_out <= 0x7fff 0000.                     |
|__________________________________________________________________________________|
*/
Word32 W_extract_l2( Word64 L64_var1 )
{
    Word32 L_var_out;

    assert( L64_var1 <=(Word64)MAX_32 && L64_var1 >= (Word64)(Word32)MIN_32 );

    L_var_out = (Word32) L64_var1;

#ifdef WMOPS
    multiCounter[currCounter].W_extract_l++;
#endif /* if WMOPS */

    return ( L_var_out );
}
#endif

/*__________________________________________________________________________________
|                                                                                  |
+3 −0
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@ Word32 W_sat_m( Word64 L64_var );
Word32 W_shl_sat_l( Word64 L64_var, Word16 n );

Word32 W_extract_l( Word64 L64_var1 );
#ifdef FIX_2493_CHECK_EXTRACT_L
Word32 W_extract_l2( Word64 L64_var1 );
#endif
Word32 W_extract_h( Word64 L64_var1 );

Word32 W_round48_L( Word64 L64_var1 );
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@
#define FIX_2480_HARM_TONALMDCT                         /* FhG: basop issue 2480: Harmonize TonalMDCTConceal_Detect_fx() and TonalMDCTConceal_Detect_ivas_fx() */
#define FIX_2479_HARM_PITCH_GAIN                        /* FhG: basop issue 2479: Harmonize tcx_ltp_pitch_search_*(), tcx_ltp_find_gain_*fx() */
#define HARMONIZE_2481_EXTEND_SHRINK                    /* FhG: basop issue 2481: Harmonize extend_frm_*fx() and shrink_frm_*fx() */
#define FIX_2493_CHECK_EXTRACT_L                        /* FhG: Verify that extract_l, W_extract_l etc. do not encounter an overflow. */

/* #################### End BE switches ################################## */

Loading