Make the bit shuffling in one place only and replace input if required instead.
Signed-off-by: Thomas Schwinge <tho...@codesourcery.com> Signed-off-by: Maciej W. Rozycki <ma...@codesourcery.com> --- qemu-softfloat-floatx80-nan.diff Index: qemu-git-trunk/fpu/softfloat-specialize.h =================================================================== --- qemu-git-trunk.orig/fpu/softfloat-specialize.h 2014-11-06 06:08:34.927738779 +0000 +++ qemu-git-trunk/fpu/softfloat-specialize.h 2014-11-20 21:58:09.908941613 +0000 @@ -934,15 +934,14 @@ static commonNaNT floatx80ToCommonNaN( f commonNaNT z; if ( floatx80_is_signaling_nan( a ) ) float_raise( float_flag_invalid STATUS_VAR); - if ( a.low >> 63 ) { - z.sign = a.high >> 15; - z.low = 0; - z.high = a.low << 1; - } else { - z.sign = floatx80_default_nan_high >> 15; - z.low = 0; - z.high = floatx80_default_nan_low << 1; + /* Replace a Pseudo NaN with a default NaN. */ + if (!(a.low >> 63)) { + a.low = floatx80_default_nan_low; + a.high = floatx80_default_nan_high; } + z.sign = a.high >> 15; + z.low = 0; + z.high = a.low << 1; return z; }