[Complexity] Optimize get_min_scalefactor()
# Basic info This is a subtask of #1009 - it splits off the complexity optimization of the function L_norm_arr(). This optimization is BE. # Bug description Avoid `IF()`-operators. The `IF()` operator has a complexity count of 3; instead, `if()` can be used if it conditions only one basic operator (control operators excluded). ``` Word16 get_min_scalefactor( Word32 x, Word32 y ) { #ifndef PATCH Word16 scf = Q31; move16(); test(); IF( x == 0 && y == 0 ) { return 0; } IF( x != 0 ) { scf = s_min( scf, norm_l( x ) ); } IF( y != 0 ) { scf = s_min( scf, norm_l( y ) ); } return scf; #else Word16 scf_y; Word16 scf = Q31; move16(); test(); if ( x == 0 && y == 0 ) { scf = 0; move16(); } if ( x != 0 ) { scf = norm_l( x ); } scf_y = norm_l( y ); if ( y != 0 ) { scf = s_min( scf_y, scf ); } return scf; #endif } ``` The propsed patch saves 7-8 cycles per function call. # Ways to reproduce See #1009 for commandline.
issue