Don't provide two different definitions of ModRMDecision, OpcodeDecision, and Context...
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 20 Apr 2014 21:52:16 +0000 (21:52 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 20 Apr 2014 21:52:16 +0000 (21:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206720 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h
utils/TableGen/X86DisassemblerShared.h

index b80e3a90a61e62ba9f6b697eb3acd37e1f9dcf12..070b365fd4895462f7f0c8b97bbfb2a940899a42 100644 (file)
 
 using namespace llvm::X86Disassembler;
 
+/// Specifies whether a ModR/M byte is needed and (if so) which
+/// instruction each possible value of the ModR/M byte corresponds to.  Once
+/// this information is known, we have narrowed down to a single instruction.
+struct ModRMDecision {
+  uint8_t modrm_type;
+  uint16_t instructionIDs;
+};
+
+/// Specifies which set of ModR/M->instruction tables to look at
+/// given a particular opcode.
+struct OpcodeDecision {
+  ModRMDecision modRMDecisions[256];
+};
+
+/// Specifies which opcode->instruction tables to look at given
+/// a particular context (set of attributes).  Since there are many possible
+/// contexts, the decoder first uses CONTEXTS_SYM to determine which context
+/// applies given a specific set of attributes.  Hence there are only IC_max
+/// entries in this table, rather than 2^(ATTR_max).
+struct ContextDecision {
+  OpcodeDecision opcodeDecisions[IC_max];
+};
+
 #include "X86GenDisassemblerTables.inc"
 
 #define TRUE  1
index 67f52e55fac4960310a3b32c685615264bfaf379..c5335862a65e2188b7675af6b1514252ce1fffa6 100644 (file)
 #ifndef X86DISASSEMBLERDECODER_H
 #define X86DISASSEMBLERDECODER_H
 
-#define INSTRUCTION_IDS     \
-  uint16_t instructionIDs;
-
 #include "X86DisassemblerDecoderCommon.h"
 
-#undef INSTRUCTION_SPECIFIER_FIELDS
-#undef INSTRUCTION_IDS
-
 namespace llvm {
 namespace X86Disassembler {
 
index d323fa2cc721636c36ff26d7afe60c6feb77f306..3ae1610179ae75e3504394832750f65d6898f8d2 100644 (file)
@@ -337,37 +337,6 @@ enum ModRMDecisionType {
 };
 #undef ENUM_ENTRY
 
-/*
- * ModRMDecision - Specifies whether a ModR/M byte is needed and (if so) which
- *  instruction each possible value of the ModR/M byte corresponds to.  Once
- *  this information is known, we have narrowed down to a single instruction.
- */
-struct ModRMDecision {
-  uint8_t     modrm_type;
-
-  /* The macro below must be defined wherever this file is included. */
-  INSTRUCTION_IDS
-};
-
-/*
- * OpcodeDecision - Specifies which set of ModR/M->instruction tables to look at
- *   given a particular opcode.
- */
-struct OpcodeDecision {
-  ModRMDecision modRMDecisions[256];
-};
-
-/*
- * ContextDecision - Specifies which opcode->instruction tables to look at given
- *   a particular context (set of attributes).  Since there are many possible
- *   contexts, the decoder first uses CONTEXTS_SYM to determine which context
- *   applies given a specific set of attributes.  Hence there are only IC_max
- *   entries in this table, rather than 2^(ATTR_max).
- */
-struct ContextDecision {
-  OpcodeDecision opcodeDecisions[IC_max];
-};
-
 /*
  * Physical encodings of instruction operands.
  */
index 2d3d3fc1bcbb92d67dcecd4b05e46aea1bdd0d35..62da951be93058d22b23e065d63c8f65d7e92897 100644 (file)
 #include <string.h>
 #include <string>
 
-#define INSTRUCTION_IDS           \
-  InstrUID   instructionIDs[256];
-
 #include "../../lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h"
 
-#undef INSTRUCTION_SPECIFIER_FIELDS
-#undef INSTRUCTION_IDS
-
 struct InstructionSpecifier {
   llvm::X86Disassembler::OperandSpecifier operands[X86_MAX_OPERANDS];
   llvm::X86Disassembler::InstructionContext insnContext;
@@ -33,4 +27,27 @@ struct InstructionSpecifier {
   }
 };
 
+/// Specifies whether a ModR/M byte is needed and (if so) which
+/// instruction each possible value of the ModR/M byte corresponds to. Once
+/// this information is known, we have narrowed down to a single instruction.
+struct ModRMDecision {
+  uint8_t modrm_type;
+  llvm::X86Disassembler::InstrUID instructionIDs[256];
+};
+
+/// Specifies which set of ModR/M->instruction tables to look at
+/// given a particular opcode.
+struct OpcodeDecision {
+  ModRMDecision modRMDecisions[256];
+};
+
+/// Specifies which opcode->instruction tables to look at given
+/// a particular context (set of attributes).  Since there are many possible
+/// contexts, the decoder first uses CONTEXTS_SYM to determine which context
+/// applies given a specific set of attributes.  Hence there are only IC_max
+/// entries in this table, rather than 2^(ATTR_max).
+struct ContextDecision {
+  OpcodeDecision opcodeDecisions[llvm::X86Disassembler::IC_max];
+};
+
 #endif