Agner Fog is a computer science professor at the University of Copenhagen's college of engineering. As he puts it, “I have done research on microprocessors and optimized code for more than 12 years. My motivation is to make code compatible, especially when it pretends to be.”
Fog has written a number of blog entries about Intel's compilers and how they treat competing processors. In November, AMD and Intel settled, and Fog has written up a magnificent analysis of the agreement.
If you have any interest in compilers, and in Intel's compilers, you should definitely read his paragraph-by-paragraph read through.
Fog broke it down for me:
The machine code is actively testing for vendor ID before testing for any CPU models or instruction sets. When the vendor ID is not "GenuineIntel" then it chooses what Intel calls the "generic path", which is the least advanced among the possible paths, using the oldest instruction set for compatibility with old processors.
This happens in code generated by the Intel compiler if you allow CPU dispatching. It also happens in many Intel function libraries that are called from code compiled with the Intel compiler or with any other compiler, even if you are not explicitly asking for CPU dispatching. — Agner Fog
The big question now is: Will Intel remove barriers to its compilers working on other processors? And thus far, no one seems to know the answer.
But Fog has written some code to solve the problem. You know. Just in case. He says it's "very easy. Remove the check for vendor ID and check for supported instruction sets only. I have made a small function library as a showcase to show how to do this and how to support all x86 platforms. http://www.agner.org/optimize/#asmlib"