Deleted Added
full compact
AMDGPUTargetStreamer.h (341825) AMDGPUTargetStreamer.h (344779)
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"
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/BinaryFormat/MsgPackTypes.h"
14#include "llvm/MC/MCStreamer.h"
15#include "llvm/MC/MCSubtargetInfo.h"
16#include "llvm/Support/AMDGPUMetadata.h"
17#include "llvm/Support/AMDHSAKernelDescriptor.h"
18
19namespace llvm {
20#include "AMDGPUPTNote.h"
21

--- 4 unchanged lines hidden (view full) ---

26class MDNode;
27class Module;
28class Type;
29
30class AMDGPUTargetStreamer : public MCTargetStreamer {
31protected:
32 MCContext &getContext() const { return Streamer.getContext(); }
33
15#include "llvm/MC/MCStreamer.h"
16#include "llvm/MC/MCSubtargetInfo.h"
17#include "llvm/Support/AMDGPUMetadata.h"
18#include "llvm/Support/AMDHSAKernelDescriptor.h"
19
20namespace llvm {
21#include "AMDGPUPTNote.h"
22

--- 4 unchanged lines hidden (view full) ---

27class MDNode;
28class Module;
29class Type;
30
31class AMDGPUTargetStreamer : public MCTargetStreamer {
32protected:
33 MCContext &getContext() const { return Streamer.getContext(); }
34
34 /// \returns Equivalent EF_AMDGPU_MACH_* value for given \p GPU name.
35 unsigned getMACH(StringRef GPU) const;
36
37public:
35public:
38 /// \returns Equivalent GPU name for an EF_AMDGPU_MACH_* value.
39 static const char *getMachName(unsigned Mach);
40
41 AMDGPUTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
42
43 virtual void EmitDirectiveAMDGCNTarget(StringRef Target) = 0;
44
45 virtual void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
46 uint32_t Minor) = 0;
47
48 virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,

--- 4 unchanged lines hidden (view full) ---

53 virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
54
55 virtual void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) = 0;
56
57 /// \returns True on success, false on failure.
58 virtual bool EmitISAVersion(StringRef IsaVersionString) = 0;
59
60 /// \returns True on success, false on failure.
36 AMDGPUTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
37
38 virtual void EmitDirectiveAMDGCNTarget(StringRef Target) = 0;
39
40 virtual void EmitDirectiveHSACodeObjectVersion(uint32_t Major,
41 uint32_t Minor) = 0;
42
43 virtual void EmitDirectiveHSACodeObjectISA(uint32_t Major, uint32_t Minor,

--- 4 unchanged lines hidden (view full) ---

48 virtual void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) = 0;
49
50 virtual void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) = 0;
51
52 /// \returns True on success, false on failure.
53 virtual bool EmitISAVersion(StringRef IsaVersionString) = 0;
54
55 /// \returns True on success, false on failure.
61 virtual bool EmitHSAMetadata(StringRef HSAMetadataString);
56 virtual bool EmitHSAMetadataV2(StringRef HSAMetadataString);
62
63 /// \returns True on success, false on failure.
57
58 /// \returns True on success, false on failure.
59 virtual bool EmitHSAMetadataV3(StringRef HSAMetadataString);
60
61 /// Emit HSA Metadata
62 ///
63 /// When \p Strict is true, known metadata elements must already be
64 /// well-typed. When \p Strict is false, known types are inferred and
65 /// the \p HSAMetadata structure is updated with the correct types.
66 ///
67 /// \returns True on success, false on failure.
68 virtual bool EmitHSAMetadata(std::shared_ptr<msgpack::Node> &HSAMetadata,
69 bool Strict) = 0;
70
71 /// \returns True on success, false on failure.
64 virtual bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) = 0;
65
66 /// \returns True on success, false on failure.
67 virtual bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) = 0;
68
69 virtual void EmitAmdhsaKernelDescriptor(
70 const MCSubtargetInfo &STI, StringRef KernelName,
71 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
72 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
73 bool ReserveXNACK) = 0;
72 virtual bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) = 0;
73
74 /// \returns True on success, false on failure.
75 virtual bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) = 0;
76
77 virtual void EmitAmdhsaKernelDescriptor(
78 const MCSubtargetInfo &STI, StringRef KernelName,
79 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
80 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
81 bool ReserveXNACK) = 0;
82
83 static StringRef getArchNameFromElfMach(unsigned ElfMach);
84 static unsigned getElfMach(StringRef GPU);
74};
75
76class AMDGPUTargetAsmStreamer final : public AMDGPUTargetStreamer {
77 formatted_raw_ostream &OS;
78public:
79 AMDGPUTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
80
81 void EmitDirectiveAMDGCNTarget(StringRef Target) override;

--- 8 unchanged lines hidden (view full) ---

90 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
91
92 void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
93
94 /// \returns True on success, false on failure.
95 bool EmitISAVersion(StringRef IsaVersionString) override;
96
97 /// \returns True on success, false on failure.
85};
86
87class AMDGPUTargetAsmStreamer final : public AMDGPUTargetStreamer {
88 formatted_raw_ostream &OS;
89public:
90 AMDGPUTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
91
92 void EmitDirectiveAMDGCNTarget(StringRef Target) override;

--- 8 unchanged lines hidden (view full) ---

101 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
102
103 void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
104
105 /// \returns True on success, false on failure.
106 bool EmitISAVersion(StringRef IsaVersionString) override;
107
108 /// \returns True on success, false on failure.
109 bool EmitHSAMetadata(std::shared_ptr<msgpack::Node> &HSAMetadata,
110 bool Strict) override;
111
112 /// \returns True on success, false on failure.
98 bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) override;
99
100 /// \returns True on success, false on failure.
101 bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) override;
102
103 void EmitAmdhsaKernelDescriptor(
104 const MCSubtargetInfo &STI, StringRef KernelName,
105 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
106 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
107 bool ReserveXNACK) override;
108};
109
110class AMDGPUTargetELFStreamer final : public AMDGPUTargetStreamer {
111 MCStreamer &Streamer;
112
113 bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) override;
114
115 /// \returns True on success, false on failure.
116 bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) override;
117
118 void EmitAmdhsaKernelDescriptor(
119 const MCSubtargetInfo &STI, StringRef KernelName,
120 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
121 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
122 bool ReserveXNACK) override;
123};
124
125class AMDGPUTargetELFStreamer final : public AMDGPUTargetStreamer {
126 MCStreamer &Streamer;
127
113 void EmitAMDGPUNote(const MCExpr *DescSize, unsigned NoteType,
114 function_ref<void(MCELFStreamer &)> EmitDesc);
128 void EmitNote(StringRef Name, const MCExpr *DescSize, unsigned NoteType,
129 function_ref EmitDesc);
115
116public:
117 AMDGPUTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI);
118
119 MCELFStreamer &getStreamer();
120
121 void EmitDirectiveAMDGCNTarget(StringRef Target) override;
122

--- 7 unchanged lines hidden (view full) ---

130 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
131
132 void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
133
134 /// \returns True on success, false on failure.
135 bool EmitISAVersion(StringRef IsaVersionString) override;
136
137 /// \returns True on success, false on failure.
130
131public:
132 AMDGPUTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI);
133
134 MCELFStreamer &getStreamer();
135
136 void EmitDirectiveAMDGCNTarget(StringRef Target) override;
137

--- 7 unchanged lines hidden (view full) ---

145 void EmitAMDKernelCodeT(const amd_kernel_code_t &Header) override;
146
147 void EmitAMDGPUSymbolType(StringRef SymbolName, unsigned Type) override;
148
149 /// \returns True on success, false on failure.
150 bool EmitISAVersion(StringRef IsaVersionString) override;
151
152 /// \returns True on success, false on failure.
153 bool EmitHSAMetadata(std::shared_ptr<msgpack::Node> &HSAMetadata,
154 bool Strict) override;
155
156 /// \returns True on success, false on failure.
138 bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) override;
139
140 /// \returns True on success, false on failure.
141 bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) override;
142
143 void EmitAmdhsaKernelDescriptor(
144 const MCSubtargetInfo &STI, StringRef KernelName,
145 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
146 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
147 bool ReserveXNACK) override;
148};
149
150}
151#endif
157 bool EmitHSAMetadata(const AMDGPU::HSAMD::Metadata &HSAMetadata) override;
158
159 /// \returns True on success, false on failure.
160 bool EmitPALMetadata(const AMDGPU::PALMD::Metadata &PALMetadata) override;
161
162 void EmitAmdhsaKernelDescriptor(
163 const MCSubtargetInfo &STI, StringRef KernelName,
164 const amdhsa::kernel_descriptor_t &KernelDescriptor, uint64_t NextVGPR,
165 uint64_t NextSGPR, bool ReserveVCC, bool ReserveFlatScr,
166 bool ReserveXNACK) override;
167};
168
169}
170#endif