fpu: Return struct from float16a_unpack_canonical
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson committed
Apr 25, 2026 at 18:44 UTC
f26726c10c18e89fdf9ad87bc6fe58ca07049491
1 file changed
+8
-9
fpu/softfloat.c
+8
-9
@@ -1474,17 +1474,18 @@ static FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s)
1474
return p;
1475
}
1476
1477
-static void float16a_unpack_canonical(FloatParts64 *p, float16 f,
1478
- float_status *s, const FloatFmt *params)
1477
+static FloatParts64 float16a_unpack_canonical(float16 f, float_status *s,
1478
+ const FloatFmt *params)
1479
{
1480
- *p = unpack_raw64(&float16_params, f);
1481
- parts64_canonicalize(p, s, params);
1480
+ FloatParts64 p = unpack_raw64(&float16_params, f);
1481
+ parts64_canonicalize(&p, s, params);
1482
+ return p;
1483
}
1484
1485
static void float16_unpack_canonical(FloatParts64 *p, float16 f,
1486
float_status *s)
1487
{
1487
- float16a_unpack_canonical(p, f, s, &float16_params);
1488
+ *p = float16a_unpack_canonical(f, s, &float16_params);
1489
}
1490
1491
static void bfloat16_unpack_canonical(FloatParts64 *p, bfloat16 f,
@@ -2701,9 +2702,8 @@ bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, float_status *s)
2702
float32 float16_to_float32(float16 a, bool ieee, float_status *s)
2703
{
2704
const FloatFmt *fmt16 = ieee ? &float16_params : &float16_params_ahp;
2704
- FloatParts64 p;
2705
+ FloatParts64 p = float16a_unpack_canonical(a, s, fmt16);
2706
2706
- float16a_unpack_canonical(&p, a, s, fmt16);
2707
parts64_float_to_float(&p, s);
2708
return float32_round_pack_canonical(&p, s);
2709
}
@@ -2711,9 +2711,8 @@ float32 float16_to_float32(float16 a, bool ieee, float_status *s)
2711
float64 float16_to_float64(float16 a, bool ieee, float_status *s)
2712
{
2713
const FloatFmt *fmt16 = ieee ? &float16_params : &float16_params_ahp;
2714
- FloatParts64 p;
2714
+ FloatParts64 p = float16a_unpack_canonical(a, s, fmt16);
2715
2716
- float16a_unpack_canonical(&p, a, s, fmt16);
2716
parts64_float_to_float(&p, s);
2717
return float64_round_pack_canonical(&p, s);
2718
}