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