summaryrefslogtreecommitdiffstats
path: root/target-arm/helper.c
diff options
context:
space:
mode:
authorIldar Isaev2015-02-05 14:37:25 +0100
committerPeter Maydell2015-02-05 14:37:25 +0100
commitfc1792e9aa36227ee9994757974f9397684e1a48 (patch)
tree09e791d458a9e12f1d05b66a461e0a6307189929 /target-arm/helper.c
parenttarget-arm: Guest cpu endianness determination for virtio KVM ARM/ARM64 (diff)
downloadqemu-fc1792e9aa36227ee9994757974f9397684e1a48.tar.gz
qemu-fc1792e9aa36227ee9994757974f9397684e1a48.tar.xz
qemu-fc1792e9aa36227ee9994757974f9397684e1a48.zip
target-arm: fix for exponent comparison in recpe_f64
f64 exponent in HELPER(recpe_f64) should be compared to 2045 rather than 1023 (FPRecipEstimate in ARMV8 spec). This fixes incorrect underflow handling when flushing denormals to zero in the FRECPE instructions operating on 64-bit values. Signed-off-by: Ildar Isaev <ild@inbox.ru> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/helper.c')
-rw-r--r--target-arm/helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-arm/helper.c b/target-arm/helper.c
index d930021c13..1a1a00577e 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -6526,7 +6526,7 @@ float64 HELPER(recpe_f64)(float64 input, void *fpstp)
} else {
return float64_set_sign(float64_maxnorm, float64_is_neg(f64));
}
- } else if (f64_exp >= 1023 && fpst->flush_to_zero) {
+ } else if (f64_exp >= 2045 && fpst->flush_to_zero) {
float_raise(float_flag_underflow, fpst);
return float64_set_sign(float64_zero, float64_is_neg(f64));
}