By request, my usual "the least interesting part about AVX-512 is the 512 bits vector width" infodump in thread form.
So here goes, a laundry list of things introduced with AVX-512 that I think are way more important to typical use cases than the 512-bit vectors are:
@rygorous how good are compilers at emitting all of that? Or is all this goodness locked away for people hand tuning their code?
@BuschnicK pretty much everything I've noted is extremely easy for compilers to use and they've been doing it well since around 2015-16
@BuschnicK half the things I mentioned are filling in potholes in SSE*/AVX* that compilers have had to work around for decades when vectorizing. E.g. lack of unsigned vector compares, uint<->float conversions, vector rotates, word-sized variable shifts, two-input shuffles, good downconverts are all things compilers already had in their IR for over a decade and were forced to codegen to multi-instruction expansions because the actual ISA didn't have it.
@BuschnicK These are all things that were already in say LLVM IR long before AVX-512 came around, they just needed to be lowered into multiple instructions (sometimes quite a lot of them, e.g. for float<->uint conversions) which then made things like cost/benefit analysis for autovect pre-AVX512 much harder because the instruction set was so irregular