MipsMCInstLower.h revision 226633
1169695Skan//===-- MipsMCInstLower.h - Lower MachineInstr to MCInst -------------------==//
2169695Skan//
3169695Skan//                     The LLVM Compiler Infrastructure
4169695Skan//
5169695Skan// This file is distributed under the University of Illinois Open Source
6169695Skan// License. See LICENSE.TXT for details.
7169695Skan//
8169695Skan//===----------------------------------------------------------------------===//
9169695Skan
10169695Skan#ifndef MIPSMCINSTLOWER_H
11169695Skan#define MIPSMCINSTLOWER_H
12169695Skan#include "llvm/CodeGen/MachineOperand.h"
13169695Skan#include "llvm/Support/Compiler.h"
14169695Skan
15169695Skannamespace llvm {
16169695Skan  class MCAsmInfo;
17169695Skan  class MCContext;
18169695Skan  class MCInst;
19169695Skan  class MCOperand;
20169695Skan  class MCSymbol;
21169695Skan  class MachineInstr;
22169695Skan  class MachineFunction;
23169695Skan  class Mangler;
24169695Skan  class MipsAsmPrinter;
25169695Skan
26169695Skan/// MipsMCInstLower - This class is used to lower an MachineInstr into an
27169695Skan//                    MCInst.
28169695Skanclass LLVM_LIBRARY_VISIBILITY MipsMCInstLower {
29169695Skan  typedef MachineOperand::MachineOperandType MachineOperandType;
30169695Skan  MCContext &Ctx;
31169695Skan  Mangler *Mang;
32169695Skan  MipsAsmPrinter &AsmPrinter;
33169695Skanpublic:
34169695Skan  MipsMCInstLower(Mangler *mang, const MachineFunction &MF,
35169695Skan                  MipsAsmPrinter &asmprinter);
36169695Skan  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
37169695Skanprivate:
38169695Skan  MCOperand LowerSymbolOperand(const MachineOperand &MO,
39169695Skan                               MachineOperandType MOTy, unsigned Offset) const;
40169695Skan  MCOperand LowerOperand(const MachineOperand& MO) const;
41169695Skan};
42169695Skan}
43169695Skan
44169695Skan#endif
45169695Skan