LLVM API Documentation
00001 //===-- SystemZMCInstLower.h - Lower MachineInstr to MCInst ----*- C++ -*--===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 00010 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMCINSTLOWER_H 00011 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMCINSTLOWER_H 00012 00013 #include "llvm/MC/MCExpr.h" 00014 #include "llvm/Support/Compiler.h" 00015 #include "llvm/Support/DataTypes.h" 00016 00017 namespace llvm { 00018 class MCInst; 00019 class MCOperand; 00020 class MachineInstr; 00021 class MachineOperand; 00022 class Mangler; 00023 class SystemZAsmPrinter; 00024 00025 class LLVM_LIBRARY_VISIBILITY SystemZMCInstLower { 00026 MCContext &Ctx; 00027 SystemZAsmPrinter &AsmPrinter; 00028 00029 public: 00030 SystemZMCInstLower(MCContext &ctx, SystemZAsmPrinter &asmPrinter); 00031 00032 // Lower MachineInstr MI to MCInst OutMI. 00033 void lower(const MachineInstr *MI, MCInst &OutMI) const; 00034 00035 // Return an MCOperand for MO. 00036 MCOperand lowerOperand(const MachineOperand& MO) const; 00037 00038 // Return an MCExpr for symbolic operand MO with variant kind Kind. 00039 const MCExpr *getExpr(const MachineOperand &MO, 00040 MCSymbolRefExpr::VariantKind Kind) const; 00041 }; 00042 } // end namespace llvm 00043 00044 #endif