NVPTXInstPrinter.h revision 4d748eb0e4b55262619305c96a89c55c30bffe6c
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//= NVPTXInstPrinter.h - Convert NVPTX MCInst to assembly syntax --*- C++ -*-=//
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// License. See LICENSE.TXT for details.
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//===----------------------------------------------------------------------===//
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This class prints an NVPTX MCInst to .ptx file syntax.
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//===----------------------------------------------------------------------===//
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef NVPTX_INST_PRINTER_H
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define NVPTX_INST_PRINTER_H
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "llvm/MC/MCInstPrinter.h"
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "llvm/Support/raw_ostream.h"
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace llvm {
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class MCOperand;
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class MCSubtargetInfo;
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class NVPTXInstPrinter : public MCInstPrinter {
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)public:
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  NVPTXInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                   const MCRegisterInfo &MRI, const MCSubtargetInfo &STI);
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot);
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Autogenerated by tblgen.
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void printInstruction(const MCInst *MI, raw_ostream &O);
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  static const char *getRegisterName(unsigned RegNo);
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // End
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void printCvtMode(const MCInst *MI, int OpNum, raw_ostream &O,
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                    const char *Modifier = 0);
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void printCmpMode(const MCInst *MI, int OpNum, raw_ostream &O,
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                    const char *Modifier = 0);
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void printLdStCode(const MCInst *MI, int OpNum,
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                     raw_ostream &O, const char *Modifier = 0);
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void printMemOperand(const MCInst *MI, int OpNum,
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                       raw_ostream &O, const char *Modifier = 0);
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void printProtoIdent(const MCInst *MI, int OpNum,
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                       raw_ostream &O, const char *Modifier = 0);
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)};
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif
543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)