@samitouri / QOSamiQemu / commits / f26726c10c

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 }