diff options
author | Craig Topper <craig.topper@intel.com> | 2018-03-24 06:04:12 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-03-24 06:04:12 +0000 |
commit | e865641aea2072fb95fff09775ae96ce0132ba28 (patch) | |
tree | 5536bdcd3c5e47bf53846ef74173c1d9f5193085 /llvm/utils/TableGen/X86RecognizableInstr.cpp | |
parent | 2c5471ddc7858c56274de830481f940de7c509e7 (diff) | |
download | bcm5719-llvm-e865641aea2072fb95fff09775ae96ce0132ba28.tar.gz bcm5719-llvm-e865641aea2072fb95fff09775ae96ce0132ba28.zip |
[X86] Merge the Has3DNow0F0FOpcode TSFlag into the OpMap encoding. NFC
The 3DNow instructions are encoded a little weird, but we can still represent it as an opcode map.
llvm-svn: 328410
Diffstat (limited to 'llvm/utils/TableGen/X86RecognizableInstr.cpp')
-rw-r--r-- | llvm/utils/TableGen/X86RecognizableInstr.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/utils/TableGen/X86RecognizableInstr.cpp b/llvm/utils/TableGen/X86RecognizableInstr.cpp index 5da4a1f04b5..e223e859f6f 100644 --- a/llvm/utils/TableGen/X86RecognizableInstr.cpp +++ b/llvm/utils/TableGen/X86RecognizableInstr.cpp @@ -90,7 +90,6 @@ RecognizableInstr::RecognizableInstr(DisassemblerTables &tables, HasEVEX_K = Rec->getValueAsBit("hasEVEX_K"); HasEVEX_KZ = Rec->getValueAsBit("hasEVEX_Z"); HasEVEX_B = Rec->getValueAsBit("hasEVEX_B"); - Has3DNow0F0FOpcode = Rec->getValueAsBit("has3DNow0F0FOpcode"); IsCodeGenOnly = Rec->getValueAsBit("isCodeGenOnly"); ForceDisassemble = Rec->getValueAsBit("ForceDisassemble"); CD8_Scale = byteFromRec(Rec, "CD8_Scale"); @@ -289,7 +288,7 @@ InstructionContext RecognizableInstr::insnContext() const { errs() << "Instruction does not use a prefix: " << Name << "\n"; llvm_unreachable("Invalid prefix"); } - } else if (Has3DNow0F0FOpcode) { + } else if (OpMap == X86Local::ThreeDNow) { insnContext = IC_3DNOW; } else if (Is64Bit || HasREX_WPrefix || AdSize == X86Local::AdSize64) { if (HasREX_WPrefix && (OpSize == X86Local::OpSize16 || OpPrefix == X86Local::PD)) @@ -716,15 +715,17 @@ void RecognizableInstr::emitDecodePath(DisassemblerTables &tables) const { case X86Local::XOP8: case X86Local::XOP9: case X86Local::XOPA: + case X86Local::ThreeDNow: switch (OpMap) { default: llvm_unreachable("Unexpected map!"); - case X86Local::OB: opcodeType = ONEBYTE; break; - case X86Local::TB: opcodeType = TWOBYTE; break; - case X86Local::T8: opcodeType = THREEBYTE_38; break; - case X86Local::TA: opcodeType = THREEBYTE_3A; break; - case X86Local::XOP8: opcodeType = XOP8_MAP; break; - case X86Local::XOP9: opcodeType = XOP9_MAP; break; - case X86Local::XOPA: opcodeType = XOPA_MAP; break; + case X86Local::OB: opcodeType = ONEBYTE; break; + case X86Local::TB: opcodeType = TWOBYTE; break; + case X86Local::T8: opcodeType = THREEBYTE_38; break; + case X86Local::TA: opcodeType = THREEBYTE_3A; break; + case X86Local::XOP8: opcodeType = XOP8_MAP; break; + case X86Local::XOP9: opcodeType = XOP9_MAP; break; + case X86Local::XOPA: opcodeType = XOPA_MAP; break; + case X86Local::ThreeDNow: opcodeType = TWOBYTE; break; } switch (Form) { |