aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2024-12-11 15:31:08 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-12-11 15:31:08 +0000
commite00286187630b81fb3360d560ff7a6ca90f7191f (patch)
tree58b924be69b72d7c60528a860497c962c7cda025
parentf73bd7503def86ab322a8df560b00ef67e08ce6e (diff)
downloadqemu-e00286187630b81fb3360d560ff7a6ca90f7191f.zip
qemu-e00286187630b81fb3360d560ff7a6ca90f7191f.tar.gz
qemu-e00286187630b81fb3360d560ff7a6ca90f7191f.tar.bz2
softfloat: Use goto for default nan case in pick_nan_muladd
Remove "3" as a special case for which and simply branch to return the desired value. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20241203203949.483774-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--fpu/softfloat-parts.c.inc20
1 files changed, 10 insertions, 10 deletions
diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc
index c1a97c3..be7e931 100644
--- a/fpu/softfloat-parts.c.inc
+++ b/fpu/softfloat-parts.c.inc
@@ -85,7 +85,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
* But if we're not in default-NaN mode then the target must
* specify.
*/
- which = 3;
+ goto default_nan;
} else if (infzero) {
/*
* Inf * 0 + NaN -- some implementations return the
@@ -93,17 +93,18 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
*/
switch (s->float_infzeronan_rule) {
case float_infzeronan_dnan_never:
- which = 2;
break;
case float_infzeronan_dnan_always:
- which = 3;
- break;
+ goto default_nan;
case float_infzeronan_dnan_if_qnan:
- which = is_qnan(c->cls) ? 3 : 2;
+ if (is_qnan(c->cls)) {
+ goto default_nan;
+ }
break;
default:
g_assert_not_reached();
}
+ which = 2;
} else {
FloatClass cls[3] = { a->cls, b->cls, c->cls };
Float3NaNPropRule rule = s->float_3nan_prop_rule;
@@ -123,11 +124,6 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
}
}
- if (which == 3) {
- parts_default_nan(a, s);
- return a;
- }
-
switch (which) {
case 0:
break;
@@ -144,6 +140,10 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
parts_silence_nan(a, s);
}
return a;
+
+ default_nan:
+ parts_default_nan(a, s);
+ return a;
}
/*