diff options
author | Richard Henderson | 2020-11-12 02:36:39 +0100 |
---|---|---|
committer | Richard Henderson | 2021-05-16 14:13:51 +0200 |
commit | 4109b9ea8ada91894dd561594dc5f2db83ebacf3 (patch) | |
tree | f04056b6637099fa89b63e1a48bde4a53efc1992 /fpu/softfloat.c | |
parent | softfloat: Use pointers with parts_silence_nan (diff) | |
download | qemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.tar.gz qemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.tar.xz qemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.zip |
softfloat: Rearrange FloatParts64
Shuffle the fraction to the end, otherwise sort by size.
Add frac_hi and frac_lo members to alias frac.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'fpu/softfloat.c')
-rw-r--r-- | fpu/softfloat.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 2123453d40..ee609540aa 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -511,10 +511,20 @@ static inline __attribute__((unused)) bool is_qnan(FloatClass c) */ typedef struct { - uint64_t frac; - int32_t exp; FloatClass cls; bool sign; + int32_t exp; + union { + /* Routines that know the structure may reference the singular name. */ + uint64_t frac; + /* + * Routines expanded with multiple structures reference "hi" and "lo" + * depending on the operation. In FloatParts64, "hi" and "lo" are + * both the same word and aliased here. + */ + uint64_t frac_hi; + uint64_t frac_lo; + }; } FloatParts64; #define DECOMPOSED_BINARY_POINT 63 |