9633e4c0332cbe239d6ca65f963ddf13888e95fc
[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,
33                  const MCSubtargetInfo &STI) override;
34
35 private:
36   void printU8ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
37   void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
38   void printU8ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
39   void printU16ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40   void printU32ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
41   void printOffen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
42   void printIdxen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43   void printAddr64(const MCInst *MI, unsigned OpNo, raw_ostream &O);
44   void printMBUFOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
45   void printDSOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46   void printDSOffset0(const MCInst *MI, unsigned OpNo, raw_ostream &O);
47   void printDSOffset1(const MCInst *MI, unsigned OpNo, raw_ostream &O);
48   void printGDS(const MCInst *MI, unsigned OpNo, raw_ostream &O);
49   void printGLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
50   void printSLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
51   void printTFE(const MCInst *MI, unsigned OpNo, raw_ostream &O);
52   void printRegOperand(unsigned RegNo, raw_ostream &O);
53   void printVOPDst(const MCInst *MI, unsigned OpNo, raw_ostream &O);
54   void printImmediate32(uint32_t I, raw_ostream &O);
55   void printImmediate64(uint64_t I, raw_ostream &O);
56   void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
57   void printOperandAndMods(const MCInst *MI, unsigned OpNo, raw_ostream &O);
58   static void printInterpSlot(const MCInst *MI, unsigned OpNum, raw_ostream &O);
59   void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
60   static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O,
61                          StringRef Asm, StringRef Default = "");
62   static void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O);
63   static void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O);
64   static void printClampSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
65   static void printOModSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
66   static void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O);
67   static void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O);
68   static void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
69   static void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O);
70   static void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
71   static void printUpdateExecMask(const MCInst *MI, unsigned OpNo,
72                                   raw_ostream &O);
73   static void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O);
74   static void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O);
75   static void printSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
76   static void printBankSwizzle(const MCInst *MI, unsigned OpNo, raw_ostream &O);
77   static void printRSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
78   static void printCT(const MCInst *MI, unsigned OpNo, raw_ostream &O);
79   static void printKCache(const MCInst *MI, unsigned OpNo, raw_ostream &O);
80   static void printSendMsg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
81   static void printWaitFlag(const MCInst *MI, unsigned OpNo, raw_ostream &O);
82 };
83
84 } // End namespace llvm
85
86 #endif