1 //===-- AMDGPUInstPrinter.h - AMDGPU MC Inst -> ASM interface ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_AMDGPU_INSTPRINTER_AMDGPUINSTPRINTER_H
14 #define LLVM_LIB_TARGET_AMDGPU_INSTPRINTER_AMDGPUINSTPRINTER_H
16 #include "llvm/MC/MCInstPrinter.h"
20 class AMDGPUInstPrinter : public MCInstPrinter {
22 AMDGPUInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
23 const MCRegisterInfo &MRI)
24 : MCInstPrinter(MAI, MII, MRI) {}
26 //Autogenerated by tblgen
27 void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
29 static const char *getRegisterName(unsigned RegNo);
31 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
32 const MCSubtargetInfo &STI) override;
33 static void printRegOperand(unsigned RegNo, raw_ostream &O,
34 const MCRegisterInfo &MRI);
37 void printU4ImmOperand(const MCInst *MI, unsigned OpNo,
38 const MCSubtargetInfo &STI, raw_ostream &O);
39 void printU8ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40 void printU16ImmOperand(const MCInst *MI, unsigned OpNo,
41 const MCSubtargetInfo &STI, raw_ostream &O);
42 void printU4ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43 void printU8ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
44 void printU16ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
45 void printU32ImmOperand(const MCInst *MI, unsigned OpNo,
46 const MCSubtargetInfo &STI, raw_ostream &O);
47 void printNamedBit(const MCInst *MI, unsigned OpNo, raw_ostream &O,
49 void printOffen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
50 void printIdxen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
51 void printAddr64(const MCInst *MI, unsigned OpNo, raw_ostream &O);
52 void printMBUFOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
53 void printOffset(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
55 void printOffset0(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
57 void printOffset1(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
59 void printSMRDOffset8(const MCInst *MI, unsigned OpNo,
60 const MCSubtargetInfo &STI, raw_ostream &O);
61 void printSMRDOffset20(const MCInst *MI, unsigned OpNo,
62 const MCSubtargetInfo &STI, raw_ostream &O);
63 void printSMRDLiteralOffset(const MCInst *MI, unsigned OpNo,
64 const MCSubtargetInfo &STI, raw_ostream &O);
65 void printGDS(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
67 void printGLC(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
69 void printSLC(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
71 void printTFE(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
73 void printDMask(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
75 void printUNorm(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
77 void printDA(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
79 void printR128(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
81 void printLWE(const MCInst *MI, unsigned OpNo,
82 const MCSubtargetInfo &STI, raw_ostream &O);
83 void printExpCompr(const MCInst *MI, unsigned OpNo,
84 const MCSubtargetInfo &STI, raw_ostream &O);
85 void printExpVM(const MCInst *MI, unsigned OpNo,
86 const MCSubtargetInfo &STI, raw_ostream &O);
88 void printRegOperand(unsigned RegNo, raw_ostream &O);
89 void printVOPDst(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
91 void printImmediate16(uint32_t Imm, const MCSubtargetInfo &STI,
93 void printImmediateV216(uint32_t Imm, const MCSubtargetInfo &STI,
95 void printImmediate32(uint32_t Imm, const MCSubtargetInfo &STI,
97 void printImmediate64(uint64_t Imm, const MCSubtargetInfo &STI,
99 void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
101 void printOperandAndFPInputMods(const MCInst *MI, unsigned OpNo,
102 const MCSubtargetInfo &STI, raw_ostream &O);
103 void printOperandAndIntInputMods(const MCInst *MI, unsigned OpNo,
104 const MCSubtargetInfo &STI, raw_ostream &O);
105 void printDPPCtrl(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
107 void printRowMask(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
109 void printBankMask(const MCInst *MI, unsigned OpNo,
110 const MCSubtargetInfo &STI, raw_ostream &O);
111 void printBoundCtrl(const MCInst *MI, unsigned OpNo,
112 const MCSubtargetInfo &STI, raw_ostream &O);
113 void printSDWASel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
114 void printSDWADstSel(const MCInst *MI, unsigned OpNo,
115 const MCSubtargetInfo &STI, raw_ostream &O);
116 void printSDWASrc0Sel(const MCInst *MI, unsigned OpNo,
117 const MCSubtargetInfo &STI, raw_ostream &O);
118 void printSDWASrc1Sel(const MCInst *MI, unsigned OpNo,
119 const MCSubtargetInfo &STI, raw_ostream &O);
120 void printSDWADstUnused(const MCInst *MI, unsigned OpNo,
121 const MCSubtargetInfo &STI, raw_ostream &O);
122 void printOpSel(const MCInst *MI, unsigned OpNo,
123 const MCSubtargetInfo &STI, raw_ostream &O);
124 void printOpSelHi(const MCInst *MI, unsigned OpNo,
125 const MCSubtargetInfo &STI, raw_ostream &O);
126 void printNegLo(const MCInst *MI, unsigned OpNo,
127 const MCSubtargetInfo &STI, raw_ostream &O);
128 void printNegHi(const MCInst *MI, unsigned OpNo,
129 const MCSubtargetInfo &STI, raw_ostream &O);
130 void printInterpSlot(const MCInst *MI, unsigned OpNo,
131 const MCSubtargetInfo &STI, raw_ostream &O);
132 void printInterpAttr(const MCInst *MI, unsigned OpNo,
133 const MCSubtargetInfo &STI, raw_ostream &O);
134 void printInterpAttrChan(const MCInst *MI, unsigned OpNo,
135 const MCSubtargetInfo &STI, raw_ostream &O);
137 void printVGPRIndexMode(const MCInst *MI, unsigned OpNo,
138 const MCSubtargetInfo &STI, raw_ostream &O);
139 void printMemOperand(const MCInst *MI, unsigned OpNo,
140 const MCSubtargetInfo &STI, raw_ostream &O);
143 template <unsigned N>
144 void printExpSrcN(const MCInst *MI, unsigned OpNo,
145 const MCSubtargetInfo &STI, raw_ostream &O);
146 void printExpSrc0(const MCInst *MI, unsigned OpNo,
147 const MCSubtargetInfo &STI, raw_ostream &O);
148 void printExpSrc1(const MCInst *MI, unsigned OpNo,
149 const MCSubtargetInfo &STI, raw_ostream &O);
150 void printExpSrc2(const MCInst *MI, unsigned OpNo,
151 const MCSubtargetInfo &STI, raw_ostream &O);
152 void printExpSrc3(const MCInst *MI, unsigned OpNo,
153 const MCSubtargetInfo &STI, raw_ostream &O);
154 void printExpTgt(const MCInst *MI, unsigned OpNo,
155 const MCSubtargetInfo &STI, raw_ostream &O);
157 static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O,
158 StringRef Asm, StringRef Default = "");
159 static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O,
161 void printAbs(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
163 void printClamp(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
165 void printClampSI(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
167 void printOModSI(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
169 void printLiteral(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
171 void printLast(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
173 void printNeg(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
175 void printOMOD(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
177 void printRel(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
179 void printUpdateExecMask(const MCInst *MI, unsigned OpNo,
180 const MCSubtargetInfo &STI, raw_ostream &O);
181 void printUpdatePred(const MCInst *MI, unsigned OpNo,
182 const MCSubtargetInfo &STI, raw_ostream &O);
183 void printWrite(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
185 void printSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
186 void printBankSwizzle(const MCInst *MI, unsigned OpNo,
187 const MCSubtargetInfo &STI, raw_ostream &O);
188 void printRSel(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
190 void printCT(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
192 void printKCache(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
194 void printSendMsg(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
196 void printSwizzle(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
198 void printWaitFlag(const MCInst *MI, unsigned OpNo,
199 const MCSubtargetInfo &STI, raw_ostream &O);
200 void printHwreg(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
204 } // End namespace llvm