LLVM  4.0.0
AMDGPUTargetStreamer.h
Go to the documentation of this file.
1 //===-- AMDGPUTargetStreamer.h - AMDGPU Target Streamer --------*- C++ -*--===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUTARGETSTREAMER_H
11 #define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUTARGETSTREAMER_H
12 
13 #include "AMDKernelCodeT.h"
14 #include "llvm/MC/MCStreamer.h"
15 
16 namespace llvm {
17 #include "AMDGPUPTNote.h"
18 
19 class DataLayout;
20 class Function;
21 class MCELFStreamer;
22 class MCSymbol;
23 class MDNode;
24 class Module;
25 class Type;
26 
28 protected:
29  MCContext &getContext() const { return Streamer.getContext(); }
30 
31 public:
34  uint32_t Minor) = 0;
35 
36  virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,
37  uint32_t Stepping,
38  StringRef VendorName,
39  StringRef ArchName) = 0;
40 
41  virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
42 
43  virtual void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) = 0;
44 
45  virtual void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) = 0;
46 
47  virtual void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) = 0;
48 
49  virtual void EmitRuntimeMetadata(Module &M) = 0;
50 
51  virtual void EmitRuntimeMetadata(StringRef Metadata) = 0;
52 };
53 
56 public:
59  uint32_t Minor) override;
60 
62  uint32_t Stepping, StringRef VendorName,
63  StringRef ArchName) override;
64 
65  void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
66 
67  void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
68 
69  void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override;
70 
71  void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override;
72 
73  void EmitRuntimeMetadata(Module &M) override;
74 
75  void EmitRuntimeMetadata(StringRef Metadata) override;
76 };
77 
79  MCStreamer &Streamer;
80 
81  void EmitAMDGPUNote(const MCExpr* DescSize,
83  std::function<void(MCELFStreamer &)> EmitDesc);
84 
85 public:
87 
89 
91  uint32_t Minor) override;
92 
94  uint32_t Stepping, StringRef VendorName,
95  StringRef ArchName) override;
96 
97  void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
98 
99  void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
100 
101  void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override;
102 
103  void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override;
104 
105  void EmitRuntimeMetadata(Module &M) override;
106 
107  void EmitRuntimeMetadata(StringRef Metadata) override;
108 };
109 
110 }
111 #endif
void EmitRuntimeMetadata(Module &M) override
void EmitRuntimeMetadata(Module &M) override
A Module instance is used to store all the information related to an LLVM module. ...
Definition: Module.h:52
virtual void EmitRuntimeMetadata(Module &M)=0
formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...
void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override
Target specific streamer interface.
Definition: MCStreamer.h:73
virtual void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type)=0
void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor, uint32_t Stepping, StringRef VendorName, StringRef ArchName) override
void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor, uint32_t Stepping, StringRef VendorName, StringRef ArchName) override
AMD Kernel Code Object (amd_kernel_code_t).
virtual void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName)=0
MCContext & getContext() const
Base class for the full range of assembler expressions which are needed for parsing.
Definition: MCExpr.h:34
void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override
MCContext & getContext() const
Definition: MCStreamer.h:221
Context object for machine code objects.
Definition: MCContext.h:51
virtual void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName)=0
void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override
Streaming machine code generation interface.
Definition: MCStreamer.h:161
The instances of the Type class are immutable: once they are created, they are never changed...
Definition: Type.h:45
void EmitDirectiveHSACodeObjectVersion(uint32_t Major, uint32_t Minor) override
AMDGPUTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)
void EmitAMDGPUHsaModuleScopeGlobal(StringRef GlobalName) override
virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor, uint32_t Stepping, StringRef VendorName, StringRef ArchName)=0
void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override
Enums and constants for AMDGPU PT_NOTE sections.
void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override
MCStreamer & Streamer
Definition: MCStreamer.h:75
virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header)=0
void EmitDirectiveHSACodeObjectVersion(uint32_t Major, uint32_t Minor) override
virtual void EmitDirectiveHSACodeObjectVersion(uint32_t Major, uint32_t Minor)=0
void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override
void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override
print Print MemDeps of function
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:47
Root of the metadata hierarchy.
Definition: Metadata.h:55