/3rd_party/llvm/include/llvm/MC/MCInstrInfo.h
https://code.google.com/p/softart/ · C++ Header · 62 lines · 30 code · 10 blank · 22 comment · 2 complexity · 9bd9d1052f8abc66aa37b97fa81ac10f MD5 · raw file
- //===-- llvm/MC/MCInstrInfo.h - Target Instruction Info ---------*- C++ -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This file describes the target machine instruction set.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_MC_MCINSTRINFO_H
- #define LLVM_MC_MCINSTRINFO_H
- #include "llvm/MC/MCInstrDesc.h"
- #include <cassert>
- namespace llvm {
- //---------------------------------------------------------------------------
- ///
- /// MCInstrInfo - Interface to description of machine instruction set
- ///
- class MCInstrInfo {
- 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, const unsigned *NI, const char *ND,
- unsigned NO) {
- Desc = D;
- InstrNameIndices = NI;
- InstrNameData = ND;
- NumOpcodes = NO;
- }
- unsigned getNumOpcodes() const { return NumOpcodes; }
- /// get - Return the machine instruction descriptor that corresponds to the
- /// specified instruction opcode.
- ///
- const MCInstrDesc &get(unsigned Opcode) const {
- 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
- #endif