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