Well, it doesn't say infinitely many things; I think my interpretation of it is reasonable. I'm glad that documentation's wrong, though.
You mean x86_64 on arm64 Rosetta ("Rosetta 2", unofficially)?
Nehalem is ancient. It was a particularly important step up for Intel's microarchitectures, but, it is now a dinosaur. It's a weird omission to not at least provide some compatibility with newer x86_64 microarchitectures, even if e.g. the performance for AVX instructions is poor.
Ugh, I see now - per Apple's documentation:
Rosetta translates all x86_64
instructions, but it doesn’t support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions.
Sidenote: What an absurd opening statement. Obviously it doesn't support all x86_64 instructions - two seconds later they provide examples! 
The potential saving grace here is that in a fat binary Rosetta is of no concern. So it does complicate the build system a bit more, but in principle it should still be possible for it to default to a sensible x86_64 microarchitecture baseline iff an arm64 slice is being included anyway. I'm guessing swiftc
doesn't actually handle the fat binary aspect, though, so this is therefore something the driver (e.g. Xcode) would have to cause?
It looks like it doesn't, though, based on the fact that I see noticeable performance improvements by simply adding -march=skylake
even to a fat binary build.
Apple advise dynamic code selection to work around this, but to my knowledge the Swift compiler and standard toolchains (SPM & Xcode) have no support for this…? In the sense of doing it for me. I can obviously write manual code for dynamic selection, and duplicate implementations, but in the context of -march
/ -mcpu
those are not applicable (and more to the point, writing SIMD code by hand is extremely difficult, so I'm not even going to try).