Consolidate the tests for zero and anynorm.
Add comments for a few cases.
Signed-off-by: Richard Henderson <[email protected]>
---
fpu/softfloat-parts.c.inc | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc
index 3246702289..45606f8402 100644
--- a/fpu/softfloat-parts.c.inc
+++ b/fpu/softfloat-parts.c.inc
@@ -556,6 +556,7 @@ FloatPartsN partsN(addsub)(const FloatPartsN *a_orig,
}
if (ab_mask == float_cmask_zero) {
+ /* 0 - 0 */
a.sign = s->float_rounding_mode == float_round_down;
return a;
}
@@ -581,23 +582,20 @@ FloatPartsN partsN(addsub)(const FloatPartsN *a_orig,
}
if (ab_mask == float_cmask_zero) {
+ /* 0 + 0 */
return a;
}
if (ab_mask & float_cmask_inf) {
+ /* N + Inf or Inf + N */
a.cls = float_class_inf;
return a;
}
}
- if (b.cls == float_class_zero) {
- g_assert(is_anynorm(a.cls));
- return a;
- }
-
- g_assert(a.cls == float_class_zero);
- g_assert(is_anynorm(b.cls));
- return b;
+ /* 0 +/- N or N +/- 0 */
+ assert((ab_mask & float_cmask_zero) && (ab_mask & float_cmask_anynorm));
+ return b.cls == float_class_zero ? a : b;
}
/*
--
2.43.0