[PATCH] D59266: [X86] Add support for {vex2}, {vex3}, and {evex} to the assembler to match gas. Use {evex} to improve the one our 32-bit AVX512 tests.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 13 14:29:08 PDT 2019


craig.topper added a comment.

I forgot about another issue I know about. Currently the EVEX form of instruction like "vcvtss2si (%rax), %ebx" are removed from the assembly matcher table. Since none of the operands are xmm/ymm/zmm registers when the source is memory there was never a reason to use EVEX. And the sorting criteria in the AsmMatcherTable can't order it correctly to put VEX first since the operands are identical. Normally the fact that VR128 is a subclass of VR128X is what give VEX preference over EVEX in the table. But that doesn't apply here so they get sorted by the enum value from X86GenInstrInfo.inc which puts EVEX first.

With this feature, we should pick the EVEX encoding when {evex} is specified. Not sure how to make this work other than rejecting the EVEX form for a specific list of instructions in checkTargetMatchPredicate unless {evex} has been specified.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D59266/new/

https://reviews.llvm.org/D59266





More information about the llvm-commits mailing list