On Sun, 21 Feb 2010, Richard Guenther wrote:

> > The biggest change we need to make for x86 is to enable SSE2,
> > so we can get proper rounding behavior for float and double,
> > as well as significant performance increases.
> 
> I think Joseph fixed the rounding behavior for 4.5.  Also without an adjusted

Well, I provided the option for rounding that is predictable and in 
accordance with C99 when using the default -mfpmath=387.  But that option 
does carry the performance cost of storing to / loading from memory at 
various points, as required to get the rounding on 387 (and there are 
still cases where excess precision means double rounding).

> ABI you'd introduce x87 <-> SSE register moves which are not helpful
> for performance.

As I understand it, whether -mfpmath=387 (with excess precision) or 
-mfpmath=sse is the default is also considered part of the platform API 
(like whether char is signed or unsigned by default, for example), in 
addition to the ABI issues that can slow things down when SSE is used.

If people really want a new 32-bit x86 ABI I'd suggest making it an ILP32 
ABI for processors running in 64-bit mode, so 64-bit registers are 
available without the additional memory cost of 64-bit pointers for code 
not needing them - you could also assume a minimum of -march=x86-64, which 
implies SSE2.  But if there were significant demand for such an ABI I 
think we'd have seen it by now, and you probably run into the various 
syscall interface problems that MIPS n32 has had.

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to