fpu: Return struct from parts{64,128}_pick_nan_muladd
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson committed
Apr 26, 2026 at 07:56 UTC
0743fd1a0b861af26b0ad1e8c050ec9984bc5adc
1 file changed
+12
-10
fpu/softfloat-parts.c.inc
+12
-10
@@ -114,13 +114,15 @@ FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatPartsN *b,
114
return *ret;
115
}
116
117
-static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
118
- FloatPartsN *c, float_status *s,
119
- int ab_mask, int abc_mask)
117
+static FloatPartsN partsN(pick_nan_muladd)(const FloatPartsN *a,
118
+ const FloatPartsN *b,
119
+ const FloatPartsN *c,
120
+ float_status *s,
121
+ int ab_mask, int abc_mask)
122
{
123
bool infzero = (ab_mask == float_cmask_infzero);
124
bool have_snan = (abc_mask & float_cmask_snan);
123
- FloatPartsN *ret;
125
+ const FloatPartsN *ret;
126
127
if (unlikely(have_snan)) {
128
float_raise(float_flag_invalid | float_flag_invalid_snan, s);
@@ -160,7 +162,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
162
}
163
ret = c;
164
} else {
163
- FloatPartsN *val[R_3NAN_1ST_MASK + 1] = { a, b, c };
165
+ const FloatPartsN *val[R_3NAN_1ST_MASK + 1] = { a, b, c };
166
Float3NaNPropRule rule = s->float_3nan_prop_rule;
167
168
assert(rule != float_3nan_prop_none);
@@ -179,13 +181,12 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b,
181
}
182
183
if (is_snan(ret->cls)) {
182
- *ret = partsN(silence_nan)(ret, s);
184
+ return partsN(silence_nan)(ret, s);
185
}
184
- return ret;
186
+ return *ret;
187
188
default_nan:
187
- *a = partsN(default_nan)(s);
188
- return a;
189
+ return partsN(default_nan)(s);
190
}
191
192
/*
@@ -698,7 +699,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *a, FloatPartsN *b,
699
* off to the target-specific pick-a-NaN routine.
700
*/
701
if (unlikely(abc_mask & float_cmask_anynan)) {
701
- return partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask);
702
+ *a = partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask);
703
+ return a;
704
}
705
706
if (flags & float_muladd_negate_c) {