4 ms·
That's pretty misleading. You can remove many instructions while keeping CPU x86 compatible. You can e.g. remove all MMX instructions and signal this fact thro
by The_Colonel 6y ago
That's pretty misleading. You can remove many instructions while keeping CPU x86 compatible.
You can e.g. remove all MMX instructions and signal this fact through CPUID. Very few apps require MMX (as in can't work without it).
Another option is to remove the instructions from hardware and emulate them in microcode.
- saagarjha 6y agoA lot of software will ignore cpuid and assume features like MMX.
- rbanffy 6y agoThis is a bug.
- jcranmer 6y agoSeveral CPU features require other ones--for example, AVX requires the XSAVE feature. Additionally, x86-64 implicitly requires several features (most notably SSE2), and the glibc folks have been working on a proposed ABI for x86-64 that groups the feature sets into levels--roughly base (≤SSE2), ≤SSE4.2, ≤AVX2, current skylake-server (a clutch of AVX-512 features), with the BMI and FMA features scattered in there somewhere. That said, the MMX instructions in particular are so problematic to use (and SSE ubiquitous and strictly better) that I suspect you could introduce a processor that lacks MMX support and break almost nobody, certainly far fewer people than removing x87. I don't know if there is an implicit or explicit actual dependency on MMX anywhere.
- saagarjha 6y agoPerhaps, but compilers mostly assume its existence with the default flags. So there’s plenty of software that has no fallback.
- rbanffy 6y agoWe can't really demand compilers to create code that's compatible with all the ancient variations of a currently popular architecture. It's still good manners to include a function that exits with a clear error message about a required architecture feature that's missing. I had similar issues with PPC software that just blindly assumed I had Altivec on my G3. It wasn't fun.