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 1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_LIB_TARGET_NVPTX_INSTPRINTER_NVPTXINSTPRINTER_H 1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_LIB_TARGET_NVPTX_INSTPRINTER_NVPTXINSTPRINTER_H 1682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 1782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#include "llvm/MC/MCInstPrinter.h" 1882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 1982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskinamespace llvm { 2082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 2182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskiclass MCSubtargetInfo; 2282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 2382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskiclass NVPTXInstPrinter : public MCInstPrinter { 2482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinskipublic: 2582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski NVPTXInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 260c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar const MCRegisterInfo &MRI); 2782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printRegName(raw_ostream &OS, unsigned RegNo) const override; 290c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot, 300c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar const MCSubtargetInfo &STI) override; 3182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 3282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski // Autogenerated by tblgen. 3382767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printInstruction(const MCInst *MI, raw_ostream &O); 3482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski static const char *getRegisterName(unsigned RegNo); 3582767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski // End 3682767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 3782767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 3882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printCvtMode(const MCInst *MI, int OpNum, raw_ostream &O, 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 4082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printCmpMode(const MCInst *MI, int OpNum, raw_ostream &O, 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 4282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printLdStCode(const MCInst *MI, int OpNum, 43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 4482767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski void printMemOperand(const MCInst *MI, int OpNum, 45dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 464d748eb0e4b55262619305c96a89c55c30bffe6cJustin Holewinski void printProtoIdent(const MCInst *MI, int OpNum, 47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 4882767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski}; 4982767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 5082767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski} 5182767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski 5282767327c59ede1f8663ec9b9a64a668993d501fJustin Holewinski#endif 53