There are a bunch of reasons for that.bob wrote: For reasons unknown, gcc seems to be better for AMD processors _every_ time I compare them... Particularly for SMP code. But on Intel boxes, and all of our stuff is currently Intel, icc is far better.
icc generates crappy code for non-Intel (read: AMD) CPUs, which is one of the reasons why some benchmarks give a huge advantage to Intel CPUs (this even got cited in the recent lawsuits that Intel faced from the US department of something). God knows how many CPUs Intel sold due to the influence of this on CPU reviews.
It's actually possible and easy to override these verifications, but some of the latest extensions (SSE 4.1 maybe) are not fully compatible with AMD, so even if you just want some of the instructions you're screwed, because Intel did not implement CPU detection properly (which would be to use the CPUID instruction to detect what instructions are supported... a mechanism that Intel itself invented).
I like icc's optimization results, but the marketing decisions made with this compiler make it a can of worms for any serious project which might run on AMD CPUs.
Another reason is that AMD seems to contribute to gcc development:
http://developer.amd.com/cpu/gnu/Pages/default.aspx