MipsMCInstLower.h revision 224133
1224133Sdim//===-- MipsMCInstLower.h - Lower MachineInstr to MCInst -------------------===//
2224133Sdim//
3224133Sdim//                     The LLVM Compiler Infrastructure
4224133Sdim//
5224133Sdim// This file is distributed under the University of Illinois Open Source
6224133Sdim// License. See LICENSE.TXT for details.
7224133Sdim//
8224133Sdim//===----------------------------------------------------------------------===//
9224133Sdim
10224133Sdim#ifndef MIPSMCINSTLOWER_H
11224133Sdim#define MIPSMCINSTLOWER_H
12224133Sdim#include "llvm/CodeGen/MachineOperand.h"
13224133Sdim#include "llvm/Support/Compiler.h"
14224133Sdim
15224133Sdimnamespace llvm {
16224133Sdim  class MCAsmInfo;
17224133Sdim  class MCContext;
18224133Sdim  class MCInst;
19224133Sdim  class MCOperand;
20224133Sdim  class MCSymbol;
21224133Sdim  class MachineInstr;
22224133Sdim  class MachineFunction;
23224133Sdim  class Mangler;
24224133Sdim  class MipsAsmPrinter;
25224133Sdim
26224133Sdim/// MipsMCInstLower - This class is used to lower an MachineInstr into an
27224133Sdim//                    MCInst.
28224133Sdimclass LLVM_LIBRARY_VISIBILITY MipsMCInstLower {
29224133Sdim  typedef MachineOperand::MachineOperandType MachineOperandType;
30224133Sdim  MCContext &Ctx;
31224133Sdim  Mangler *Mang;
32224133Sdim  MipsAsmPrinter &AsmPrinter;
33224133Sdimpublic:
34224133Sdim  MipsMCInstLower(Mangler *mang, const MachineFunction &MF,
35224133Sdim                  MipsAsmPrinter &asmprinter);
36224133Sdim  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
37224133Sdimprivate:
38224133Sdim  MCOperand LowerSymbolOperand(const MachineOperand &MO,
39224133Sdim                               MachineOperandType MOTy) const;
40224133Sdim};
41224133Sdim}
42224133Sdim
43224133Sdim#endif
44