1//===-- R600AsmPrinter.h - Print R600 assembly code -------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9/// \file 10/// R600 Assembly printer class. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_LIB_TARGET_AMDGPU_R600ASMPRINTER_H 15#define LLVM_LIB_TARGET_AMDGPU_R600ASMPRINTER_H 16 17#include "llvm/CodeGen/AsmPrinter.h" 18 19namespace llvm { 20 21class R600AsmPrinter final : public AsmPrinter { 22 23public: 24 explicit R600AsmPrinter(TargetMachine &TM, 25 std::unique_ptr<MCStreamer> Streamer); 26 StringRef getPassName() const override; 27 bool runOnMachineFunction(MachineFunction &MF) override; 28 /// Implemented in AMDGPUMCInstLower.cpp 29 void EmitInstruction(const MachineInstr *MI) override; 30 /// Lower the specified LLVM Constant to an MCExpr. 31 /// The AsmPrinter::lowerConstantof does not know how to lower 32 /// addrspacecast, therefore they should be lowered by this function. 33 const MCExpr *lowerConstant(const Constant *CV) override; 34 35private: 36 void EmitProgramInfoR600(const MachineFunction &MF); 37}; 38 39AsmPrinter * 40createR600AsmPrinterPass(TargetMachine &TM, 41 std::unique_ptr<MCStreamer> &&Streamer); 42 43} // namespace llvm 44 45#endif // LLVM_LIB_TARGET_AMDGPU_R600ASMPRINTER_H 46