/// 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;
}
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