https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114576
--- Comment #4 from Thiago Macieira <thiago at kde dot org> --- (In reply to Jakub Jelinek from comment #3) > vaesenc etc. instructions can be used even if just -maes -mavx, not just > -mvaes -mavx512vl. Correct, that's just VEX-prefixed AESNI instructions. VAES added the 256-bit and 512-bit versions of those instructions. The table at felix's website is accurate: https://www.felixcloutier.com/x86/aesenc This is actually similar to GFNI: * GFNI: 128-bit only, non-VEX, non-EVEX * GFNI+AVX: VEX allowed, 128- and 256-bit; no EVEX * GFNI+AVX512F: 128- and 256-bit with VEX, 512-bit with EVEX * GFNI+AVX512VL: 128- and 256-bit with VEX, all with EVEX * GFNI+AVX10 without EVEX512: 128- and 256-bit with VEX and EVEX, no 512-bit The F-no-VL case does not exist in practice. > But, it is especially messy because -mvaes doesn't imply -maes, so IMHO if > somebody e.g. asks for -mvaes -mavx512vl -mno-aes and the insns don't use > any xmm16+ register, it would emit the insn using VEX encoding rather than > EVEX, so I think we need to use {evex} prefixes. Would it be simpler to just imply that VAES includes AESNI? There are no processors that have VAES without AESNI and it doesn't make sense for there to be one.