1251607Sdim//===-- SystemZMCInstLower.h - Lower MachineInstr to MCInst ----*- C++ -*--===//
2251607Sdim//
3251607Sdim//                     The LLVM Compiler Infrastructure
4251607Sdim//
5251607Sdim// This file is distributed under the University of Illinois Open Source
6251607Sdim// License. See LICENSE.TXT for details.
7251607Sdim//
8251607Sdim//===----------------------------------------------------------------------===//
9251607Sdim
10251607Sdim#ifndef LLVM_SYSTEMZMCINSTLOWER_H
11251607Sdim#define LLVM_SYSTEMZMCINSTLOWER_H
12251607Sdim
13251607Sdim#include "llvm/Support/DataTypes.h"
14251607Sdim#include "llvm/Support/Compiler.h"
15251607Sdim
16251607Sdimnamespace llvm {
17251607Sdimclass MCContext;
18251607Sdimclass MCInst;
19251607Sdimclass MCOperand;
20251607Sdimclass MCSymbol;
21251607Sdimclass MachineInstr;
22251607Sdimclass MachineOperand;
23251607Sdimclass Mangler;
24251607Sdimclass SystemZAsmPrinter;
25251607Sdim
26251607Sdimclass LLVM_LIBRARY_VISIBILITY SystemZMCInstLower {
27251607Sdim  Mangler *Mang;
28251607Sdim  MCContext &Ctx;
29251607Sdim  SystemZAsmPrinter &AsmPrinter;
30251607Sdim
31251607Sdimpublic:
32251607Sdim  SystemZMCInstLower(Mangler *mang, MCContext &ctx,
33251607Sdim                     SystemZAsmPrinter &asmPrinter);
34251607Sdim
35251607Sdim  // Lower MachineInstr MI to MCInst OutMI.
36251607Sdim  void lower(const MachineInstr *MI, MCInst &OutMI) const;
37251607Sdim
38251607Sdim  // Return an MCOperand for MO.  Return an empty operand if MO is implicit.
39251607Sdim  MCOperand lowerOperand(const MachineOperand& MO) const;
40251607Sdim
41251607Sdim  // Return an MCOperand for MO, given that it equals Symbol + Offset.
42251607Sdim  MCOperand lowerSymbolOperand(const MachineOperand &MO,
43251607Sdim                               const MCSymbol *Symbol, int64_t Offset) const;
44251607Sdim};
45251607Sdim} // end namespace llvm
46251607Sdim
47251607Sdim#endif
48