qemu/target-sparc
Aurelien Jarno 5acfc8320f target-sparc: fix fcmp{s,d,q} instructions wrt exception
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>
2012-09-08 09:03:45 +00:00
..
cc_helper.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
cpu-qom.h target-sparc: QOM'ify CPU 2012-04-07 08:25:21 +00:00
cpu.c Kill off cpu_state_reset() 2012-06-04 23:00:45 +02:00
cpu.h target-sparc: Let cpu_sparc_init() return SPARCCPU 2012-06-04 23:00:45 +02:00
fop_helper.c target-sparc: fix fcmp{s,d,q} instructions wrt exception 2012-09-08 09:03:45 +00:00
helper.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
helper.h target-sparc: Add compiler attribute to some functions which don't return 2012-03-24 13:02:56 +00:00
int32_helper.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
int64_helper.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
ldst_helper.c qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
machine.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00
Makefile.objs build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
mmu_helper.c sparc: pass page aligned addresses to tlb_set_page 2012-03-27 19:46:42 +00:00
TODO fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
translate.c Implement address masking for SPARC v9 CPUs 2012-05-12 09:46:00 +00:00
vis_helper.c target-sparc: Fix mixup of uint64 and uint64_t 2012-01-22 09:55:35 +00:00
win_helper.c target-sparc: Don't overuse CPUState 2012-03-14 22:20:25 +01:00