MipsMCInstLower.h revision cc46fe591af10c193c17323547a3dd7cc00c925d
18f5e8c1cd69fa77bea20140a7132ee2dea166c6dJia Liu//===-- MipsMCInstLower.h - Lower MachineInstr to MCInst -------*- C++ -*--===// 217a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// 317a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// The LLVM Compiler Infrastructure 417a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// 517a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// This file is distributed under the University of Illinois Open Source 617a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// License. See LICENSE.TXT for details. 717a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// 817a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka//===----------------------------------------------------------------------===// 917a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka 1017a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka#ifndef MIPSMCINSTLOWER_H 1117a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka#define MIPSMCINSTLOWER_H 12ce1a538ab5b7ae7e0ed48d18c02571280fe105aaBruno Cardoso Lopes#include "llvm/ADT/SmallVector.h" 1317a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka#include "llvm/CodeGen/MachineOperand.h" 1417a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka#include "llvm/Support/Compiler.h" 1517a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka 1617a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanakanamespace llvm { 1717a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MCContext; 1817a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MCInst; 1917a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MCOperand; 2017a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MachineInstr; 2117a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MachineFunction; 2217a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class Mangler; 2317a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka class MipsAsmPrinter; 24bb481f882093fb738d2bb15610c79364bada5496Jia Liu 2517a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka/// MipsMCInstLower - This class is used to lower an MachineInstr into an 2617a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka// MCInst. 2717a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanakaclass LLVM_LIBRARY_VISIBILITY MipsMCInstLower { 2817a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka typedef MachineOperand::MachineOperandType MachineOperandType; 29f93b86306683f8e860c8824efb717995cb072a70Akira Hatanaka MCContext *Ctx; 3017a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka Mangler *Mang; 3117a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka MipsAsmPrinter &AsmPrinter; 3217a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanakapublic: 33f93b86306683f8e860c8824efb717995cb072a70Akira Hatanaka MipsMCInstLower(MipsAsmPrinter &asmprinter); 34864f66085cd9543070ef01b9f7371c110ecd7898Akira Hatanaka void Initialize(Mangler *mang, MCContext *C); 3517a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka void Lower(const MachineInstr *MI, MCInst &OutMI) const; 36cc46fe591af10c193c17323547a3dd7cc00c925dAkira Hatanaka MCOperand LowerOperand(const MachineOperand& MO, unsigned offset = 0) const; 37e035f65b16956cdb7ba29e741b7e3c04a8ce4d24Jack Carter 3817a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanakaprivate: 3917a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka MCOperand LowerSymbolOperand(const MachineOperand &MO, 4078d1b11aa57e5a2683e4be3baaaa9576ac04eea2Akira Hatanaka MachineOperandType MOTy, unsigned Offset) const; 4117a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka}; 4217a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka} 4317a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka 4417a2f8e551dd4a772d389d1a193235ae56f8a399Akira Hatanaka#endif 45