Skip to content
  • Aurelien Jarno's avatar
    target-sparc: fix fcmp{s,d,q} instructions wrt exception · 5acfc832
    Aurelien Jarno authored
    
    
    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: default avatarAurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
    5acfc832