[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [V2 PATCH 14/18] target-ppc: Fix and enable fri[mnpz]
From: |
Tom Musta |
Subject: |
[Qemu-ppc] [V2 PATCH 14/18] target-ppc: Fix and enable fri[mnpz] |
Date: |
Wed, 11 Dec 2013 13:16:34 -0600 |
The fri* series of instructions was introduced prior to ISA 2.06 and
is supported on Power7 and Power8 hardware. However, the instruction
is still considered illegal in the P7 and P8 QEMU emulation models.
This patch enables these instructions for the P7 and P8 machines.
Also, the existing helper is modified to correctly handle some of
the boundary cases (NaNs and the inexact flag).
Signed-off-by: Tom Musta <address@hidden>
---
target-ppc/fpu_helper.c | 12 ++++++------
target-ppc/translate_init.c | 2 ++
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 18b9bcd..981f002 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -668,18 +668,18 @@ static inline uint64_t do_fri(CPUPPCState *env, uint64_t
arg,
if (unlikely(float64_is_signaling_nan(farg.d))) {
/* sNaN round */
- farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN |
- POWERPC_EXCP_FP_VXCVI, 1);
- } else if (unlikely(float64_is_quiet_nan(farg.d) ||
- float64_is_infinity(farg.d))) {
- /* qNan / infinity round */
- farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXCVI, 1);
+ fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
+ farg.ll = float64_default_nan | 0x0008000000000000ul;
} else {
set_float_rounding_mode(rounding_mode, &env->fp_status);
farg.ll = float64_round_to_int(farg.d, &env->fp_status);
/* Restore rounding mode from FPSCR */
fpscr_set_rounding_mode(env);
+
+ /* fri* does not set FPSCR[XX] */
+ env->fp_status.float_exception_flags &= ~float_flag_inexact;
}
+ helper_float_check_status(env);
return farg.ll;
}
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 491e56c..7bb9bbc 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -7228,6 +7228,7 @@ POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data)
PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES |
PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE |
PPC_FLOAT_STFIWX |
+ PPC_FLOAT_EXT |
PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ |
PPC_MEM_SYNC | PPC_MEM_EIEIO |
PPC_MEM_TLBIE | PPC_MEM_TLBSYNC |
@@ -7265,6 +7266,7 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data)
PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES |
PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE |
PPC_FLOAT_STFIWX |
+ PPC_FLOAT_EXT |
PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ |
PPC_MEM_SYNC | PPC_MEM_EIEIO |
PPC_MEM_TLBIE | PPC_MEM_TLBSYNC |
--
1.7.1
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, (continued)
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Peter Maydell, 2013/12/11
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Tom Musta, 2013/12/11
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Peter Maydell, 2013/12/17
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Peter Maydell, 2013/12/17
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Tom Musta, 2013/12/18
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Peter Maydell, 2013/12/18
- Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 11/18] softfloat: Fix float64_to_uint32, Tom Musta, 2013/12/18
[Qemu-ppc] [V2 PATCH 12/18] softfloat: Fix float64_to_uint32_round_to_zero, Tom Musta, 2013/12/11
[Qemu-ppc] [V2 PATCH 13/18] target-ppc: Add ISA 2.06 fcfid[u][s] Instructions, Tom Musta, 2013/12/11
[Qemu-ppc] [V2 PATCH 14/18] target-ppc: Fix and enable fri[mnpz],
Tom Musta <=
[Qemu-ppc] [V2 PATCH 15/18] target-ppc: Add ISA 2.06 ftdiv Instruction, Tom Musta, 2013/12/11
[Qemu-ppc] [V2 PATCH 18/18] target-ppc: Add ISA2.06 lfiwzx Instruction, Tom Musta, 2013/12/11
Re: [Qemu-ppc] [Qemu-devel] [V2 PATCH 00/18] target-ppc: Base ISA V2.06 for Power7/Power8, Peter Maydell, 2013/12/11
[Qemu-ppc] [V2 PATCH 16/18] target-ppc: Add ISA 2.06 ftsqrt, Tom Musta, 2013/12/11
[Qemu-ppc] [V2 PATCH 17/18] target-ppc: Enable frsqrtes on Power7 and Power8, Tom Musta, 2013/12/11