This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: fcmove on Alpha not qualified with /su when compiling -mieee - is that correct ?


On Mon, Jul 03, 2000 at 05:38:54PM +0200, Toon Moene wrote:
> Hope someone with some more experience on Alpha and -mieee compilation
> can enlighten me.

To start, there is no fcmov variant that includes qualifiers.
So yes, it is absolutely correct not to emit them.  Moreover,
fcmov does not trap.  The move happens iff the value in the register
is not 0x0000000000000000 (+0) or 0x8000000000000000 (-0).

What should be happening is that the compare insn preceeding
the fcmov should be qualified with /su.  Like so:

> 0x1200bb764 <dlanv2_+436>:      cmptle/su       $f15,$f22,$f11

> So the obvious question is: Why do I get an exception on a denormal
> number while I compiled all the stuff with -mieee ?

You shouldn't have gotten one.

The non-obvious question is what operating system and kernel version
are you running?  Even with the /su qualifier, the instruction does
still trap, but it's supposed to be fixed up in the kernel and the
program restarted.  Clearly that's not happening.

There have been bugs in even moderately recent Linux kernels,
some of which only showed up on EV6, which you're clearly running.
If you're using a Linux kernel older than 2.2.16, I recommend
that you upgrade.


r~

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]