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>
This commit is contained in:
parent
9befbe4f62
commit
149a48f6e6
@ -145,13 +145,13 @@ typedef enum __attribute__((__packed__)) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
float_flag_invalid = 1,
|
float_flag_invalid = 0x0001,
|
||||||
float_flag_divbyzero = 4,
|
float_flag_divbyzero = 0x0002,
|
||||||
float_flag_overflow = 8,
|
float_flag_overflow = 0x0004,
|
||||||
float_flag_underflow = 16,
|
float_flag_underflow = 0x0008,
|
||||||
float_flag_inexact = 32,
|
float_flag_inexact = 0x0010,
|
||||||
float_flag_input_denormal = 64,
|
float_flag_input_denormal = 0x0020,
|
||||||
float_flag_output_denormal = 128
|
float_flag_output_denormal = 0x0040,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -171,8 +171,8 @@ typedef enum __attribute__((__packed__)) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct float_status {
|
typedef struct float_status {
|
||||||
|
uint16_t float_exception_flags;
|
||||||
FloatRoundMode float_rounding_mode;
|
FloatRoundMode float_rounding_mode;
|
||||||
uint8_t float_exception_flags;
|
|
||||||
FloatX80RoundPrec floatx80_rounding_precision;
|
FloatX80RoundPrec floatx80_rounding_precision;
|
||||||
bool tininess_before_rounding;
|
bool tininess_before_rounding;
|
||||||
/* should denormalised results go to zero and set the inexact flag? */
|
/* should denormalised results go to zero and set the inexact flag? */
|
||||||
|
@ -100,7 +100,7 @@ typedef enum {
|
|||||||
| Routine to raise any or all of the software IEC/IEEE floating-point
|
| Routine to raise any or all of the software IEC/IEEE floating-point
|
||||||
| exception flags.
|
| 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;
|
status->float_exception_flags |= flags;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user