[citation][nom]The_Trutherizer[/nom]A company with a cross licensing agreement with AMD and who uses and optimises for AMD's 64bit instructions quite enthusiastically...[/citation]
Yes, but then i guess it's up to AMD to optimize for Intel's x86-64 implementation, then (since there are slight variations)?
The note on Intel's compiler is that it may not optimize for non-Intel CPUs to the same extent, which means that while it may optimize for common shared implementations, it might not optimize for implememtations and extensions that are native to Intel's chips.
See, an ISA can be implemented in different ways, so can extensions like AVX, SSE etc. Like Piledriver and Ivy Bridge; two different ways to do the same thing, based on the same concept.
So I wouldn't expect Intel to optimize for AMD's instructions.
I think it's safe to say that unless you're in the chip industry, you'll most likely end up oversimplifying things, as we really don't know as much about how a CPU works as the engineers at Intel/AMD.
I mean sure, a lot of people would have read about the x86 ISA and the 8086 processor or other stuff in college, but i highly doubt the 8086 looks anything remotely like today's chips in terms of logic design.
So yeah, Intel not optimizing for AMD's processors might not be as simple as you think. Seriously man, someone has to sit and do that, be paid to do that...there's a cost on Intel's part. Why would they incur that? To help AMD? WHY WOULD THEY DO THAT?
I'm not saying Intel should be alowed to bribe vendors and all like they did, that's anti-compettitive, but making your own product perform better surely isn't? It's not like their compilers make performance any worse on non-Intel processors...nor is it necessary to even use it.
AMD should have their own compiler made available that optimizes code for their own CPUs/APUs, as simple as that.
Anyway:
https://en.wikipedia.org/wiki/X86-64
https://en.wikipedia.org/wiki/X86-64#Differences_between_AMD64_and_Intel_64
Although nearly identical, there are some differences between the two instruction sets in the semantics of a few seldom used machine instructions (and/or situations), which are mainly used for system programming. Compilers generally produce executables (i.e. machine code) that avoid any differences, at least for ordinary application programs. This is therefore of interest mainly to developers of compilers, operating systems and similar, which must deal with individual and special system instructions.
There's a list of differences, go through them.