On Thu, Mar 02, 2006 at 04:34:09PM +0100, Richard Guenther wrote: > On 3/2/06, H. J. Lu <[EMAIL PROTECTED]> wrote: > > On Thu, Mar 02, 2006 at 04:08:54PM +0100, Richard Guenther wrote: > > > On 3/2/06, H. J. Lu <[EMAIL PROTECTED]> 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. H.J.