diff options
Diffstat (limited to 'utils/TableGen/X86RecognizableInstr.cpp')
-rw-r--r-- | utils/TableGen/X86RecognizableInstr.cpp | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/utils/TableGen/X86RecognizableInstr.cpp b/utils/TableGen/X86RecognizableInstr.cpp index 8a5ae12f67fb..ca937d09726d 100644 --- a/utils/TableGen/X86RecognizableInstr.cpp +++ b/utils/TableGen/X86RecognizableInstr.cpp @@ -225,7 +225,6 @@ RecognizableInstr::RecognizableInstr(DisassemblerTables &tables, CD8_Scale = byteFromRec(Rec, "CD8_Scale"); Name = Rec->getName(); - AsmString = Rec->getValueAsString("AsmString"); Operands = &insn.Operands.OperandList; @@ -477,7 +476,7 @@ void RecognizableInstr::adjustOperandEncoding(OperandEncoding &encoding) { void RecognizableInstr::handleOperand(bool optional, unsigned &operandIndex, unsigned &physicalOperandIndex, - unsigned &numPhysicalOperands, + unsigned numPhysicalOperands, const unsigned *operandMapping, OperandEncoding (*encodingFromString) (const std::string&, @@ -562,6 +561,7 @@ void RecognizableInstr::emitInstructionSpecifier() { // physicalOperandIndex should always be < numPhysicalOperands unsigned physicalOperandIndex = 0; +#ifndef NDEBUG // Given the set of prefix bits, how many additional operands does the // instruction have? unsigned additionalOperands = 0; @@ -569,6 +569,7 @@ void RecognizableInstr::emitInstructionSpecifier() { ++additionalOperands; if (HasEVEX_K) ++additionalOperands; +#endif switch (Form) { default: llvm_unreachable("Unhandled form"); @@ -584,11 +585,9 @@ void RecognizableInstr::emitInstructionSpecifier() { return; case X86Local::RawFrm: // Operand 1 (optional) is an address or immediate. - // Operand 2 (optional) is an immediate. - assert(numPhysicalOperands <= 2 && + assert(numPhysicalOperands <= 1 && "Unexpected number of operands for RawFrm"); HANDLE_OPTIONAL(relocation) - HANDLE_OPTIONAL(immediate) break; case X86Local::RawFrmMemOffs: // Operand 1 is an address. @@ -800,8 +799,8 @@ void RecognizableInstr::emitInstructionSpecifier() { case X86Local::MRM_F1: case X86Local::MRM_F2: case X86Local::MRM_F3: case X86Local::MRM_F4: case X86Local::MRM_F5: case X86Local::MRM_F6: case X86Local::MRM_F7: case X86Local::MRM_F9: case X86Local::MRM_FA: - case X86Local::MRM_FB: case X86Local::MRM_FC: case X86Local::MRM_FD: - case X86Local::MRM_FE: case X86Local::MRM_FF: + case X86Local::MRM_FB: case X86Local::MRM_FC: case X86Local::MRM_FD: + case X86Local::MRM_FE: case X86Local::MRM_FF: // Ignored. break; } @@ -1024,19 +1023,19 @@ OperandType RecognizableInstr::typeFromString(const std::string &s, TYPE("VK32WM", TYPE_VK32) TYPE("VK64", TYPE_VK64) TYPE("VK64WM", TYPE_VK64) - TYPE("GR16_NOAX", TYPE_Rv) TYPE("GR32_NOAX", TYPE_Rv) - TYPE("GR64_NOAX", TYPE_R64) - TYPE("vx32mem", TYPE_M32) - TYPE("vx32xmem", TYPE_M32) - TYPE("vy32mem", TYPE_M32) - TYPE("vy32xmem", TYPE_M32) - TYPE("vz32mem", TYPE_M32) TYPE("vx64mem", TYPE_M64) + TYPE("vx128mem", TYPE_M128) + TYPE("vx256mem", TYPE_M256) + TYPE("vy128mem", TYPE_M128) + TYPE("vy256mem", TYPE_M256) TYPE("vx64xmem", TYPE_M64) - TYPE("vy64mem", TYPE_M64) - TYPE("vy64xmem", TYPE_M64) - TYPE("vz64mem", TYPE_M64) + TYPE("vx128xmem", TYPE_M128) + TYPE("vx256xmem", TYPE_M256) + TYPE("vy128xmem", TYPE_M128) + TYPE("vy256xmem", TYPE_M256) + TYPE("vy512mem", TYPE_M512) + TYPE("vz512mem", TYPE_M512) TYPE("BNDR", TYPE_BNDR) errs() << "Unhandled type string " << s << "\n"; llvm_unreachable("Unhandled type string"); @@ -1220,16 +1219,18 @@ RecognizableInstr::memoryEncodingFromString(const std::string &s, ENCODING("opaque48mem", ENCODING_RM) ENCODING("opaque80mem", ENCODING_RM) ENCODING("opaque512mem", ENCODING_RM) - ENCODING("vx32mem", ENCODING_RM) - ENCODING("vx32xmem", ENCODING_RM) - ENCODING("vy32mem", ENCODING_RM) - ENCODING("vy32xmem", ENCODING_RM) - ENCODING("vz32mem", ENCODING_RM) ENCODING("vx64mem", ENCODING_RM) + ENCODING("vx128mem", ENCODING_RM) + ENCODING("vx256mem", ENCODING_RM) + ENCODING("vy128mem", ENCODING_RM) + ENCODING("vy256mem", ENCODING_RM) ENCODING("vx64xmem", ENCODING_RM) - ENCODING("vy64mem", ENCODING_RM) - ENCODING("vy64xmem", ENCODING_RM) - ENCODING("vz64mem", ENCODING_RM) + ENCODING("vx128xmem", ENCODING_RM) + ENCODING("vx256xmem", ENCODING_RM) + ENCODING("vy128xmem", ENCODING_RM) + ENCODING("vy256xmem", ENCODING_RM) + ENCODING("vy512mem", ENCODING_RM) + ENCODING("vz512mem", ENCODING_RM) errs() << "Unhandled memory encoding " << s << "\n"; llvm_unreachable("Unhandled memory encoding"); } @@ -1288,9 +1289,7 @@ RecognizableInstr::opcodeModifierEncodingFromString(const std::string &s, ENCODING("GR64", ENCODING_RO) ENCODING("GR16", ENCODING_Rv) ENCODING("GR8", ENCODING_RB) - ENCODING("GR16_NOAX", ENCODING_Rv) ENCODING("GR32_NOAX", ENCODING_Rv) - ENCODING("GR64_NOAX", ENCODING_RO) errs() << "Unhandled opcode modifier encoding " << s << "\n"; llvm_unreachable("Unhandled opcode modifier encoding"); } |