aboutsummaryrefslogtreecommitdiff
path: root/fpu
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2020-11-11 17:36:39 -0800
committerRichard Henderson <richard.henderson@linaro.org>2021-05-16 07:13:51 -0500
commit4109b9ea8ada91894dd561594dc5f2db83ebacf3 (patch)
treef04056b6637099fa89b63e1a48bde4a53efc1992 /fpu
parent92ff426d7bc60821080f9d15cca896cfad7052b7 (diff)
downloadqemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.zip
qemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.tar.gz
qemu-4109b9ea8ada91894dd561594dc5f2db83ebacf3.tar.bz2
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')
-rw-r--r--fpu/softfloat.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 2123453..ee60954 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