Don't allow 32-bit only instructions to be disassembled in 64-bit mode. Fixes part...
[oota-llvm.git] / utils / TableGen / X86DisassemblerTables.cpp
index aed27279a51bca36d3178a13b5e14234af02f48e..b12660eea218f590be3b0bf2c8fad97b5c54fe6d 100644 (file)
@@ -642,12 +642,16 @@ void DisassemblerTables::setTableFields(OpcodeType          type,
                                         InstructionContext  insnContext,
                                         uint8_t             opcode,
                                         const ModRMFilter   &filter,
-                                        InstrUID            uid) {
+                                        InstrUID            uid,
+                                        bool                is32bit) {
   unsigned index;
   
   ContextDecision &decision = *Tables[type];
 
   for (index = 0; index < IC_max; ++index) {
+    if (is32bit && inheritsFrom((InstructionContext)index, IC_64BIT))
+      continue;
+
     if (inheritsFrom((InstructionContext)index, 
                      InstructionSpecifiers[uid].insnContext))
       setTableFields(decision.opcodeDecisions[index].modRMDecisions[opcode],