Le 24/02/2018 à 18:26, Richard Henderson a écrit : > On 02/24/2018 09:21 AM, Laurent Vivier wrote: >> I think the change should be in fact: >> >> @@ -4549,10 +4555,7 @@ int64_t floatx80_to_int64(floatx80 a, >> float_status *status) >> if ( shiftCount <= 0 ) { >> if ( shiftCount ) { >> float_raise(float_flag_invalid, status); >> - if ( ! aSign >> - || ( ( aExp == 0x7FFF ) >> - && ( aSig != LIT64( 0x8000000000000000 ) ) ) >> - ) { >> + if (!aSign || floatx80_is_any_nan(a)) { >> return LIT64( 0x7FFFFFFFFFFFFFFF ); >> } >> return (int64_t) LIT64( 0x8000000000000000 ); >> >> Do you agree? > > Yep, looks good.
Thank you. And according to your previous comment, floatx80_is_infinity() should become: static inline int floatx80_is_infinity(floatx80 a) { #if defined(TARGET_M68K) return (a.high & 0x7fff) == floatx80_infinity.high && !(a.low << 1); #else return (a.high & 0x7fff) == floatx80_infinity.high && a.low == floatx80_infinity.low; #endif } Laurent