1349cc55cSDimitry Andric //===-- R600InstPrinter.h - AMDGPU MC Inst -> ASM interface -----*- C++ -*-===// 2349cc55cSDimitry Andric // 3349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6349cc55cSDimitry Andric // 7349cc55cSDimitry Andric //===----------------------------------------------------------------------===// 8349cc55cSDimitry Andric 9349cc55cSDimitry Andric #ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_R600INSTPRINTER_H 10349cc55cSDimitry Andric #define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_R600INSTPRINTER_H 11349cc55cSDimitry Andric 12349cc55cSDimitry Andric #include "llvm/MC/MCInstPrinter.h" 13349cc55cSDimitry Andric 14349cc55cSDimitry Andric namespace llvm { 15349cc55cSDimitry Andric 16349cc55cSDimitry Andric class R600InstPrinter : public MCInstPrinter { 17349cc55cSDimitry Andric public: R600InstPrinter(const MCAsmInfo & MAI,const MCInstrInfo & MII,const MCRegisterInfo & MRI)18349cc55cSDimitry Andric R600InstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 19349cc55cSDimitry Andric const MCRegisterInfo &MRI) 20349cc55cSDimitry Andric : MCInstPrinter(MAI, MII, MRI) {} 21349cc55cSDimitry Andric 22349cc55cSDimitry Andric void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, 23349cc55cSDimitry Andric const MCSubtargetInfo &STI, raw_ostream &O) override; 24349cc55cSDimitry Andric std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override; 25349cc55cSDimitry Andric void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O); 26*bdd1243dSDimitry Andric static const char *getRegisterName(MCRegister Reg); 27349cc55cSDimitry Andric 28349cc55cSDimitry Andric void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O); 29349cc55cSDimitry Andric void printBankSwizzle(const MCInst *MI, unsigned OpNo, raw_ostream &O); 30349cc55cSDimitry Andric void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O); 31349cc55cSDimitry Andric void printCT(const MCInst *MI, unsigned OpNo, raw_ostream &O); 32349cc55cSDimitry Andric void printKCache(const MCInst *MI, unsigned OpNo, raw_ostream &O); 33349cc55cSDimitry Andric void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O); 34349cc55cSDimitry Andric void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O); 35349cc55cSDimitry Andric void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 36349cc55cSDimitry Andric void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O); 37349cc55cSDimitry Andric void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O); 38349cc55cSDimitry Andric void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 39349cc55cSDimitry Andric void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O); 40349cc55cSDimitry Andric void printRSel(const MCInst *MI, unsigned OpNo, raw_ostream &O); 41349cc55cSDimitry Andric void printUpdateExecMask(const MCInst *MI, unsigned OpNo, raw_ostream &O); 42349cc55cSDimitry Andric void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O); 43349cc55cSDimitry Andric void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O); 44349cc55cSDimitry Andric }; 45349cc55cSDimitry Andric 46349cc55cSDimitry Andric } // End namespace llvm 47349cc55cSDimitry Andric 48349cc55cSDimitry Andric #endif 49