From: Craig Topper Date: Wed, 26 Feb 2014 06:01:21 +0000 (+0000) Subject: [x86] Simplify disassembler code slightly. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=df24b19e45b88ba80b5e39e8fed6b4fd38677a05;p=oota-llvm.git [x86] Simplify disassembler code slightly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202233 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86InstrFormats.td b/lib/Target/X86/X86InstrFormats.td index 9b9480c1f0c..5d96b5812b6 100644 --- a/lib/Target/X86/X86InstrFormats.td +++ b/lib/Target/X86/X86InstrFormats.td @@ -227,16 +227,20 @@ class X86Inst opcod, Format f, ImmType i, dag outs, dag ins, OperandSize OpSize = OpSizeFixed; // Does this instruction's encoding change // based on operand size of the mode + bits<2> OpSizeBits = OpSize.Value; bit hasAdSizePrefix = 0; // Does this inst have a 0x67 prefix? Prefix OpPrefix = NoPrfx; // Which prefix byte does this inst have? + bits<3> OpPrefixBits = OpPrefix.Value; Map OpMap = OB; // Which opcode map does this inst have? + bits<3> OpMapBits = OpMap.Value; bit hasREX_WPrefix = 0; // Does this inst require the REX.W prefix? FPFormat FPForm = NotFP; // What flavor of FP instruction is this? bit hasLockPrefix = 0; // Does this inst have a 0xF0 prefix? Domain ExeDomain = d; bit hasREPPrefix = 0; // Does this inst have a REP prefix? Encoding OpEnc = EncNormal; // Encoding used by this instruction + bits<2> OpEncBits = OpEnc.Value; bit hasVEX_WPrefix = 0; // Does this inst set the VEX_W field? bit hasVEX_4V = 0; // Does this inst require the VEX.VVVV field? bit hasVEX_4VOp3 = 0; // Does this inst require the VEX.VVVV field to @@ -257,17 +261,17 @@ class X86Inst opcod, Format f, ImmType i, dag outs, dag ins, // TSFlags layout should be kept in sync with X86InstrInfo.h. let TSFlags{6-0} = FormBits; - let TSFlags{8-7} = OpSize.Value; + let TSFlags{8-7} = OpSizeBits; let TSFlags{9} = hasAdSizePrefix; - let TSFlags{12-10} = OpPrefix.Value; - let TSFlags{15-13} = OpMap.Value; + let TSFlags{12-10} = OpPrefixBits; + let TSFlags{15-13} = OpMapBits; let TSFlags{16} = hasREX_WPrefix; let TSFlags{20-17} = ImmT.Value; let TSFlags{23-21} = FPForm.Value; let TSFlags{24} = hasLockPrefix; let TSFlags{25} = hasREPPrefix; let TSFlags{27-26} = ExeDomain.Value; - let TSFlags{29-28} = OpEnc.Value; + let TSFlags{29-28} = OpEncBits; let TSFlags{37-30} = Opcode; let TSFlags{38} = hasVEX_WPrefix; let TSFlags{39} = hasVEX_4V; diff --git a/utils/TableGen/X86RecognizableInstr.cpp b/utils/TableGen/X86RecognizableInstr.cpp index 9ea0bf7abcc..95651f6dc5e 100644 --- a/utils/TableGen/X86RecognizableInstr.cpp +++ b/utils/TableGen/X86RecognizableInstr.cpp @@ -185,13 +185,13 @@ RecognizableInstr::RecognizableInstr(DisassemblerTables &tables, return; } - OpPrefix = byteFromRec(Rec->getValueAsDef("OpPrefix"), "Value"); - OpMap = byteFromRec(Rec->getValueAsDef("OpMap"), "Value"); + OpPrefix = byteFromRec(Rec, "OpPrefixBits"); + OpMap = byteFromRec(Rec, "OpMapBits"); Opcode = byteFromRec(Rec, "Opcode"); Form = byteFromRec(Rec, "FormBits"); - Encoding = byteFromRec(Rec->getValueAsDef("OpEnc"), "Value"); + Encoding = byteFromRec(Rec, "OpEncBits"); - OpSize = byteFromRec(Rec->getValueAsDef("OpSize"), "Value"); + OpSize = byteFromRec(Rec, "OpSizeBits"); HasAdSizePrefix = Rec->getValueAsBit("hasAdSizePrefix"); HasREX_WPrefix = Rec->getValueAsBit("hasREX_WPrefix"); HasVEX_4V = Rec->getValueAsBit("hasVEX_4V");