Loading lib_com/basop_util.c +11 −0 Original line number Diff line number Diff line Loading @@ -2958,3 +2958,14 @@ cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ) #endif return result; } Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); return var_out; } lib_com/basop_util.h +20 −0 Original line number Diff line number Diff line Loading @@ -907,4 +907,24 @@ cmplx CL_scale_t( cmplx x, Word16 y ); cmplx CL_dscale_t( cmplx x, Word16 y1, Word16 y2 ); cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ); /*! \brief 64-bit/32-bit multiplication with shift This multiplication is similar to Mpy_32_32 except for the fact that the first argument and the return type are Word64. The function performs the following operation: z = ((int128_t)x (int128_t)y) >> 31 where: - x is a 64-bit signed integer - y is a 32-bit signed integer - z is a 64-bit signed integer \param W_var1 64-bit signed integer argument \param L_var2 32-bit signed integer argument \return 64-bit signed integer representing the result of the multiplication with shift */ Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); #endif /* __BASOP_UTIL_H__ */ lib_com/ivas_filters_fx.c +0 −25 Original line number Diff line number Diff line Loading @@ -184,31 +184,6 @@ void ivas_filters_init_fx( #ifdef OPT_2239_IVAS_FILTER_PROCESS static Word64 ivas_iir_2_filter_fx( ivas_filters_process_state_t *filter_state, const Word16 stage, const Word64 in ); static Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); /*-----------------------------------------------------------------------------------------* * Function Mpy_64_32() * * Performs the the following operation: * * z = ((int128_t)x * (int128_t)y) >> 31 * * where: * - x is a 64-bit signed integer * - y is a 32-bit signed integer * - z is a 64-bit signed integer *-----------------------------------------------------------------------------------------*/ static Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); // 1 var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); // 2 var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); // 2 var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); // 3 return var_out; } /*-----------------------------------------------------------------------------------------* * Function ivas_iir_2_filter_fx() Loading Loading
lib_com/basop_util.c +11 −0 Original line number Diff line number Diff line Loading @@ -2958,3 +2958,14 @@ cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ) #endif return result; } Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); return var_out; }
lib_com/basop_util.h +20 −0 Original line number Diff line number Diff line Loading @@ -907,4 +907,24 @@ cmplx CL_scale_t( cmplx x, Word16 y ); cmplx CL_dscale_t( cmplx x, Word16 y1, Word16 y2 ); cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ); /*! \brief 64-bit/32-bit multiplication with shift This multiplication is similar to Mpy_32_32 except for the fact that the first argument and the return type are Word64. The function performs the following operation: z = ((int128_t)x (int128_t)y) >> 31 where: - x is a 64-bit signed integer - y is a 32-bit signed integer - z is a 64-bit signed integer \param W_var1 64-bit signed integer argument \param L_var2 32-bit signed integer argument \return 64-bit signed integer representing the result of the multiplication with shift */ Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); #endif /* __BASOP_UTIL_H__ */
lib_com/ivas_filters_fx.c +0 −25 Original line number Diff line number Diff line Loading @@ -184,31 +184,6 @@ void ivas_filters_init_fx( #ifdef OPT_2239_IVAS_FILTER_PROCESS static Word64 ivas_iir_2_filter_fx( ivas_filters_process_state_t *filter_state, const Word16 stage, const Word64 in ); static Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); /*-----------------------------------------------------------------------------------------* * Function Mpy_64_32() * * Performs the the following operation: * * z = ((int128_t)x * (int128_t)y) >> 31 * * where: * - x is a 64-bit signed integer * - y is a 32-bit signed integer * - z is a 64-bit signed integer *-----------------------------------------------------------------------------------------*/ static Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); // 1 var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); // 2 var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); // 2 var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); // 3 return var_out; } /*-----------------------------------------------------------------------------------------* * Function ivas_iir_2_filter_fx() Loading