fcmove on Alpha not qualified with /su when compiling -mieee - is that correct ?
Toon Moene
toon@moene.indiv.nluug.nl
Mon Jul 3 08:47:00 GMT 2000
L.S.,
Hope someone with some more experience on Alpha and -mieee compilation
can enlighten me.
I'm trying to track down a floating point exception when running the
DOUBLE PRECISION Nonsymmetric eigenproblem condition estimation routines
of the LAPACK test suite.
The exception occurs in the following line:
Program received signal SIGFPE, Arithmetic exception.
dlanv2_ (a=0x1fff8f60, b=0x1fff8f80, c=0x1fff8f68, d=0x1fff8f88,
rt1r=0x1fff8dd8, rt1i=0x1fff8de0, rt2r=0x1fff8de8, rt2i=0x1fff8df0,
cs=0x1fff8d98, sn=0x1fff8da0) at dlanv2.f:165
165 P = SIGN( SAB*SAC, C )
Current language: auto; currently fortran
and the culprit is:
(gdb) p *c
$1 = 1.0489098759942388e-308
So the obvious question is: Why do I get an exception on a denormal
number while I compiled all the stuff with -mieee ?
It turns out that floating point conditional moves are not compiled with
the /su qualifier, like all the other floating point operations (I quote
part of the gdb `disas' command on the routine in question here):
0x1200bb764 <dlanv2_+436>: cmptle/su $f15,$f22,$f11
0x1200bb768 <dlanv2_+440>: mult/su $f0,$f10,$f14
0x1200bb76c <dlanv2_+444>: fcmovne $f11,$f22,$f15
0x1200bb770 <dlanv2_+448>: divt/su $f22,$f15,$f11
0x1200bb774 <dlanv2_+452>: divt/su $f2,$f15,$f12
Is this by design ? It fails both in gcc-2.95.2 and the latest CVS
download.
Thanks in advance for any insight ...
--
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
GNU Fortran 95: http://g95.sourceforge.net/ (under construction)
More information about the Gcc
mailing list