[C++11] Replace some comparisons with 'nullptr' with simple boolean checks to reduce...
[oota-llvm.git] / include / llvm / MC / MCInstrInfo.h
index 9b15825c8f204908f90c24be74c6c6264231f67c..1d3a36ca7c73afdd77f37d1278dd65168485a8b0 100644 (file)
@@ -24,14 +24,19 @@ namespace llvm {
 /// MCInstrInfo - Interface to description of machine instruction set
 ///
 class MCInstrInfo {
-  const MCInstrDesc *Desc;  // Raw array to allow static init'n
-  unsigned NumOpcodes;             // Number of entries in the desc array
+  const MCInstrDesc *Desc;          // Raw array to allow static init'n
+  const unsigned *InstrNameIndices; // Array for name indices in InstrNameData
+  const char *InstrNameData;        // Instruction name string pool
+  unsigned NumOpcodes;              // Number of entries in the desc array
 
 public:
   /// InitMCInstrInfo - Initialize MCInstrInfo, called by TableGen
   /// auto-generated routines. *DO NOT USE*.
-  void InitMCInstrInfo(const MCInstrDesc *D, unsigned NO) {
+  void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND,
+                       unsigned NO) {
     Desc = D;
+    InstrNameIndices = NI;
+    InstrNameData = ND;
     NumOpcodes = NO;
   }
 
@@ -44,6 +49,12 @@ public:
     assert(Opcode < NumOpcodes && "Invalid opcode!");
     return Desc[Opcode];
   }
+
+  /// getName - Returns the name for the instructions with the given opcode.
+  const char *getName(unsigned Opcode) const {
+    assert(Opcode < NumOpcodes && "Invalid opcode!");
+    return &InstrNameData[InstrNameIndices[Opcode]];
+  }
 };
 
 } // End llvm namespace