Richard Henderson
6967da87c6
fpu: Use {get,set}_flush_inputs_to_zero everywhere
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
86686309f1
fpu: Use {get,set}_flush_to_zero everywhere
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
1126ebe189
fpu: Use accessors for tininess_before_rounding
...
Rename get_float_detect_tininess to get_tininess_before_rounding
and move to softfloat.c, as there are no external users.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
87ab6f0ae8
fpu: Use get_floatx80_behaviour everywhere
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
6ce98c8199
fpu: Use of {get,set}_floatx80_rounding_precision everywhere
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
c26e4876d1
fpu: Use {get,set}_float_rounding_mode everywhere
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
a9717332d7
fpu: Introduce FloatExceptionFlags
...
We have, in the past, used any of uint8_t, uint16_t or int
to hold the set of exception flags. Use a typedef instead.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
3ce572aa8d
fpu: Introduce exp_scalbn
...
Avoid exponent overflow as well as checking that we don't lose information with
opposing scaling. Use it in partsN(scalbn) and partsN(round_to_int_normal).
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
f0eb9fe01b
target/s390x: Move float{32,64}_s390_divide_to_integer
...
Now that we've exposed enough infrastructure, this can be
implemented in the backend that needs it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
fc68abb2a3
fpu: Use parts64_round_to_int in parts_s390_divide_to_integer
...
We will not expose parts_round_to_int_normal.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
21da8ac79d
fpu: Return struct from parts{64,128}_muladd
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:56 -07:00
Richard Henderson
5f36d09bf6
fpu: Return struct from parts{64,128}_scalbn
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-21 19:18:45 -07:00
Richard Henderson
a93d477899
fpu: Drop QEMU_FLATTEN from muladd routines
...
The float16, bfloat16 and float128 paths are not so
important that they require forced optimization.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-09 10:50:01 -05:00
Richard Henderson
24b46e7bb7
fpu: Return struct from parts{64,128}_addsub
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 10:16:56 -05:00
Richard Henderson
e007622768
fpu: Return struct from parts{64,128}_mul
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:56:45 -05:00
Richard Henderson
1f5d3cebf0
fpu: Split scalbn from partsN(muladd_scalbn)
...
Handle the scaling separately with parts64_scalbn.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:38 -05:00
Richard Henderson
333a9d621f
fpu: Introduce record_denormals_used
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:38 -05:00
Richard Henderson
3d952d7cb5
fpu: Introduce parts64_round_to_fmt
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:38 -05:00
Richard Henderson
2f0d5f872d
fpu: Return struct from parts{64,128}_round_to_int
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
4d91aa8f77
fpu: Return struct from parts{64,128}_div
...
At the same time, export.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
bf6efdb944
fpu: Return struct from parts{64,128}_pick_nan
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
558c92ed74
fpu: Sink exp_bias adjustment in float64r32_pack_raw
...
Share the float32->float64 bias adjustment from both
the normal and denormal paths.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
343b206722
fpu: Return struct from parts{64,128}_return_nan
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
c5c5828f7f
fpu: Return struct from parts{64,128}_silence_nan
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
8fb0b7c6e3
fpu: Return struct from parts{64,128}_default_nan
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
5511af9044
fpu: Export unpack_canonical and round_pack_canonical routines
...
Export the unpacking and repacking into the various formats.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
47f8b74ab1
fpu: Export FloatFmt structures
...
Export most of the FloatFmt structures.
Skip float16_params_ahp and the floatx80 precisions.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
7a8bb2218a
fpu: Split FloatParts{64,128} to softfloat-parts.h
...
Begin exposing the intermediate representation of softfloat.
Start with just the representation structures.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
744d9e9c19
fpu: Mark pack_raw64 QEMU_ALWAYS_INLINE
...
This is almost always used with a constant FloatFmt,
so inlining pulls the constants into the shifts.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
1d8c1b44d6
fpu: Mark unpack_raw64 QEMU_ALWAYS_INLINE
...
This is almost always used with a constant FloatFmt,
so inlining pulls the constants into the shifts.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
ded64df396
fpu: Inline float64_pack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
14dfa4f8ea
fpu: Inline float32_pack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
d7f83833da
fpu: Inline bfloat16_pack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
1b57b0655d
fpu: Inline float16_pack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
4746196cf8
fpu: Inline float8_e5m2_pack_raw into single caller
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
7a457a2127
fpu: Inline float8_e4m3_pack_raw to single caller
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-05-07 09:41:37 -05:00
Richard Henderson
df540b566e
fpu: Change parts_float_to_float_widen to parts64_to_parts128
...
Rename and return FloatParts128 structure.
Use switch instead of 2 ifs.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:10:05 +10:00
Richard Henderson
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 >
2026-04-30 08:09:10 +10:00
Richard Henderson
6dd088168b
fpu: Return struct from float128_unpack_canonical
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:09:05 +10:00
Richard Henderson
845970afdf
fpu: Return struct from float128_unpack_raw
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:58 +10:00
Richard Henderson
6d22f7e149
fpu: Inline floatx80_unpack_raw into only caller
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:58 +10:00
Richard Henderson
5ad853cc5d
fpu: Return struct from float{32,64}_unpack_canonical
...
We must change float32 and float64 at once because
of the DEFINE_S390_DIVIDE_TO_INTEGER macro.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:51 +10:00
Richard Henderson
b26f0cc253
fpu: Inline float64_unpack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:51 +10:00
Richard Henderson
da43d9b787
fpu: Inline float32_unpack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:50 +10:00
Richard Henderson
b4bd7b495f
fpu: Return struct from bfloat16_unpack_canonical
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:44 +10:00
Richard Henderson
2262e3024f
fpu: Inline bfloat16_unpack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:44 +10:00
Richard Henderson
b5ac7f6827
fpu: Return struct from float16_unpack_canonical
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:38 +10:00
Richard Henderson
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 >
2026-04-30 08:08:35 +10:00
Richard Henderson
e788efd9af
fpu: Inline float16_unpack_raw into callers
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:26 +10:00
Richard Henderson
78dd9b70a3
fpu: Return struct from float8_e5m2_unpack_canonical
...
Inline float8_e5m2_unpack_raw at the same time.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2026-04-30 08:08:17 +10:00