Modern CPUs have quite a few features that generic amd64/intel64 code cannot make use of, simply because they are not
available everywhere and including them would break the code on unsupporting platforms. The solution is to not use
these features, or ship different specialised binaries for different target CPUs. The problem with the first approach
is that you miss out on possible optimisations and the problem with the second approach is that most users don’t know
which features their CPUs support, possibly picking a wrong executable (which won’t run → bad user experience) or a less
optimised one (which is again problem 1). But there is an elegant GCC-specific alternative: Function multiversioning!