If you mean: “Will the vast majority of modern-day software I’ll encounter that’s intended for x86 work on an AMD CPU?”, the answer is “Yes.”
If you mean: “Is it possible to construct a program that will only run on an Intel CPU and not on an AMD CPU?” The answer to that is also “Yes.”
Intel CPUs vary in capability with respect to each other. It’s possible to write a program that runs on some Intel CPUs and not others. x86 CPUs offer a mechanism (CPUID
) that tells a program which features it supports and which features it does not. Modern application software is supposed to test for what processor features are available, and stick to the features the CPU actually has.
AMD CPUs vary in capability with respect to Intel CPUs, and with respect to other AMD CPUs. They identify their capabilities to applications in the same way.
An application could always insist on a combination of capabilities that you find on Intel CPUs, but which AMD doesn’t have a precise match.
CPUID
also reports a processor vendor string. On Intel CPUs, it returns “GenuineIntel”, and on AMD CPUs, it returns “AuthenticAMD.” So, trivially, you could write a program that relies on CPUID
returning “GenuineIntel”.
There’s an additional backwater: Model Specific Registers (MSRs). As you can tell from the name, these are specific to an individual processor model. They can be quite different between different processor models, and different between Intel and AMD. They are explicitly not a point of compatibility.
An application that plays nice won’t have issues moving between AMD and Intel. CPUID
is intended to improve compatibility across processor generations and vendors, not hurt it. MSRs are there for OS and BIOS writers, not applications. If you go grab an off-the-shelf product for a Windows box, or install your favorite Linux distro, you’re seriously unlikely to have any issues. I’ve run AMD processors in my main system for years, with zero “only works on Intel” issues.
Applications designed to specifically tie themselves to an Intel processor can do so, though. There’s enough hooks to enable that, if someone wants to do such a thing.