@samitouri / QOSamiQemu / commits / 0743fd1a0b

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) {