Mike Frysinger wrote:
> On Saturday 14 October 2006 04:49, Sebastian Bergmann wrote:

>>    CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"

> here's a good reason why gentoo-wiki is not official ... this is wrong.  the 
> duo cpu's are not based on the pentium4 which is what the prescott is

That was put there by me.  The thing is, while the Core CPUs have more
in common with the Pentium-M micro-architecture, -march=pentium-m highly
favors generating x87 over SSE/SSE2 instructions, since on a Pentium-M
doing SSE/SSE2 was somewhere in the neighbourhood of 30% slower.  Core
chips have improved decoding and use micro-op fusion to combine up to
four SSE instructions.  Also, with code doing fp to int conversion or
single precision division, SSE scalar ops are the win on Core (though
not as big as Netburst) since x87 instructions have to write data to
memory and read it again to reduce precision.

Based on that I've been doing benchmarks with GCC 4.1 and trunk and I
usually find '-march=prescott -mfpmath=sse' to do a bit better than
'-march=pentium-m -mfpmath=sse -msse3', and just plain '-march=prescott'
to be near identical to plain '-march=pentium-m' (for those ebuilds that
call strip-flags ;), though the latter is on average <=1% faster.
'-march=pentium-m -msse3' has actually been the worst performer, though
I have no idea why it's slower than just '-march=pentium-m'.  To be
honest I don't really trust GCC's SSE3 support in it's current state.

I've looked hard and long for an official answer to this but no one
seems to be able to give a concrete reason why one is better than the
other, other than "it's based on the Pentium-M".  It _is_, but it's
still a very different animal.  Until I got one I thought it'd be best
to document both.


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to