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