182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski//= NVPTXInstPrinter.h - Convert NVPTX MCInst to assembly syntax --*- C++ -*-=// 282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// 382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// The LLVM Compiler Infrastructure 482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// 582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// This file is distributed under the University of Illinois Open Source 682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// License. See LICENSE.TXT for details. 782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// 882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski//===----------------------------------------------------------------------===// 982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// 1082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// This class prints an NVPTX MCInst to .ptx file syntax. 1182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski// 1282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski//===----------------------------------------------------------------------===// 1382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 1482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#ifndef NVPTX_INST_PRINTER_H 1582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#define NVPTX_INST_PRINTER_H 1682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 1782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#include "llvm/MC/MCInstPrinter.h" 1882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#include "llvm/Support/raw_ostream.h" 1982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 2082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskinamespace llvm { 2182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 2282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskiclass MCOperand; 2382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskiclass MCSubtargetInfo; 2482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 2582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskiclass NVPTXInstPrinter : public MCInstPrinter { 2682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskipublic: 2782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski NVPTXInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 2882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski const MCRegisterInfo &MRI, const MCSubtargetInfo &STI); 2982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printRegName(raw_ostream &OS, unsigned RegNo) const override; 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot) override; 3282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 3382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski // Autogenerated by tblgen. 3482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printInstruction(const MCInst *MI, raw_ostream &O); 3582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski static const char *getRegisterName(unsigned RegNo); 3682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski // End 3782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 3882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 3982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printCvtMode(const MCInst *MI, int OpNum, raw_ostream &O, 40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 4182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printCmpMode(const MCInst *MI, int OpNum, raw_ostream &O, 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 4382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printLdStCode(const MCInst *MI, int OpNum, 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 4582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printMemOperand(const MCInst *MI, int OpNum, 46dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 474d748eb0e4b55262619305c96a89c55c30bffe6cJustin Holewinski void printProtoIdent(const MCInst *MI, int OpNum, 48dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 4982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski}; 5082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 5182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski} 5282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 5382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#endif 54