xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/AMDGPU/MCTargetDesc/R600InstPrinter.h (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
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