diff options
author | Matheus Ferst <matheus.ferst@eldorado.org.br> | 2022-01-04 07:55:34 +0100 |
---|---|---|
committer | Cédric Le Goater <clg@kaod.org> | 2022-01-04 07:55:34 +0100 |
commit | 84ade98e87ea982ec6625ffd91058aaf443c206e (patch) | |
tree | 766f9d424a67491bf0b66cde92acce373753c4d0 /target | |
parent | fbe08667c5bd91395eea578398f07e83c768fa56 (diff) |
target/ppc: do not silence snan in xscvspdpn
The non-signalling versions of VSX scalar convert to shorter/longer
precision insns doesn't silence SNaNs in the hardware. To better match
this behavior, use the non-arithmatic conversion of helper_todouble
instead of float32_to_float64. A test is added to prevent future
regressions.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
Message-Id: <20211228120310.1957990-1-matheus.ferst@eldorado.org.br>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Diffstat (limited to 'target')
-rw-r--r-- | target/ppc/fpu_helper.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 700c79156b..e5c29b53b8 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -2816,10 +2816,7 @@ uint64_t helper_xscvdpspn(CPUPPCState *env, uint64_t xb) uint64_t helper_xscvspdpn(CPUPPCState *env, uint64_t xb) { - float_status tstat = env->fp_status; - set_float_exception_flags(0, &tstat); - - return float32_to_float64(xb >> 32, &tstat); + return helper_todouble(xb >> 32); } /* |