• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- AVRMCInstLower.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_AVR_MCINST_LOWER_H
11 #define LLVM_AVR_MCINST_LOWER_H
12 
13 #include "llvm/Support/Compiler.h"
14 
15 namespace llvm {
16 
17 class AsmPrinter;
18 class MachineInstr;
19 class MachineOperand;
20 class MCContext;
21 class MCInst;
22 class MCOperand;
23 class MCSymbol;
24 
25 /// Lowers `MachineInstr` objects into `MCInst` objects.
26 class AVRMCInstLower {
27 public:
AVRMCInstLower(MCContext & Ctx,AsmPrinter & Printer)28   AVRMCInstLower(MCContext &Ctx, AsmPrinter &Printer)
29       : Ctx(Ctx), Printer(Printer) {}
30 
31   /// Lowers a `MachineInstr` into a `MCInst`.
32   void lowerInstruction(const MachineInstr &MI, MCInst &OutMI) const;
33   MCOperand lowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
34 
35 private:
36   MCContext &Ctx;
37   AsmPrinter &Printer;
38 };
39 
40 } // end namespace llvm
41 
42 #endif // LLVM_AVR_MCINST_LOWER_H
43 
44