1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===-- AArch64MCInstLower.h - Lower MachineInstr to MCInst ---------------===// 236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// The LLVM Compiler Infrastructure 436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source 636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details. 736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 10dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef AArch64_MCINSTLOWER_H 11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define AArch64_MCINSTLOWER_H 1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/ADT/Triple.h" 1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/Support/Compiler.h" 1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm { 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass AsmPrinter; 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCAsmInfo; 1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCContext; 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCInst; 2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCOperand; 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCSymbol; 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MachineInstr; 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MachineModuleInfoMachO; 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MachineOperand; 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass Mangler; 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/// AArch64MCInstLower - This class is used to lower an MachineInstr 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines/// into an MCInst. 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass LLVM_LIBRARY_VISIBILITY AArch64MCInstLower { 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCContext &Ctx; 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines AsmPrinter &Printer; 3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines Triple TargetTriple; 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinespublic: 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines AArch64MCInstLower(MCContext &ctx, Mangler &mang, AsmPrinter &printer); 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const; 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void Lower(const MachineInstr *MI, MCInst &OutMI) const; 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCOperand lowerSymbolOperandDarwin(const MachineOperand &MO, 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCSymbol *Sym) const; 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCOperand lowerSymbolOperandELF(const MachineOperand &MO, 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCSymbol *Sym) const; 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const; 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const; 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const; 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}; 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#endif 53