]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/AVR/AVRMCInstLower.h
Merge libc++ r291274, and update the library Makefile.
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / AVR / AVRMCInstLower.h
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:
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