[PATCH 1/1] Keep the denormal-operand exception masked; modify FE_ALL_EXCEPT accordingly.

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Aug 15 14:54:00 GMT 2018

On Aug 15 12:59, J.H. van de Water wrote:
> By excluding the denormal-operand exception from FE_ALL_EXCEPT, it will not
> be possible anymore to UNmask this exception by means of the API defined by
> /usr/include/fenv.h
> Note: terminology has changed since IEEE Std 854-1987; denormalized numbers
> are called subnormal numbers nowadays.
> This modification has basically been motivated by the fact that it is also
> not possible on Linux to manipulate the denormal-operand exception by means
> of the interface as defined by /usr/include/fenv.h. This has been the state
> of affairs on Linux since 2001 (Andreas Jaeger).
> The exceptions required by the standard (IEEE Std 754), in case they can be
> supported by the implementation, are:
> Although it is allowed to define additional exceptions, there is no reason
> to support the "denormal-operand exception" in this case (fenv.h), because
> the subnormal numbers can be handled almost as fast the normalized numbers
> by the hardware of the x86/x86_64 architecture. Said differently, a reason
> to trap on the input of subnormal numbers does not exist. At least that is
> what William Kahan and others at Intel asserted around 2000.
> (that is William Kahan of the K-C-S draft, the precursor to the standard)
> This commit modifies winsup/cygwin/include/fenv.h as follows:
>  - redefines FE_ALL_EXCEPT from 0x3f to 0x3d
>  - removes the definition for FE_DENORMAL
>  - introduces __FE_DENORM (0x2) (enum in Linux also uses __FE_DENORM)
>  - introduces FE_ALL_EXCEPT_X86 (0x3f), i.e. ALL x86/x86_64 FP exceptions

Shouldn't FE_ALL_EXCEPT_X86 be defined locally in fenv.cc only?
I don't see that Linux exports that definition.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20180815/e5c11670/attachment.sig>

More information about the Cygwin-patches mailing list