mirror of
https://git.proxmox.com/git/qemu
synced 2025-10-25 17:39:38 +00:00
fcmp{s,d,q} instructions are supposed to ignore quiet NaN (contrary to
the fcmpe{s,d,q} instructions), but the current code is wrongly setting
the NV exception in that case. Moreover the current code is duplicated:
first the arguments are checked for NaN to generate an exception, and
later in case the comparison is unordered (which can only happens if one
of the argument is a NaN), the same check is done to generate an
exception.
Fix that by calling clear_float_exceptions() followed by
check_ieee_exceptions() as for the other floating point instructions.
Use the _compare_quiet functions for fcmp{s,d,q} and the _compare ones
for fcmpe{s,d,q}. Simplify the flag setting by not clearing a flag that
is set the line just below.
This fix allows the math glibc testsuite to pass.
Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
||
|---|---|---|
| .. | ||
| cc_helper.c | ||
| cpu-qom.h | ||
| cpu.c | ||
| cpu.h | ||
| fop_helper.c | ||
| helper.c | ||
| helper.h | ||
| int32_helper.c | ||
| int64_helper.c | ||
| ldst_helper.c | ||
| machine.c | ||
| Makefile.objs | ||
| mmu_helper.c | ||
| TODO | ||
| translate.c | ||
| vis_helper.c | ||
| win_helper.c | ||