diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2012-09-07 17:13:28 +0200 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-09-08 09:03:45 +0000 |
commit | 5acfc8320fdd455c3ee5c21fe7d3403dbc755372 (patch) | |
tree | 76244fa9b4a70d71d1a47f535941f65dc9fac1ad /softmmu_defs.h | |
parent | c29b1bee4b025f51f02cc9f521ca19cb5f3eb432 (diff) |
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>
Diffstat (limited to 'softmmu_defs.h')
0 files changed, 0 insertions, 0 deletions