mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-03-03 00:24:37 -07:00
fpu: Make targets specify whether floatx80 Inf can have Int bit clear
In Intel terminology, a floatx80 Infinity with the explicit integer bit clear is a "pseudo-infinity"; for x86 these are not valid infinity values. m68k is looser and does not care whether the Integer bit is set or clear in an infinity. Move this setting to runtime rather than using an ifdef in floatx80_is_infinity(). Since this was the last use of the floatx80_infinity global constant, we remove it and its definition here. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20250224111524.1101196-6-peter.maydell@linaro.org Message-id: 20250217125055.160887-5-peter.maydell@linaro.org
This commit is contained in:
parent
9ea6d1f141
commit
44eb32a983
4 changed files with 19 additions and 18 deletions
|
|
@ -960,7 +960,6 @@ float128 floatx80_to_float128(floatx80, float_status *status);
|
|||
/*----------------------------------------------------------------------------
|
||||
| The pattern for an extended double-precision inf.
|
||||
*----------------------------------------------------------------------------*/
|
||||
extern const floatx80 floatx80_infinity;
|
||||
floatx80 floatx80_default_inf(bool zSign, float_status *status);
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
|
|
@ -998,12 +997,17 @@ static inline floatx80 floatx80_chs(floatx80 a)
|
|||
|
||||
static inline bool floatx80_is_infinity(floatx80 a, float_status *status)
|
||||
{
|
||||
#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
|
||||
/*
|
||||
* It's target-specific whether the Integer bit is permitted
|
||||
* to be 0 in a valid Infinity value. (x86 says no, m68k says yes).
|
||||
*/
|
||||
bool intbit = a.low >> 63;
|
||||
|
||||
if (!intbit &&
|
||||
!(status->floatx80_behaviour & floatx80_pseudo_inf_valid)) {
|
||||
return false;
|
||||
}
|
||||
return (a.high & 0x7fff) == 0x7fff && !(a.low << 1);
|
||||
}
|
||||
|
||||
static inline bool floatx80_is_neg(floatx80 a)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue