Original URL: http://www.theregister.co.uk/2005/07/12/amd_vs_intel_code/

AMD alleges Intel compilers create crash code for its chips

Fork off

By Tony Smith

Posted in Data Centre, 12th July 2005 18:03 GMT

The lawsuit AMD filed against its arch-rival, Intel, alleges that a tweak in Intel's compilers can hinder the performance of code running on AMD processors.

According to the complaint: "Intel has designed its compiler purposely to degrade performance when a program is run on an AMD platform. To achieve this, Intel designed the compiler to compile code along several alternate code paths. Some paths are executed when the program runs on an Intel platform and others are executed when the program is operated on a computer with an AMD microprocessor.

"The choice of code path is determined when the program is started, using a feature known as 'CPUID' which identifies the computer's microprocessor. By design, the code paths were not created equally.

"If the program detects a 'Genuine Intel' microprocessor, it executes a fully optimized code path and operates with the maximum efficiency. However, if the program detects an 'Authentic AMD' microprocessor, it executes a different code path that will degrade the program's performance or cause it to crash."

Of course, how much damage this may have done in the real world is open to question. As one poster on Slashdot, which first noted, there's hardly evidence of code falling over left, right and center on AMD systems.

Equally, would developers creating binaries intended to run on AMD processors use Intel's compilers? You can expect Intel to optimise its compilers' output for the idiosyncrasies of its own CPU architectures, but not to make sure the code runs equally well on a competitors product.

Still, it's a big step from 'not optimising for rival processor architectures' to 'actively making code run more slowly on rival processor architectures', as AMD alleges.

Another Slashdot contributor claims this kind of thing goes back at least to January 2004 and Intel C++ 8.0. The poster claims Intel's assembly code for the memcpy command was clearly designed to be less efficient on non-Intel processors than the company's own chips. Intel developer support, he claims, said the code was optimised for the Pentium 4 and the other code was the simplest implementation for older CPUs, such as the PIII.

"It turns out that their special 'Pentium 4' memcpy, which I tested thoroughly in all kinds of situations, worked perfectly fine on an AMD Athlon and a Pentium III," he concludes and notes his decision to adopt a different compiler as a result.

Again, it's a fine line between generating good code for, say, P4s and lowest-common denominator code for everything else, and creating intentionally bad code for AMD CPUs. Many of the examples cited by Slashdot posters could easily arise from Intel's focus on P4 optimisation rather than making things difficult for AMD. Intel is, after all, under no obligation to ensure the code its compilers generate are optimised for AMD CPUs unless it explicitly says they are so optimised, which we don't believe is the case.

Either way, it's going to make for an interesting trial. ®

Related stories

EC officials raid Intel offices
Intel 'ditches' high-end 'Centrino 3' chipset
Intel and Dell thrilled to join the dual-core server chip era
Dixons disses AMD claims
AMD wants Intel evidence from 30 firms
AMD Japan sues Intel for $50m damages - and then some