1f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===-- AMDGPUAsmPrinter.h - Print AMDGPU assembly code -------------------===//
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/// \brief AMDGPU Assembly printer class.
12f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//
13f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===----------------------------------------------------------------------===//
14f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
15f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#ifndef AMDGPU_ASMPRINTER_H
16f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#define AMDGPU_ASMPRINTER_H
17f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
18f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#include "llvm/CodeGen/AsmPrinter.h"
19f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
20f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardnamespace llvm {
21f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
22f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardclass AMDGPUAsmPrinter : public AsmPrinter {
23f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
24f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardpublic:
25f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  explicit AMDGPUAsmPrinter(TargetMachine &TM, MCStreamer &Streamer)
26f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard    : AsmPrinter(TM, Streamer) { }
27f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
28f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  virtual bool runOnMachineFunction(MachineFunction &MF);
29f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
30f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  virtual const char *getPassName() const {
31f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard    return "AMDGPU Assembly Printer";
32f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  }
33f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
34f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  /// \brief Emit register usage information so that the GPU driver
35f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  /// can correctly setup the GPU state.
36f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  void EmitProgramInfo(MachineFunction &MF);
37f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
38f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  /// Implemented in AMDGPUMCInstLower.cpp
39f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard  virtual void EmitInstruction(const MachineInstr *MI);
40f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard};
41f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
42f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard} // End anonymous llvm
43f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard
44f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#endif //AMDGPU_ASMPRINTER_H
45