llvm-project/llvm/utils/TableGen
Harald van Dijk 3337f50625
[X86] Fix handling of maskmovdqu in x32 differently
This reverts the functional changes of D103427 but keeps its tests, and
and reimplements the functionality by reusing the existing 32-bit
MASKMOVDQU and VMASKMOVDQU instructions as suggested by skan in review.
These instructions were previously predicated on Not64BitMode. This
reimplementation restores the disassembly of a class of instructions,
which will see a test added in followup patch D122449.

These instructions are in 64-bit mode special cased in
X86MCInstLower::Lower, because we use flags with one meaning for subtly
different things: we have an AdSize32 class which indicates both that
the instruction needs a 0x67 prefix and that the text form of the
instruction implies a 0x67 prefix. These instructions are special in
needing a 0x67 prefix but having a text form that does *not* imply a
0x67 prefix, so we encode this in MCInst as an instruction that has an
explicit address size override.

Note that originally VMASKMOVDQU64 was special cased to be excluded from
disassembly, as we cannot distinguish between VMASKMOVDQU and
VMASKMOVDQU64 and rely on the fact that these are indistinguishable, or
close enough to it, at the MCInst level that it does not matter which we
use. Because VMASKMOVDQU now receives special casing, even though it
does not make a difference in the current implementation, as a
precaution VMASKMOVDQU is excluded from disassembly rather than
VMASKMOVDQU64.

Reviewed By: RKSimon, skan

Differential Revision: https://reviews.llvm.org/D122540
2022-04-12 18:32:14 +01:00
..
GlobalISel Cleanup includes for LLVMTableGenGlobalISel 2022-01-28 11:50:50 +01:00
AsmMatcherEmitter.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
AsmWriterEmitter.cpp [TableGen][RISCV] Add InstAliases with zero_reg to cover unmasked vnot.v, vncvt.x.x.w, vneg.v, etc. 2022-03-22 10:14:43 -07:00
AsmWriterInst.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
AsmWriterInst.h [TableGen] Fix printing second PC-relative operand 2021-06-23 13:27:37 +07:00
Attributes.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
CMakeLists.txt [TableGen] X86 mnemonic tables backend 2022-03-18 01:43:53 -07:00
CTagsEmitter.cpp
CallingConvEmitter.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
CodeBeadsGen.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
CodeEmitterGen.cpp [TableGen][CodeEmitter] Introducing the VarLenCodeEmitterGen infrastructure 2022-02-11 09:31:11 -08:00
CodeGenDAGPatterns.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CodeGenDAGPatterns.h Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
CodeGenHwModes.cpp
CodeGenHwModes.h
CodeGenInstruction.cpp [Codegen][tablgen][NFC] Allow meta instruction to be target dependent 2022-03-18 13:09:01 +08:00
CodeGenInstruction.h [Codegen][tablgen][NFC] Allow meta instruction to be target dependent 2022-03-18 13:09:01 +08:00
CodeGenIntrinsics.h Reapply "[Intrinsics] Add `nocallback` to the default intrinsic attributes" 2022-03-25 09:36:50 -05:00
CodeGenMapTable.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CodeGenRegisters.cpp Fix warnings about variables that are set but only used in debug mode 2022-04-06 10:01:46 +03:00
CodeGenRegisters.h Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CodeGenSchedule.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CodeGenSchedule.h Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CodeGenTarget.cpp Reapply "[Intrinsics] Add `nocallback` to the default intrinsic attributes" 2022-03-25 09:36:50 -05:00
CodeGenTarget.h Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
CompressInstEmitter.cpp Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
DAGISelEmitter.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
DAGISelMatcher.cpp
DAGISelMatcher.h
DAGISelMatcherEmitter.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
DAGISelMatcherGen.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
DAGISelMatcherOpt.cpp [llvm] Use true/false instead of 1/0 (NFC) 2022-01-07 00:39:14 -08:00
DFAEmitter.cpp Fix warnings about variables that are set but only used in debug mode 2022-04-06 10:01:46 +03:00
DFAEmitter.h
DFAPacketizerEmitter.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
DirectiveEmitter.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
DisassemblerEmitter.cpp
ExegesisEmitter.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
FastISelEmitter.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
FixedLenDecoderEmitter.cpp Fix a misuse of `cast` 2022-04-11 01:21:15 +00:00
GICombinerEmitter.cpp [GISel] Fix dead code warning in getRuleRangeForIdentifier emitted method. NFC. 2022-02-19 19:43:53 +00:00
GlobalISelEmitter.cpp Fix warnings about variables that are set but only used in debug mode 2022-04-06 10:01:46 +03:00
InfoByHwMode.cpp Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
InfoByHwMode.h Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
InstrDocsEmitter.cpp
InstrInfoEmitter.cpp [Codegen][tablgen][NFC] Allow meta instruction to be target dependent 2022-03-18 13:09:01 +08:00
IntrinsicEmitter.cpp Reapply "[Intrinsics] Add `nocallback` to the default intrinsic attributes" 2022-03-25 09:36:50 -05:00
OptEmitter.cpp
OptEmitter.h
OptParserEmitter.cpp Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
OptRSTEmitter.cpp [doc] Rely on tblgen to dump supported options value when generating doc 2022-03-29 12:25:33 +02:00
PredicateExpander.cpp utils: Remove some no-op raw_string_ostream flush calls, NFC 2021-12-10 11:26:08 -08:00
PredicateExpander.h Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
PseudoLoweringEmitter.cpp
RegisterBankEmitter.cpp [GISel] Silence 'sideeffect in assertion' coverity warnings. NFCI. 2022-02-22 12:09:07 +00:00
RegisterInfoEmitter.cpp Fix warnings about variables that are set but only used in debug mode 2022-04-06 10:01:46 +03:00
SDNodeProperties.cpp [NFC][SDNode] Use `StringSwitch` instead of `if` 2022-01-18 08:12:26 +08:00
SDNodeProperties.h
SearchableTableEmitter.cpp Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
SequenceToOffsetTable.h
SubtargetEmitter.cpp [NFC] Remove unused parameters for SubtargetEmitter::ParseFeaturesFunction 2022-03-19 19:14:22 +08:00
SubtargetFeatureInfo.cpp
SubtargetFeatureInfo.h
TableGen.cpp [TableGen] X86 mnemonic tables backend 2022-03-18 01:43:53 -07:00
TableGenBackends.h [TableGen] X86 mnemonic tables backend 2022-03-18 01:43:53 -07:00
Types.cpp
Types.h
VarLenCodeEmitterGen.cpp Cleanup include: TableGen 2022-03-11 11:41:32 +01:00
VarLenCodeEmitterGen.h [TableGen][CodeEmitter] Introducing the VarLenCodeEmitterGen infrastructure 2022-02-11 09:31:11 -08:00
WebAssemblyDisassemblerEmitter.cpp Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
WebAssemblyDisassemblerEmitter.h Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
X86DisassemblerShared.h
X86DisassemblerTables.cpp [X86] Fix handling of maskmovdqu in x32 differently 2022-04-12 18:32:14 +01:00
X86DisassemblerTables.h Cleanup llvm/utils/TableGen headers 2022-01-31 11:16:28 +01:00
X86EVEX2VEXTablesEmitter.cpp [X86][tablgen] Extract common functions in X86EVEX2VEXTablesEmitter.cpp and X86FoldTablesEmitter.cpp to avoid duplicated code. NFC 2022-03-27 08:47:18 +08:00
X86FoldTablesEmitter.cpp [X86][tablgen] Add one entry manually into the memory folding table 2022-04-06 22:06:15 +08:00
X86MnemonicTables.cpp [X86][tablgen] Refine the class RecognizableInstr. NFCI 2022-03-26 22:41:49 +08:00
X86ModRMFilters.cpp
X86ModRMFilters.h [llvm] Remove redundant member initialization (NFC) 2022-01-08 11:56:44 -08:00
X86RecognizableInstr.cpp [X86] Fix handling of maskmovdqu in x32 differently 2022-04-12 18:32:14 +01:00
X86RecognizableInstr.h [X86][tablgen] Extract common functions in X86EVEX2VEXTablesEmitter.cpp and X86FoldTablesEmitter.cpp to avoid duplicated code. NFC 2022-03-27 08:47:18 +08:00
tdtags