This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Excess precision problem on IA-64
- From: Steve Ellcey <sje at cup dot hp dot com>
- To: ebotcazou at adacore dot com, pinskia at physics dot uc dot edu
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 27 Oct 2005 14:25:58 -0700 (PDT)
- Subject: Re: Excess precision problem on IA-64
> > This seems like any other target which has a fused multiply and add
> > instruction like PPC. Maybe a target option to turn on and off the fma
> > instruction like there is for PPC.
>
> I'm under the impression that it's worse on IA-64 because of the "infinite
> precision", but I might be wrong.
>
> --
> Eric Botcazou
The HP compiler generates fused multiply and add by default and has several
settings for the +Ofltacc option to control this (and other optimizations
that affect floating point accuracy).
+Ofltacc=default
Allows contractions, such as fused multiply-add (FMA), but
disallows any other floating point optimization that can result
in numerical differences.
+Ofltacc=limited
Like default, but also allows floating point optimizations which
may affect the generation and propagation of infinities, NaNs,
and the sign of zero.
+Ofltacc=relaxed
In addition to the optimizations allowed by limited, permits
optimizations, such as reordering of expressions, even if
parenthesized, that may affect rounding error. This is the same
as +Onofltacc.
+Ofltacc=strict
Disallows any floating point optimization that can result in
numerical differences. This is the same as +Ofltacc.
It would be easy enough to add an option that turned off the use of the
fused multiply and add in GCC but I would hate to see its use turned off
by default.
Steve Ellcey
sje@cup.hp.com