NVPTXInstPrinter.h revision 263508
1//= NVPTXInstPrinter.h - Convert NVPTX MCInst to assembly syntax --*- C++ -*-=//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This class prints an NVPTX MCInst to .ptx file syntax.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef NVPTX_INST_PRINTER_H
15#define NVPTX_INST_PRINTER_H
16
17#include "llvm/MC/MCInstPrinter.h"
18#include "llvm/Support/raw_ostream.h"
19
20namespace llvm {
21
22class MCOperand;
23class MCSubtargetInfo;
24
25class NVPTXInstPrinter : public MCInstPrinter {
26public:
27  NVPTXInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
28                   const MCRegisterInfo &MRI, const MCSubtargetInfo &STI);
29
30  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
31  virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot);
32
33  // Autogenerated by tblgen.
34  void printInstruction(const MCInst *MI, raw_ostream &O);
35  static const char *getRegisterName(unsigned RegNo);
36  // End
37
38  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
39  void printCvtMode(const MCInst *MI, int OpNum, raw_ostream &O,
40                    const char *Modifier = 0);
41  void printCmpMode(const MCInst *MI, int OpNum, raw_ostream &O,
42                    const char *Modifier = 0);
43  void printLdStCode(const MCInst *MI, int OpNum,
44                     raw_ostream &O, const char *Modifier = 0);
45  void printMemOperand(const MCInst *MI, int OpNum,
46                       raw_ostream &O, const char *Modifier = 0);
47  void printProtoIdent(const MCInst *MI, int OpNum,
48                       raw_ostream &O, const char *Modifier = 0);
49};
50
51}
52
53#endif
54