diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2021-12-17 17:57:14 +0100 |
---|---|---|
committer | Cédric Le Goater <clg@kaod.org> | 2021-12-17 17:57:14 +0100 |
commit | 149a48f6e6ccedfa01307d45884aa480f5bf77c5 (patch) | |
tree | f9a4308cfa458de963a5395b69e6fc55018b6c28 /include/fpu | |
parent | 9befbe4f629d5c9b23efc347e90fed8b4d9b74e6 (diff) | |
download | qemu-149a48f6e6ccedfa01307d45884aa480f5bf77c5.zip qemu-149a48f6e6ccedfa01307d45884aa480f5bf77c5.tar.gz qemu-149a48f6e6ccedfa01307d45884aa480f5bf77c5.tar.bz2 |
softfloat: Extend float_exception_flags to 16 bits
We will shortly have more than 8 bits of exceptions.
Repack the existing flags into low bits and reformat to hex.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211119160502.17432-2-richard.henderson@linaro.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Diffstat (limited to 'include/fpu')
-rw-r--r-- | include/fpu/softfloat-types.h | 16 | ||||
-rw-r--r-- | include/fpu/softfloat.h | 2 |
2 files changed, 9 insertions, 9 deletions
diff --git a/include/fpu/softfloat-types.h b/include/fpu/softfloat-types.h index 5bcbd04..65a43af 100644 --- a/include/fpu/softfloat-types.h +++ b/include/fpu/softfloat-types.h @@ -145,13 +145,13 @@ typedef enum __attribute__((__packed__)) { */ enum { - float_flag_invalid = 1, - float_flag_divbyzero = 4, - float_flag_overflow = 8, - float_flag_underflow = 16, - float_flag_inexact = 32, - float_flag_input_denormal = 64, - float_flag_output_denormal = 128 + float_flag_invalid = 0x0001, + float_flag_divbyzero = 0x0002, + float_flag_overflow = 0x0004, + float_flag_underflow = 0x0008, + float_flag_inexact = 0x0010, + float_flag_input_denormal = 0x0020, + float_flag_output_denormal = 0x0040, }; /* @@ -171,8 +171,8 @@ typedef enum __attribute__((__packed__)) { */ typedef struct float_status { + uint16_t float_exception_flags; FloatRoundMode float_rounding_mode; - uint8_t float_exception_flags; FloatX80RoundPrec floatx80_rounding_precision; bool tininess_before_rounding; /* should denormalised results go to zero and set the inexact flag? */ diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index a249991..0d3b407 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -100,7 +100,7 @@ typedef enum { | Routine to raise any or all of the software IEC/IEEE floating-point | exception flags. *----------------------------------------------------------------------------*/ -static inline void float_raise(uint8_t flags, float_status *status) +static inline void float_raise(uint16_t flags, float_status *status) { status->float_exception_flags |= flags; } |