I am working on a compiler and am interested in x86 machine code statistics.
But what about all the rest of the instructions? How much work does a team put into a compiler to get more optimization out of it by using different optimized instructions?
Specifically, there are instructions like for crypto operations (eg
CRC32). There are advanced bit manipulation instructions (eg
BEXTR). There are MMX and SSE instructions (tons and tons of these), and floating point instructions. Etc.
Other than these top 20, what do compilers typically take advantage of. If it’s all over the place, that would be good to know, but I’m mainly looking for a sense of what the cutting edge is in terms of today’s compiler implementations, what instructions or groups of instructions they use, and what they ignore.