1234353Sdim//===-- MBlazeMCInstLower.h - Lower MachineInstr to MCInst ------*- C++ -*-===//
2218885Sdim//
3218885Sdim//                     The LLVM Compiler Infrastructure
4218885Sdim//
5218885Sdim// This file is distributed under the University of Illinois Open Source
6218885Sdim// License. See LICENSE.TXT for details.
7218885Sdim//
8218885Sdim//===----------------------------------------------------------------------===//
9218885Sdim
10218885Sdim#ifndef MBLAZE_MCINSTLOWER_H
11218885Sdim#define MBLAZE_MCINSTLOWER_H
12218885Sdim
13218885Sdim#include "llvm/Support/Compiler.h"
14218885Sdim
15218885Sdimnamespace llvm {
16218885Sdim  class AsmPrinter;
17218885Sdim  class MCContext;
18218885Sdim  class MCInst;
19218885Sdim  class MCOperand;
20218885Sdim  class MCSymbol;
21218885Sdim  class MachineInstr;
22218885Sdim  class MachineModuleInfoMachO;
23218885Sdim  class MachineOperand;
24218885Sdim
25218885Sdim  /// MBlazeMCInstLower - This class is used to lower an MachineInstr
26218885Sdim  /// into an MCInst.
27218885Sdimclass LLVM_LIBRARY_VISIBILITY MBlazeMCInstLower {
28218885Sdim  MCContext &Ctx;
29218885Sdim
30218885Sdim  AsmPrinter &Printer;
31218885Sdimpublic:
32239462Sdim  MBlazeMCInstLower(MCContext &ctx, AsmPrinter &printer)
33239462Sdim    : Ctx(ctx), Printer(printer) {}
34218885Sdim  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
35218885Sdim
36218885Sdim  MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
37218885Sdim
38218885Sdim  MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
39218885Sdim  MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
40218885Sdim  MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
41218885Sdim  MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
42218885Sdim  MCSymbol *GetBlockAddressSymbol(const MachineOperand &MO) const;
43218885Sdim};
44218885Sdim
45218885Sdim}
46218885Sdim
47218885Sdim#endif
48