@samitouri / QOSamiQemu / commits / 99a7b9b348

fpu: Change parts_float_to_float_narrow to parts128_to_parts64

Rename and return FloatParts64 structure. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Richard Henderson committed Apr 25, 2026 at 19:59 UTC 99a7b9b348061b0acd1b311e5fc4f67d8c40ea33
1 file changed +15 -15
fpu/softfloat.c
+15 -15
@@ -2563,29 +2563,31 @@ static void parts128_float_to_float(FloatParts128 *a, float_status *s)
2563 }
2564 }
2565
2566 -static void parts_float_to_float_narrow(FloatParts64 *a, FloatParts128 *b,
2567 - float_status *s)
2566 +static FloatParts64 parts128_to_parts64(FloatParts128 *b, float_status *s)
2567 {
2569 - a->cls = b->cls;
2570 - a->sign = b->sign;
2571 - a->exp = b->exp;
2568 + FloatParts64 r = {
2569 + .cls = b->cls,
2570 + .sign = b->sign,
2571 + .exp = b->exp,
2572 + };
2573
2573 - switch (a->cls) {
2574 + switch (r.cls) {
2575 case float_class_denormal:
2576 float_raise(float_flag_input_denormal_used, s);
2577 /* fall through */
2578 case float_class_normal:
2578 - frac64_truncjam(a, b);
2579 + frac64_truncjam(&r, b);
2580 break;
2581 case float_class_snan:
2582 case float_class_qnan:
2583 /* Discard the low bits of the NaN. */
2583 - a->frac = b->frac_hi;
2584 - parts64_return_nan(a, s);
2584 + r.frac = b->frac_hi;
2585 + parts64_return_nan(&r, s);
2586 break;
2587 default:
2588 break;
2589 }
2590 + return r;
2591 }
2592
2593 static void parts_float_to_float_widen(FloatParts128 *a, FloatParts64 *b,
@@ -2773,18 +2775,16 @@ bfloat16 float64_to_bfloat16(float64 a, float_status *s)
2775 float32 float128_to_float32(float128 a, float_status *s)
2776 {
2777 FloatParts128 p128 = float128_unpack_canonical(a, s);
2776 - FloatParts64 p64;
2778 + FloatParts64 p64 = parts128_to_parts64(&p128, s);
2779
2778 - parts_float_to_float_narrow(&p64, &p128, s);
2780 return float32_round_pack_canonical(&p64, s);
2781 }
2782
2783 float64 float128_to_float64(float128 a, float_status *s)
2784 {
2785 FloatParts128 p128 = float128_unpack_canonical(a, s);
2785 - FloatParts64 p64;
2786 + FloatParts64 p64 = parts128_to_parts64(&p128, s);
2787
2787 - parts_float_to_float_narrow(&p64, &p128, s);
2788 return float64_round_pack_canonical(&p64, s);
2789 }
2790
@@ -2812,7 +2812,7 @@ float32 floatx80_to_float32(floatx80 a, float_status *s)
2812 FloatParts128 p128;
2813
2814 if (floatx80_unpack_canonical(&p128, a, s)) {
2815 - parts_float_to_float_narrow(&p64, &p128, s);
2815 + p64 = parts128_to_parts64(&p128, s);
2816 } else {
2817 parts64_default_nan(&p64, s);
2818 }
@@ -2825,7 +2825,7 @@ float64 floatx80_to_float64(floatx80 a, float_status *s)
2825 FloatParts128 p128;
2826
2827 if (floatx80_unpack_canonical(&p128, a, s)) {
2828 - parts_float_to_float_narrow(&p64, &p128, s);
2828 + p64 = parts128_to_parts64(&p128, s);
2829 } else {
2830 parts64_default_nan(&p64, s);
2831 }