|
From: | Lucas Mateus Martins Araujo e Castro |
Subject: | Re: [PATCH 0/2] Floating-point OE/UE exception bug |
Date: | Fri, 5 Aug 2022 14:00:09 -0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
"Lucas Mateus Castro(alqotel)" <lucas.araujo@eldorado.org.br> writes:From: "Lucas Mateus Castro (alqotel)" <lucas.araujo@eldorado.org.br> Changes in v2: - Completely reworked the solution: * Created re_bias in FloatFmt, it is 3/4 of the total exponent range of a FP typeI thought this might have an effect on the efficiency of the FloatFmt extraction/packing but I couldn't see any real difference in fpbench. I doubt the compiler can dead code it away if not used by a front-end. Anyway have a: Reviewed-by: Alex Bennée <alex.bennee@linaro.org> for the series.* Added rebias bools that dictates if the result should have its exponent add/subtract the re_bias value if an overflow/underflow occurs. * ppc_store_fpscr sets/unsets rebias if OE/UE is set/unset The PowerISA defines that if an overflow exception happen with FPSCR.OE set, the exponent of the intermediate result is subtracted 1536 in double precision operations and is added 1536 in an underflow exception, currently this behavior is not QEMU's behavior, this patch series fixes that. Currently there's no test in this patch series as there's no way to disable MSR.FE0 and MSR.FE1 in linux user, so any overflow/underflow exception with OE/UE set causes a trapping exception.Could you do it with a system mode test? Probably overkill for this though. I suspect tweaking testfloat would be tricky.
Matheus currently has a patch to enable prctl, it still needs to change some places that have hardcoded values for linux-user (https://github.com/PPC64/qemu/tree/alqotel-ferst-prctl-patch has Matheus' patch and a patch to remove the ifdef from fp_exceptions_enabled).
With that change it should be possible to create a normal test for this (I sent a basic one along with v1, Message-Id=20220803124324.23593-1-lucas.araujo@eldorado.org.br"><20220803124324.23593-1-lucas.araujo@eldorado.org.br>) built on top of that branch.
Thanks,
Lucas Mateus Castro (alqotel) (2): fpu: Add rebias bool, value and operation target/ppc: Bugfix FP when OE/UE are set fpu/softfloat-parts.c.inc | 21 +++++++++++++++++++-- fpu/softfloat.c | 2 ++ include/fpu/softfloat-types.h | 4 ++++ target/ppc/cpu.c | 2 ++ target/ppc/fpu_helper.c | 2 -- 5 files changed, 27 insertions(+), 4 deletions(-)-- Alex Bennée
[Prev in Thread] | Current Thread | [Next in Thread] |