[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

broken kernel FP completion, -mieee



Hi,

I've noticed that floating point operations involving inexact results or
denormalized numbers seem to result in a SIGFPE on Alpha, whereas they do
not on any other platform.  This seems to affect a large number of packages,
the most recent one I noticed was my own Festival package.

A simple demonstration:

dhd@blood-axp:~$ uname -a
Linux blood-axp.eradicator.org 2.2.13 #1 Tue Nov 2 12:55:27 EST 1999 alpha
unknown
dhd@blood-axp:~$ perl -le '$f = 1e-308; $f++; print $f'
Floating point exception

vs.

dhd@bender:~$ uname -a
Linux bender.foo.bogus 2.2.10 #125 Tue Oct 26 23:02:35 EDT 1999 m68k unknown
dhd@bender:~$ perl -le '$f = 1e-308; $f++; print $f'
1

dhd@elgin:~$ uname -a
Linux elgin 2.2.13 #1 Tue Nov 2 20:16:34 EST 1999 i686 unknown
dhd@elgin:~$ perl -le '$f = 1e-308; $f++; print $f'
1

If I understand correctly this is related to the design of the Alpha FPU,
and can be compensated for by specifying the -mieee flag in compilation.
However I was under the impression that the kernel's floating point
emulation should compensate for inexact results automatically.

Is this a bug in the kernel?  Should we be recompiling things that are
broken with -mieee?  (That's what I've done for Festival for the time being)

It strikes me that the Linux kernel should provide source compatibility
across platforms, and this behaviour breaks that assumption very badly.

-- 
make: *** No rule to make target `binary-argh'.  Stop.


Reply to: