131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//= MBlazeInstPrinter.h - Convert MBlaze MCInst to assembly syntax -*- C++ -*-//
24e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//
34e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//                     The LLVM Compiler Infrastructure
44e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//
54e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck// This file is distributed under the University of Illinois Open Source
64e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck// License. See LICENSE.TXT for details.
74e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//
84e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//===----------------------------------------------------------------------===//
94e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//
104e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck// This class prints a MBlaze MCInst to a .s file.
114e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//
124e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck//===----------------------------------------------------------------------===//
134e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
144e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck#ifndef MBLAZEINSTPRINTER_H
154e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck#define MBLAZEINSTPRINTER_H
164e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
174e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck#include "llvm/MC/MCInstPrinter.h"
184e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
194e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Pecknamespace llvm {
204e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck  class MCOperand;
214e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
224e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck  class MBlazeInstPrinter : public MCInstPrinter {
234e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck  public:
2417463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper    MBlazeInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
2517463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper                      const MCRegisterInfo &MRI)
2617463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper      : MCInstPrinter(MAI, MII, MRI) {}
274e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
2898c5ddabca1debf935a07d14d0cbc9732374bdb8Owen Anderson    virtual void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot);
294e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
304e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    // Autogenerated by tblgen.
314e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    void printInstruction(const MCInst *MI, raw_ostream &O);
324e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    static const char *getRegisterName(unsigned RegNo);
334e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
344e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
354e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck                      const char *Modifier = 0);
364e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    void printFSLImm(const MCInst *MI, int OpNo, raw_ostream &O);
374e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    void printUnsignedImm(const MCInst *MI, int OpNo, raw_ostream &O);
384e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck    void printMemOperand(const MCInst *MI, int OpNo,raw_ostream &O,
394e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck                         const char *Modifier = 0);
404e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck  };
414e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck}
424e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck
434e9141fd4c0040cd7d4d830211f7d27fd98e9338Wesley Peck#endif
44