target/i386: Avoid using floatx80_infinity global const
The global const floatx80_infinity is (unlike all the other float*_infinity values) target-specific, because whether the explicit Integer bit is set or not varies between m68k and i386. We want to be able to compile softfloat once for multiple targets, so we can't continue to use a single global whose value needs to be different between targets. Replace the direct uses of floatx80_infinity in target/i386 with calls to the new floatx80_default_inf() function. Note that because we can ask the function for either a negative or positive infinity, we don't need to change the sign of a positive infinity via floatx80_chs() for the negative-Inf case. 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-4-peter.maydell@linaro.org Message-id: 20250217125055.160887-4-peter.maydell@linaro.org
This commit is contained in:
parent
e456d4465b
commit
165ce008d7
@ -1832,7 +1832,7 @@ void helper_fxtract(CPUX86State *env)
|
||||
} else if (floatx80_is_infinity(ST0)) {
|
||||
fpush(env);
|
||||
ST0 = ST1;
|
||||
ST1 = floatx80_infinity;
|
||||
ST1 = floatx80_default_inf(0, &env->fp_status);
|
||||
} else {
|
||||
int expdif;
|
||||
|
||||
@ -2358,9 +2358,8 @@ void helper_fscale(CPUX86State *env)
|
||||
float_raise(float_flag_invalid, &env->fp_status);
|
||||
ST0 = floatx80_default_nan(&env->fp_status);
|
||||
} else {
|
||||
ST0 = (floatx80_is_neg(ST0) ?
|
||||
floatx80_chs(floatx80_infinity) :
|
||||
floatx80_infinity);
|
||||
ST0 = floatx80_default_inf(floatx80_is_neg(ST0),
|
||||
&env->fp_status);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user