52897185d8f22a0064734c044da422669ba3aa3c
[oota-llvm.git] / lib / Target / R600 / InstPrinter / AMDGPUInstPrinter.h
1 //===-- AMDGPUInstPrinter.h - AMDGPU MC Inst -> ASM interface ---*- 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 /// \file
11 //===----------------------------------------------------------------------===//
12
13 #ifndef LLVM_LIB_TARGET_R600_INSTPRINTER_AMDGPUINSTPRINTER_H
14 #define LLVM_LIB_TARGET_R600_INSTPRINTER_AMDGPUINSTPRINTER_H
15
16 #include "llvm/ADT/StringRef.h"
17 #include "llvm/MC/MCInstPrinter.h"
18 #include "llvm/Support/raw_ostream.h"
19
20 namespace llvm {
21
22 class AMDGPUInstPrinter : public MCInstPrinter {
23 public:
24   AMDGPUInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
25                      const MCRegisterInfo &MRI)
26     : MCInstPrinter(MAI, MII, MRI) {}
27
28   //Autogenerated by tblgen
29   void printInstruction(const MCInst *MI, raw_ostream &O);
30   static const char *getRegisterName(unsigned RegNo);
31
32   void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot) override;
33
34 private:
35   void printU8ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
36   void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
37   void printU8ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
38   void printU16ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
39   void printU32ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40   void printOffen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
41   void printIdxen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
42   void printAddr64(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43   void printMBUFOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
44   void printDSOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
45   void printDSOffset0(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46   void printDSOffset1(const MCInst *MI, unsigned OpNo, raw_ostream &O);
47   void printGDS(const MCInst *MI, unsigned OpNo, raw_ostream &O);
48   void printGLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
49   void printSLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
50   void printTFE(const MCInst *MI, unsigned OpNo, raw_ostream &O);
51   void printRegOperand(unsigned RegNo, raw_ostream &O);
52   void printVOPDst(const MCInst *MI, unsigned OpNo, raw_ostream &O);
53   void printImmediate32(uint32_t I, raw_ostream &O);
54   void printImmediate64(uint64_t I, raw_ostream &O);
55   void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
56   void printOperandAndMods(const MCInst *MI, unsigned OpNo, raw_ostream &O);
57   static void printInterpSlot(const MCInst *MI, unsigned OpNum, raw_ostream &O);
58   void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
59   static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O,
60                          StringRef Asm, StringRef Default = "");
61   static void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O);
62   static void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O);
63   static void printClampSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
64   static void printOModSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
65   static void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O);
66   static void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O);
67   static void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
68   static void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O);
69   static void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
70   static void printUpdateExecMask(const MCInst *MI, unsigned OpNo,
71                                   raw_ostream &O);
72   static void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O);
73   static void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O);
74   static void printSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
75   static void printBankSwizzle(const MCInst *MI, unsigned OpNo, raw_ostream &O);
76   static void printRSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
77   static void printCT(const MCInst *MI, unsigned OpNo, raw_ostream &O);
78   static void printKCache(const MCInst *MI, unsigned OpNo, raw_ostream &O);
79   static void printSendMsg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
80   static void printWaitFlag(const MCInst *MI, unsigned OpNo, raw_ostream &O);
81 };
82
83 } // End namespace llvm
84
85 #endif