• N
    fix i386 fegetround and make fesetround faster · 88cfaf8a
    nsz 提交于
    Note that the new fesetround has slightly different semantics:
    
    Storing the floating-point environment with fnstenv makes the
    next fldenv (or fldcw) "non-signaling", so unmasked and pending
    exceptions does not invoke the exception handler.
    (These are rare since exceptions are handled immediately and by
    default all exceptions are masked anyway. But if one manually
    unmasks an exception in the control word then either sets the
    corresponding exception flag in the status word or the execution
    of an exception raising floating-point operation gets interrupted
    then it may happen).
    So the old implementation did not trap in some rare cases
    where the new implementation traps.
    
    However POSIX does not specify anything like the x87 exception
    handling traps and the fnstenv/fldenv pair is significantly slower
    than the fnstcw/fldcw pair (new code is about 5x faster here and
    it's dominated by the function call overhead).
    88cfaf8a
fenv.s 1.2 KB