From a456920fd751460f7944e872bd63e8894eabbe0b Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 17 Aug 2018 14:06:54 -0400 Subject: [PATCH] softfloat: Fix missing inexact for floating-point add For 0x1.0000000000003p+0 + 0x1.ffffffep+14 = 0x1.0001fffp+15 we dropped the sticky bit and so failed to raise inexact. Backports commit 64d450a0eaad5f02f9d6bba1dd451446297bb4dc from qemu --- qemu/fpu/softfloat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/fpu/softfloat.c b/qemu/fpu/softfloat.c index aba46898..3bc76c0b 100644 --- a/qemu/fpu/softfloat.c +++ b/qemu/fpu/softfloat.c @@ -702,7 +702,7 @@ static FloatParts addsub_floats(FloatParts a, FloatParts b, bool subtract, } a.frac += b.frac; if (a.frac & DECOMPOSED_OVERFLOW_BIT) { - a.frac >>= 1; + shift64RightJamming(a.frac, 1, &a.frac); a.exp += 1; } return a;