This is the mail archive of the
mailing list for the GCC project.
Re: RFC: Define __FPMATH_387__ and __FPMATH_SSE__
On Thu, Mar 02, 2006 at 04:34:09PM +0100, Richard Guenther wrote:
> On 3/2/06, H. J. Lu <firstname.lastname@example.org> wrote:
> > On Thu, Mar 02, 2006 at 04:08:54PM +0100, Richard Guenther wrote:
> > > On 3/2/06, H. J. Lu <email@example.com> wrote:
> > > > With this patch:
> > > >
> > > > http://gcc.gnu.org/ml/gcc-patches/2004-11/msg01877.html
> > > >
> > > > gcc no longer mixes SSE and x387 math by default. However glibc
> > > > still assumes gcc mixes SSE and x387 math. The x86-64 FP control
> > > > routines in glibc change both SSE and x387 units, which is no
> > > > longer necessary with the newer gcc. But glibc has no way to know
> > > > if gcc mixes SSE and x387 math. I am proposing to define
> > > > __FPMATH_387__ if x387 math is used and define __FPMATH_SSE__ if
> > > > SSE math is used, respectively. If 2 units are used, both will
> > > > be defined. Glibc can have sets math unit control routines and
> > > > only call the ones be using.
> > >
> > > Which routines are you referring to? I can only find
> > > sysdeps/x86_64/fpu_control.h
> > > which only touches x387 unit. I think it would make sense to add gcc builtins
> > > for status/control word changes, though.
> > Check <fenv.h> and sysdeps/x86_64/fpu. There are a whole bunch of them.
> I see. But this is not in functions inlined into user code, but only
> compiled into
> the library, right? Also for things like fesetround, it still needs
Yes. That is for float and double functions in libm.
> to touch x387
> flags for XFmode long long operations.
I assume you meant long double. If the library knows it doesn't long
double, it doesn't need to touch x87 unit control.