This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

[Bug target/49257] -mfpmath=sse generates x87 instructions on 32 bits OS


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49257

--- Comment #13 from Richard Henderson <rth at gcc dot gnu.org> 2011-06-07 18:40:48 UTC ---
I apologize.  The error you're seeing here is the sort that's
handled by the second #if section in libgcc's __floatdisf.

In particular,

  /* Protect against double-rounding error.
     Represent any low-order bits, that might be truncated by a bit that
     won't be lost.  The bit can go in anywhere below the rounding position
     of the FSTYPE.  A fixed mask and bit position handles all usual
     configurations.  */
  if (! (- ((DWtype) 1 << FSIZE) < u
         && u < ((DWtype) 1 << FSIZE)))

This is because, while DF > 2*SF bits, DF < DI bits, so we've
already lost a bit while converting to DFmode.

This doesn't appear to be supportable inline without excessive code bloat.


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