[X86] Add support for {vex2}, {vex3}, and {evex} to the assembler to match gas. Use...
authorCraig Topper <craig.topper@intel.com>
Tue, 9 Apr 2019 18:45:15 +0000 (18:45 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 9 Apr 2019 18:45:15 +0000 (18:45 +0000)
commit8e2871cd2c2e6d9e2dc74ac25a86d28219596534
tree6e456de8f4fcb144cb1cc29096c949848a9cac24
parentf7433f9623533d7901fa1f0eb3bf0aaebbbbd73d
[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.

These can be used to force the encoding used for instructions.

{vex2} will fail if the instruction is not VEX encoded, but otherwise won't do anything since we prefer vex2 when possible. Might need to skip use of the _REV MOV instructions for this too, but I haven't done that yet.

{vex3} will force the instruction to use the 3 byte VEX encoding or fail if there is no VEX form.

{evex} will force the instruction to use the EVEX version or fail if there is no EVEX version.

Differential Revision: https://reviews.llvm.org/D59266

llvm-svn: 358029
llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
llvm/test/MC/X86/AVX-32.s
llvm/test/MC/X86/AVX512F_SCALAR-32.s
llvm/test/MC/X86/x86_errors.s