32 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPURUNTIMEMETADATA_H 33 #define LLVM_LIB_TARGET_AMDGPU_AMDGPURUNTIMEMETADATA_H 43 const unsigned char MDVersion = 2;
44 const unsigned char MDRevision = 1;
50 const char MDVersion[] =
"amd.MDVersion";
53 const char IsaInfo[] =
"amd.IsaInfo";
55 const char IsaInfoWavefrontSize[] =
"amd.IsaInfoWavefrontSize";
57 const char IsaInfoLocalMemorySize[] =
"amd.IsaInfoLocalMemorySize";
59 const char IsaInfoEUsPerCU[] =
"amd.IsaInfoEUsPerCU";
61 const char IsaInfoMaxWavesPerEU[] =
"amd.IsaInfoMaxWavesPerEU";
63 const char IsaInfoMaxFlatWorkGroupSize[] =
"amd.IsaInfoMaxFlatWorkGroupSize";
65 const char IsaInfoSGPRAllocGranule[] =
"amd.IsaInfoSGPRAllocGranule";
67 const char IsaInfoTotalNumSGPRs[] =
"amd.IsaInfoTotalNumSGPRs";
69 const char IsaInfoAddressableNumSGPRs[] =
"amd.IsaInfoAddressableNumSGPRs";
71 const char IsaInfoVGPRAllocGranule[] =
"amd.IsaInfoVGPRAllocGranule";
73 const char IsaInfoTotalNumVGPRs[] =
"amd.IsaInfoTotalNumVGPRs";
75 const char IsaInfoAddressableNumVGPRs[] =
"amd.IsaInfoAddressableNumVGPRs";
78 const char Language[] =
"amd.Language";
80 const char LanguageVersion[] =
"amd.LanguageVersion";
83 const char Kernels[] =
"amd.Kernels";
85 const char KernelName[] =
"amd.KernelName";
87 const char Args[] =
"amd.Args";
89 const char ArgSize[] =
"amd.ArgSize";
91 const char ArgAlign[] =
"amd.ArgAlign";
93 const char ArgTypeName[] =
"amd.ArgTypeName";
95 const char ArgName[] =
"amd.ArgName";
97 const char ArgKind[] =
"amd.ArgKind";
99 const char ArgValueType[] =
"amd.ArgValueType";
101 const char ArgAddrQual[] =
"amd.ArgAddrQual";
103 const char ArgAccQual[] =
"amd.ArgAccQual";
105 const char ArgIsConst[] =
"amd.ArgIsConst";
107 const char ArgIsRestrict[] =
"amd.ArgIsRestrict";
109 const char ArgIsVolatile[] =
"amd.ArgIsVolatile";
111 const char ArgIsPipe[] =
"amd.ArgIsPipe";
113 const char ReqdWorkGroupSize[] =
"amd.ReqdWorkGroupSize";
115 const char WorkGroupSizeHint[] =
"amd.WorkGroupSizeHint";
117 const char VecTypeHint[] =
"amd.VecTypeHint";
119 const char KernelIndex[] =
"amd.KernelIndex";
121 const char NoPartialWorkGroups[] =
"amd.NoPartialWorkGroups";
123 const char PrintfInfo[] =
"amd.PrintfInfo";
125 const char ArgActualAcc[] =
"amd.ArgActualAcc";
127 const char ArgPointeeAlign[] =
"amd.ArgPointeeAlign";
131 namespace KernelArg {
133 enum Kind : uint8_t {
136 DynamicSharedPointer = 2,
141 HiddenGlobalOffsetX = 7,
142 HiddenGlobalOffsetY = 8,
143 HiddenGlobalOffsetZ = 9,
145 HiddenPrintfBuffer = 11,
146 HiddenDefaultQueue = 12,
147 HiddenCompletionAction = 13,
150 enum ValueType : uint16_t {
166 enum AccessQualifer : uint8_t {
173 enum AddressSpaceQualifer : uint8_t {
185 const uint8_t INVALID_ADDR_QUAL = 0xff;
186 const uint8_t INVALID_ACC_QUAL = 0xff;
187 const uint32_t INVALID_KERNEL_INDEX = ~0U;
189 namespace KernelArg {
195 uint32_t PointeeAlign = 0;
197 uint16_t ValueType = 0;
198 std::string TypeName;
200 uint8_t AddrQual = INVALID_ADDR_QUAL;
201 uint8_t AccQual = INVALID_ACC_QUAL;
202 uint8_t IsVolatile = 0;
204 uint8_t IsRestrict = 0;
217 std::string Language;
218 std::vector<uint8_t> LanguageVersion;
219 std::vector<uint32_t> ReqdWorkGroupSize;
220 std::vector<uint32_t> WorkGroupSizeHint;
221 std::string VecTypeHint;
222 uint32_t KernelIndex = INVALID_KERNEL_INDEX;
223 uint8_t NoPartialWorkGroups = 0;
224 std::vector<KernelArg::Metadata> Args;
237 unsigned WavefrontSize = 0;
239 unsigned LocalMemorySize = 0;
241 unsigned EUsPerCU = 0;
243 unsigned MaxWavesPerEU = 0;
245 unsigned MaxFlatWorkGroupSize = 0;
247 unsigned SGPRAllocGranule = 0;
249 unsigned TotalNumSGPRs = 0;
251 unsigned AddressableNumSGPRs = 0;
253 unsigned VGPRAllocGranule = 0;
255 unsigned TotalNumVGPRs = 0;
257 unsigned AddressableNumVGPRs = 0;
268 std::vector<uint8_t> MDVersionSeq;
270 std::vector<std::string> PrintfInfo;
271 std::vector<Kernel::Metadata> Kernels;
276 explicit Metadata(
const std::string &YAML);
279 std::string toYAML();
282 static Metadata fromYAML(
const std::string &S);
290 #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPURUNTIMEMETADATA_H
Definition: AMDGPUPTNote.h:20