LLVM  6.0.0svn
MCInstrInfo.h
Go to the documentation of this file.
1 //===-- llvm/MC/MCInstrInfo.h - Target Instruction Info ---------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file describes the target machine instruction set.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_MC_MCINSTRINFO_H
15 #define LLVM_MC_MCINSTRINFO_H
16 
17 #include "llvm/MC/MCInstrDesc.h"
18 #include <cassert>
19 
20 namespace llvm {
21 
22 //---------------------------------------------------------------------------
23 /// \brief Interface to description of machine instruction set.
24 class MCInstrInfo {
25  const MCInstrDesc *Desc; // Raw array to allow static init'n
26  const unsigned *InstrNameIndices; // Array for name indices in InstrNameData
27  const char *InstrNameData; // Instruction name string pool
28  unsigned NumOpcodes; // Number of entries in the desc array
29 
30 public:
31  /// \brief Initialize MCInstrInfo, called by TableGen auto-generated routines.
32  /// *DO NOT USE*.
33  void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND,
34  unsigned NO) {
35  Desc = D;
36  InstrNameIndices = NI;
37  InstrNameData = ND;
38  NumOpcodes = NO;
39  }
40 
41  unsigned getNumOpcodes() const { return NumOpcodes; }
42 
43  /// \brief Return the machine instruction descriptor that corresponds to the
44  /// specified instruction opcode.
45  const MCInstrDesc &get(unsigned Opcode) const {
46  assert(Opcode < NumOpcodes && "Invalid opcode!");
47  return Desc[Opcode];
48  }
49 
50  /// \brief Returns the name for the instructions with the given opcode.
51  StringRef getName(unsigned Opcode) const {
52  assert(Opcode < NumOpcodes && "Invalid opcode!");
53  return StringRef(&InstrNameData[InstrNameIndices[Opcode]]);
54  }
55 };
56 
57 } // End llvm namespace
58 
59 #endif
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
Describe properties that are true of each instruction in the target description file.
Definition: MCInstrDesc.h:163
Interface to description of machine instruction set.
Definition: MCInstrInfo.h:24
StringRef getName(unsigned Opcode) const
Returns the name for the instructions with the given opcode.
Definition: MCInstrInfo.h:51
void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND, unsigned NO)
Initialize MCInstrInfo, called by TableGen auto-generated routines.
Definition: MCInstrInfo.h:33
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
unsigned getNumOpcodes() const
Definition: MCInstrInfo.h:41
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49