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