qemu/target/ppc/translate
Lucas Mateus Castro (alqotel) c3a824b0cf target/ppc: Fixed call to deferred exception
mtfsf, mtfsfi and mtfsb1 instructions call helper_float_check_status
after updating the value of FPSCR, but helper_float_check_status
checks fp_status and fp_status isn't updated based on FPSCR and
since the value of fp_status is reset earlier in the instruction,
it's always 0.

Because of this helper_float_check_status would change the FI bit to 0
as this bit checks if the last operation was inexact and
float_flag_inexact is always 0.

These instructions also don't throw exceptions correctly since
helper_float_check_status throw exceptions based on fp_status.

This commit created a new helper, helper_fpscr_check_status that checks
FPSCR value instead of fp_status and checks for a larger variety of
exceptions than do_float_check_status.

Since fp_status isn't used, gen_reset_fpstatus() was removed.

The hardware used to compare QEMU's behavior to was a Power9.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br>
Message-Id: <20211201163808.440385-2-lucas.araujo@eldorado.org.br>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2021-12-17 17:57:12 +01:00
..
dfp-impl.c.inc target/ppc: Move ddedpd[q],denbcd[q],dscli[q],dscri[q] to decodetree 2021-11-09 10:32:52 +11:00
fixedpoint-impl.c.inc target/ppc: cntlzdm/cnttzdm implementation without brcond 2021-11-09 10:32:53 +11:00
fp-impl.c.inc target/ppc: Fixed call to deferred exception 2021-12-17 17:57:12 +01:00
fp-ops.c.inc target/ppc: Move load and store floating point instructions to decodetree 2021-11-09 10:32:51 +11:00
spe-impl.c.inc ppc patch queue 2020-08-18 2020-08-24 09:35:21 +01:00
spe-ops.c.inc meson: rename included C source files to .c.inc 2020-08-21 06:18:30 -04:00
vmx-impl.c.inc target/ppc: Implement Vector Extract Double to VSR using GPR index insns 2021-11-09 10:32:52 +11:00
vmx-ops.c.inc target/ppc: Move vinsertb/vinserth/vinsertw/vinsertd to decodetree 2021-11-09 10:32:52 +11:00
vsx-impl.c.inc target/ppc: Implement lxvkq instruction 2021-11-09 10:32:53 +11:00
vsx-ops.c.inc target/ppc: moved XXSPLTIB to using decodetree 2021-11-09 10:32:53 +11:00