mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
softfloat: fix return_nan vs default_nan_mode
Do not call parts_silence_nan when default_nan_mode is in effect. This will avoid an assert in a later patch. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
0d40cd939a
commit
57547c6023
|
@ -892,21 +892,16 @@ static float64 float64_round_pack_canonical(FloatParts p, float_status *s)
|
|||
|
||||
static FloatParts return_nan(FloatParts a, float_status *s)
|
||||
{
|
||||
switch (a.cls) {
|
||||
case float_class_snan:
|
||||
g_assert(is_nan(a.cls));
|
||||
if (is_snan(a.cls)) {
|
||||
float_raise(float_flag_invalid, s);
|
||||
a = parts_silence_nan(a, s);
|
||||
/* fall through */
|
||||
case float_class_qnan:
|
||||
if (s->default_nan_mode) {
|
||||
return parts_default_nan(s);
|
||||
if (!s->default_nan_mode) {
|
||||
return parts_silence_nan(a, s);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
} else if (!s->default_nan_mode) {
|
||||
return a;
|
||||
}
|
||||
return a;
|
||||
return parts_default_nan(s);
|
||||
}
|
||||
|
||||
static FloatParts pick_nan(FloatParts a, FloatParts b, float_status *s)
|
||||
|
|
Loading…
Reference in a new issue