fpu: Drop parts_{add,sub}_normal
Drop the forward declarations and the _Generic macros. Add partsW() for use by muladd_scalbn. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson committed
Apr 26, 2026 at 17:50 UTC
161a5e07dd54821f455e62242058862d344e40b5
2 files changed
+8
-20
fpu/softfloat-parts.c.inc
+6
-6
@@ -541,7 +541,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, FloatPartsN *b,
541
if (a->sign != b_sign) {
542
/* Subtraction */
543
if (likely(cmask_is_only_normals(ab_mask))) {
544
- if (parts_sub_normal(a, b)) {
544
+ if (partsN(sub_normal)(a, b)) {
545
return a;
546
}
547
/* Subtract was exact, fall through to set sign. */
@@ -574,7 +574,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, FloatPartsN *b,
574
} else {
575
/* Addition */
576
if (likely(cmask_is_only_normals(ab_mask))) {
577
- parts_add_normal(a, b);
577
+ partsN(add_normal)(a, b);
578
return a;
579
}
580
@@ -760,8 +760,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *a, FloatPartsN *b,
760
c_widen.exp = c->exp;
761
762
if (a->sign == c->sign) {
763
- parts_add_normal(&p_widen, &c_widen);
764
- } else if (!parts_sub_normal(&p_widen, &c_widen)) {
763
+ partsW(add_normal)(&p_widen, &c_widen);
764
+ } else if (!partsW(sub_normal)(&p_widen, &c_widen)) {
765
goto return_sub_zero;
766
}
767
}
@@ -1869,9 +1869,9 @@ static void partsN(log2)(FloatPartsN *a, float_status *s, const FloatFmt *fmt)
1869
f.exp = f_exp - frac_normalize(&f);
1870
1871
if (a_exp < 0) {
1872
- parts_sub_normal(a, &f);
1872
+ partsN(sub_normal)(a, &f);
1873
} else if (a_exp > 0) {
1874
- parts_add_normal(a, &f);
1874
+ partsN(add_normal)(a, &f);
1875
} else {
1876
*a = f;
1877
}
fpu/softfloat.c
+2
-14
@@ -779,20 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const FloatParts128 *p)
779
FloatParts128 *: parts128_##NAME, \
780
FloatParts256 *: parts256_##NAME)
781
782
-static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b);
783
-static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b);
784
-static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b);
785
-
786
-#define parts_add_normal(A, B) \
787
- PARTS_GENERIC_64_128_256(add_normal, A)(A, B)
788
-
789
-static bool parts64_sub_normal(FloatParts64 *a, FloatParts64 *b);
790
-static bool parts128_sub_normal(FloatParts128 *a, FloatParts128 *b);
791
-static bool parts256_sub_normal(FloatParts256 *a, FloatParts256 *b);
792
-
793
-#define parts_sub_normal(A, B) \
794
- PARTS_GENERIC_64_128_256(sub_normal, A)(A, B)
795
-
782
static FloatParts64 *parts64_addsub(FloatParts64 *a, FloatParts64 *b,
783
float_status *s, bool subtract);
784
static FloatParts128 *parts128_addsub(FloatParts128 *a, FloatParts128 *b,
@@ -1635,6 +1621,7 @@ static const uint16_t rsqrt_tab[128] = {
1621
};
1622
1623
#define partsN(NAME) glue(glue(glue(parts,N),_),NAME)
1624
+#define partsW(NAME) glue(glue(glue(parts,W),_),NAME)
1625
#define FloatPartsN glue(FloatParts,N)
1626
#define FloatPartsW glue(FloatParts,W)
1627
@@ -1660,6 +1647,7 @@ static const uint16_t rsqrt_tab[128] = {
1647
#undef N
1648
#undef W
1649
#undef partsN
1650
+#undef partsW
1651
#undef FloatPartsN
1652
#undef FloatPartsW
1653