1168406Spjd//===-- MSP430MCInstLower.h - Lower MachineInstr to MCInst ------*- C++ -*-===//
2168406Spjd//
3168406Spjd//                     The LLVM Compiler Infrastructure
4168406Spjd//
5219089Spjd// This file is distributed under the University of Illinois Open Source
6168406Spjd// License. See LICENSE.TXT for details.
7262059Savg//
8262059Savg//===----------------------------------------------------------------------===//
9262059Savg
10262059Savg#ifndef MSP430_MCINSTLOWER_H
11262059Savg#define MSP430_MCINSTLOWER_H
12262059Savg
13177674Sjb#include "llvm/Support/Compiler.h"
14176952Sobrien
15176952Sobriennamespace llvm {
16168406Spjd  class AsmPrinter;
17176952Sobrien  class MCContext;
18168406Spjd  class MCInst;
19176952Sobrien  class MCOperand;
20168406Spjd  class MCSymbol;
21219089Spjd  class MachineInstr;
22243674Smm  class MachineModuleInfoMachO;
23185029Spjd  class MachineOperand;
24185029Spjd
25168406Spjd  /// MSP430MCInstLower - This class is used to lower an MachineInstr
26177674Sjb  /// into an MCInst.
27192800Straszclass LLVM_LIBRARY_VISIBILITY MSP430MCInstLower {
28168406Spjd  MCContext &Ctx;
29168406Spjd
30185029Spjd  AsmPrinter &Printer;
31168406Spjdpublic:
32168406Spjd  MSP430MCInstLower(MCContext &ctx, AsmPrinter &printer)
33219089Spjd    : Ctx(ctx), Printer(printer) {}
34196295Spjd  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
35209962Smm
36168406Spjd  MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
37168406Spjd
38168406Spjd  MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
39212543Simp  MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
40212543Simp  MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
41212543Simp  MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
42212543Simp  MCSymbol *GetBlockAddressSymbol(const MachineOperand &MO) const;
43212543Simp};
44212543Simp
45212543Simp}
46170431Spjd
47212543Simp#endif
48170431Spjd