Drop the forward declarations and the _Generic macros.
Add partsW() for use by muladd_scalbn.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
fpu/softfloat.c | 16 ++--------------
fpu/softfloat-parts.c.inc | 12 ++++++------
2 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index aa96ac530d..117c335d66 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -779,20 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const FloatParts128 *p)
FloatParts128 *: parts128_##NAME, \
FloatParts256 *: parts256_##NAME)
-static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b);
-static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b);
-static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b);
-
-#define parts_add_normal(A, B) \
- PARTS_GENERIC_64_128_256(add_normal, A)(A, B)
-
-static bool parts64_sub_normal(FloatParts64 *a, FloatParts64 *b);
-static bool parts128_sub_normal(FloatParts128 *a, FloatParts128 *b);
-static bool parts256_sub_normal(FloatParts256 *a, FloatParts256 *b);
-
-#define parts_sub_normal(A, B) \
- PARTS_GENERIC_64_128_256(sub_normal, A)(A, B)
-
static FloatParts64 *parts64_addsub(FloatParts64 *a, FloatParts64 *b,
float_status *s, bool subtract);
static FloatParts128 *parts128_addsub(FloatParts128 *a, FloatParts128 *b,
@@ -1635,6 +1621,7 @@ static const uint16_t rsqrt_tab[128] = {
};
#define partsN(NAME) glue(glue(glue(parts,N),_),NAME)
+#define partsW(NAME) glue(glue(glue(parts,W),_),NAME)
#define FloatPartsN glue(FloatParts,N)
#define FloatPartsW glue(FloatParts,W)
@@ -1660,6 +1647,7 @@ static const uint16_t rsqrt_tab[128] = {
#undef N
#undef W
#undef partsN
+#undef partsW
#undef FloatPartsN
#undef FloatPartsW
diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc
index e1ce2be924..6e1800b117 100644
--- a/fpu/softfloat-parts.c.inc
+++ b/fpu/softfloat-parts.c.inc
@@ -541,7 +541,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, FloatPartsN *b,
if (a->sign != b_sign) {
/* Subtraction */
if (likely(cmask_is_only_normals(ab_mask))) {
- if (parts_sub_normal(a, b)) {
+ if (partsN(sub_normal)(a, b)) {
return a;
}
/* Subtract was exact, fall through to set sign. */
@@ -574,7 +574,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, FloatPartsN *b,
} else {
/* Addition */
if (likely(cmask_is_only_normals(ab_mask))) {
- parts_add_normal(a, b);
+ partsN(add_normal)(a, b);
return a;
}
@@ -760,8 +760,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *a, FloatPartsN *b,
c_widen.exp = c->exp;
if (a->sign == c->sign) {
- parts_add_normal(&p_widen, &c_widen);
- } else if (!parts_sub_normal(&p_widen, &c_widen)) {
+ partsW(add_normal)(&p_widen, &c_widen);
+ } else if (!partsW(sub_normal)(&p_widen, &c_widen)) {
goto return_sub_zero;
}
}
@@ -1869,9 +1869,9 @@ static void partsN(log2)(FloatPartsN *a, float_status *s, const FloatFmt *fmt)
f.exp = f_exp - frac_normalize(&f);
if (a_exp < 0) {
- parts_sub_normal(a, &f);
+ partsN(sub_normal)(a, &f);
} else if (a_exp > 0) {
- parts_add_normal(a, &f);
+ partsN(add_normal)(a, &f);
} else {
*a = f;
}
--
2.43.0