Dave Rivers wrote:

>That is, of course one of the issues.  The i386 IEEE implementation
>is not the same as the mainframe, particularly when two variables
>are loaded into registers and arithmetic is applied.  The result
>will be different.    So, one set of "IEEE" arithmetic on a PC
>can get very different answers than the same arithmetic on a 390.
>I don't know how gcc handles this.

Basically, by not using the host's native floating point facilities
at all.  Instead, all floating point use at compile time is done by
a floating point emulation library that can be tuned to exactly
simulate the target's native floating point format and precision.

This is necessary both for things like compile-time folding of
floating point constants, to make sure we get the same result
as we'd get had we executed the computation explicitly on the
target machine, and for things like the use of floating point
variables internally to the compiler (e.g. for branch probabilities)
where different rounding could cause different optimization
decisions and thus different emitted code in a cross vs. a
native compilation.


Mit freundlichen Gruessen / Best Regards

Ulrich Weigand

--
  Dr. Ulrich Weigand
  Linux for S/390 Design & Development
  IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
  Phone: +49-7031/16-3727   ---   Email: [EMAIL PROTECTED]

Reply via email to