xref: /aosp_15_r20/external/llvm/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- AMDGPUInstPrinter.h - AMDGPU MC Inst -> ASM interface ---*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker /// \file
11*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_AMDGPU_INSTPRINTER_AMDGPUINSTPRINTER_H
14*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_AMDGPU_INSTPRINTER_AMDGPUINSTPRINTER_H
15*9880d681SAndroid Build Coastguard Worker 
16*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCInstPrinter.h"
17*9880d681SAndroid Build Coastguard Worker 
18*9880d681SAndroid Build Coastguard Worker namespace llvm {
19*9880d681SAndroid Build Coastguard Worker 
20*9880d681SAndroid Build Coastguard Worker class AMDGPUInstPrinter : public MCInstPrinter {
21*9880d681SAndroid Build Coastguard Worker public:
AMDGPUInstPrinter(const MCAsmInfo & MAI,const MCInstrInfo & MII,const MCRegisterInfo & MRI)22*9880d681SAndroid Build Coastguard Worker   AMDGPUInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
23*9880d681SAndroid Build Coastguard Worker                      const MCRegisterInfo &MRI)
24*9880d681SAndroid Build Coastguard Worker     : MCInstPrinter(MAI, MII, MRI) {}
25*9880d681SAndroid Build Coastguard Worker 
26*9880d681SAndroid Build Coastguard Worker   //Autogenerated by tblgen
27*9880d681SAndroid Build Coastguard Worker   void printInstruction(const MCInst *MI, raw_ostream &O);
28*9880d681SAndroid Build Coastguard Worker   static const char *getRegisterName(unsigned RegNo);
29*9880d681SAndroid Build Coastguard Worker 
30*9880d681SAndroid Build Coastguard Worker   void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
31*9880d681SAndroid Build Coastguard Worker                  const MCSubtargetInfo &STI) override;
32*9880d681SAndroid Build Coastguard Worker   static void printRegOperand(unsigned RegNo, raw_ostream &O,
33*9880d681SAndroid Build Coastguard Worker                               const MCRegisterInfo &MRI);
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker private:
36*9880d681SAndroid Build Coastguard Worker   void printU4ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
37*9880d681SAndroid Build Coastguard Worker   void printU8ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
38*9880d681SAndroid Build Coastguard Worker   void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
39*9880d681SAndroid Build Coastguard Worker   void printU4ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40*9880d681SAndroid Build Coastguard Worker   void printU8ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
41*9880d681SAndroid Build Coastguard Worker   void printU16ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
42*9880d681SAndroid Build Coastguard Worker   void printU32ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43*9880d681SAndroid Build Coastguard Worker   void printNamedBit(const MCInst* MI, unsigned OpNo, raw_ostream& O,
44*9880d681SAndroid Build Coastguard Worker                      StringRef BitName);
45*9880d681SAndroid Build Coastguard Worker   void printOffen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46*9880d681SAndroid Build Coastguard Worker   void printIdxen(const MCInst *MI, unsigned OpNo, raw_ostream &O);
47*9880d681SAndroid Build Coastguard Worker   void printAddr64(const MCInst *MI, unsigned OpNo, raw_ostream &O);
48*9880d681SAndroid Build Coastguard Worker   void printMBUFOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
49*9880d681SAndroid Build Coastguard Worker   void printOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
50*9880d681SAndroid Build Coastguard Worker   void printOffset0(const MCInst *MI, unsigned OpNo, raw_ostream &O);
51*9880d681SAndroid Build Coastguard Worker   void printOffset1(const MCInst *MI, unsigned OpNo, raw_ostream &O);
52*9880d681SAndroid Build Coastguard Worker   void printSMRDOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
53*9880d681SAndroid Build Coastguard Worker   void printSMRDLiteralOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
54*9880d681SAndroid Build Coastguard Worker   void printGDS(const MCInst *MI, unsigned OpNo, raw_ostream &O);
55*9880d681SAndroid Build Coastguard Worker   void printGLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
56*9880d681SAndroid Build Coastguard Worker   void printSLC(const MCInst *MI, unsigned OpNo, raw_ostream &O);
57*9880d681SAndroid Build Coastguard Worker   void printTFE(const MCInst *MI, unsigned OpNo, raw_ostream &O);
58*9880d681SAndroid Build Coastguard Worker   void printDMask(const MCInst *MI, unsigned OpNo, raw_ostream &O);
59*9880d681SAndroid Build Coastguard Worker   void printUNorm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
60*9880d681SAndroid Build Coastguard Worker   void printDA(const MCInst *MI, unsigned OpNo, raw_ostream &O);
61*9880d681SAndroid Build Coastguard Worker   void printR128(const MCInst *MI, unsigned OpNo, raw_ostream &O);
62*9880d681SAndroid Build Coastguard Worker   void printLWE(const MCInst *MI, unsigned OpNo, raw_ostream &O);
63*9880d681SAndroid Build Coastguard Worker   void printRegOperand(unsigned RegNo, raw_ostream &O);
64*9880d681SAndroid Build Coastguard Worker   void printVOPDst(const MCInst *MI, unsigned OpNo, raw_ostream &O);
65*9880d681SAndroid Build Coastguard Worker   void printImmediate32(uint32_t I, raw_ostream &O);
66*9880d681SAndroid Build Coastguard Worker   void printImmediate64(uint64_t I, raw_ostream &O);
67*9880d681SAndroid Build Coastguard Worker   void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
68*9880d681SAndroid Build Coastguard Worker   void printOperandAndFPInputMods(const MCInst *MI, unsigned OpNo, raw_ostream &O);
69*9880d681SAndroid Build Coastguard Worker   void printOperandAndIntInputMods(const MCInst *MI, unsigned OpNo, raw_ostream &O);
70*9880d681SAndroid Build Coastguard Worker   void printDPPCtrl(const MCInst *MI, unsigned OpNo, raw_ostream &O);
71*9880d681SAndroid Build Coastguard Worker   void printRowMask(const MCInst *MI, unsigned OpNo, raw_ostream &O);
72*9880d681SAndroid Build Coastguard Worker   void printBankMask(const MCInst *MI, unsigned OpNo, raw_ostream &O);
73*9880d681SAndroid Build Coastguard Worker   void printBoundCtrl(const MCInst *MI, unsigned OpNo, raw_ostream &O);
74*9880d681SAndroid Build Coastguard Worker   void printSDWASel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
75*9880d681SAndroid Build Coastguard Worker   void printSDWADstSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
76*9880d681SAndroid Build Coastguard Worker   void printSDWASrc0Sel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
77*9880d681SAndroid Build Coastguard Worker   void printSDWASrc1Sel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
78*9880d681SAndroid Build Coastguard Worker   void printSDWADstUnused(const MCInst *MI, unsigned OpNo, raw_ostream &O);
79*9880d681SAndroid Build Coastguard Worker   static void printInterpSlot(const MCInst *MI, unsigned OpNum, raw_ostream &O);
80*9880d681SAndroid Build Coastguard Worker   void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
81*9880d681SAndroid Build Coastguard Worker   static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O,
82*9880d681SAndroid Build Coastguard Worker                          StringRef Asm, StringRef Default = "");
83*9880d681SAndroid Build Coastguard Worker   static void printIfSet(const MCInst *MI, unsigned OpNo,
84*9880d681SAndroid Build Coastguard Worker                          raw_ostream &O, char Asm);
85*9880d681SAndroid Build Coastguard Worker   static void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O);
86*9880d681SAndroid Build Coastguard Worker   static void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O);
87*9880d681SAndroid Build Coastguard Worker   static void printClampSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
88*9880d681SAndroid Build Coastguard Worker   static void printOModSI(const MCInst *MI, unsigned OpNo, raw_ostream &O);
89*9880d681SAndroid Build Coastguard Worker   void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O);
90*9880d681SAndroid Build Coastguard Worker   static void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O);
91*9880d681SAndroid Build Coastguard Worker   static void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
92*9880d681SAndroid Build Coastguard Worker   static void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O);
93*9880d681SAndroid Build Coastguard Worker   static void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
94*9880d681SAndroid Build Coastguard Worker   static void printUpdateExecMask(const MCInst *MI, unsigned OpNo,
95*9880d681SAndroid Build Coastguard Worker                                   raw_ostream &O);
96*9880d681SAndroid Build Coastguard Worker   static void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O);
97*9880d681SAndroid Build Coastguard Worker   static void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O);
98*9880d681SAndroid Build Coastguard Worker   static void printSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
99*9880d681SAndroid Build Coastguard Worker   static void printBankSwizzle(const MCInst *MI, unsigned OpNo, raw_ostream &O);
100*9880d681SAndroid Build Coastguard Worker   static void printRSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
101*9880d681SAndroid Build Coastguard Worker   static void printCT(const MCInst *MI, unsigned OpNo, raw_ostream &O);
102*9880d681SAndroid Build Coastguard Worker   static void printKCache(const MCInst *MI, unsigned OpNo, raw_ostream &O);
103*9880d681SAndroid Build Coastguard Worker   static void printSendMsg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
104*9880d681SAndroid Build Coastguard Worker   static void printWaitFlag(const MCInst *MI, unsigned OpNo, raw_ostream &O);
105*9880d681SAndroid Build Coastguard Worker   static void printHwreg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
106*9880d681SAndroid Build Coastguard Worker };
107*9880d681SAndroid Build Coastguard Worker 
108*9880d681SAndroid Build Coastguard Worker } // End namespace llvm
109*9880d681SAndroid Build Coastguard Worker 
110*9880d681SAndroid Build Coastguard Worker #endif
111