LLVM  4.0.0
MipsMCInstLower.h
Go to the documentation of this file.
1 //===-- MipsMCInstLower.h - Lower MachineInstr to MCInst -------*- 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 #ifndef LLVM_LIB_TARGET_MIPS_MIPSMCINSTLOWER_H
11 #define LLVM_LIB_TARGET_MIPS_MIPSMCINSTLOWER_H
14 #include "llvm/Support/Compiler.h"
15 
16 namespace llvm {
17  class MCContext;
18  class MCInst;
19  class MCOperand;
20  class MachineInstr;
21  class MachineFunction;
22  class MipsAsmPrinter;
23 
24 /// MipsMCInstLower - This class is used to lower an MachineInstr into an
25 // MCInst.
28  MCContext *Ctx;
30 public:
31  MipsMCInstLower(MipsAsmPrinter &asmprinter);
32  void Initialize(MCContext *C);
33  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
34  MCOperand LowerOperand(const MachineOperand& MO, unsigned offset = 0) const;
35 
36 private:
38  MachineOperandType MOTy, unsigned Offset) const;
39  MCOperand createSub(MachineBasicBlock *BB1, MachineBasicBlock *BB2,
41  void lowerLongBranchLUi(const MachineInstr *MI, MCInst &OutMI) const;
42  void lowerLongBranchADDiu(const MachineInstr *MI, MCInst &OutMI, int Opcode,
43  MipsMCExpr::MipsExprKind Kind) const;
44  bool lowerLongBranch(const MachineInstr *MI, MCInst &OutMI) const;
45 };
46 }
47 
48 #endif
static MCOperand LowerOperand(const MachineInstr *MI, const MachineOperand &MO, AsmPrinter &AP)
MipsMCInstLower - This class is used to lower an MachineInstr into an.
Context object for machine code objects.
Definition: MCContext.h:51
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:150
This class is intended to be used as a driving class for all asm writers.
Definition: AsmPrinter.h:67
uint32_t Offset
#define LLVM_LIBRARY_VISIBILITY
LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked into a shared library...
Definition: Compiler.h:105
static MCOperand LowerSymbolOperand(const MachineInstr *MI, const MachineOperand &MO, AsmPrinter &AP)
MachineOperand class - Representation of each machine instruction operand.
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
Representation of each machine instruction.
Definition: MachineInstr.h:52
const unsigned Kind
IRTranslator LLVM IR MI
Instances of this class represent operands of the MCInst class.
Definition: MCInst.h:33