1f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===-- AMDGPUInstPrinter.h - AMDGPU MC Inst -> ASM interface ---*- C++ -*-===//
2f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//
3f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//                     The LLVM Compiler Infrastructure
4f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//
5f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// This file is distributed under the University of Illinois Open Source
6f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// License. See LICENSE.TXT for details.
7f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//
8f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===----------------------------------------------------------------------===//
9f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//
10f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard/// \file
11f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===----------------------------------------------------------------------===//
12f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
13f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#ifndef AMDGPUINSTPRINTER_H
14f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#define AMDGPUINSTPRINTER_H
15f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
16f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#include "llvm/ADT/StringRef.h"
17f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#include "llvm/MC/MCInstPrinter.h"
18f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#include "llvm/Support/raw_ostream.h"
19f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
20f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardnamespace llvm {
21f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
22f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardclass AMDGPUInstPrinter : public MCInstPrinter {
23f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardpublic:
24f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  AMDGPUInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
25f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard                     const MCRegisterInfo &MRI)
26f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard    : MCInstPrinter(MAI, MII, MRI) {}
27f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
28f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  //Autogenerated by tblgen
29f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printInstruction(const MCInst *MI, raw_ostream &O);
30f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  static const char *getRegisterName(unsigned RegNo);
31f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
32f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  virtual void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot);
33f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
34f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardprivate:
35f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
3601115b1f5032b848659669b161af1bdd9e646208Michel Danzer  void printInterpSlot(const MCInst *MI, unsigned OpNum, raw_ostream &O);
37f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
38f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O, StringRef Asm);
39f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O);
41f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O);
42f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
44f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O);
45f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printUpdateExecMask(const MCInst *MI, unsigned OpNo, raw_ostream &O);
47f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O);
48f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O);
499f7818d9bdfce2e9c7a2cbe31490a135aa6d1211Tom Stellard  void printSel(const MCInst *MI, unsigned OpNo, raw_ostream &O);
50f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard};
51f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
52f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard} // End namespace llvm
53f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
54f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#endif // AMDGPUINSTRPRINTER_H
55