1//===--- AMDGPUMetadata.cpp -------------------------------------*- C++ -*-===// 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 7//===----------------------------------------------------------------------===// 10/// AMDGPU metadata definitions and in-memory representations. 13//===----------------------------------------------------------------------===// 31 YIO.enumCase(EN,
"Default", AccessQualifier::Default);
32 YIO.enumCase(EN,
"ReadOnly", AccessQualifier::ReadOnly);
33 YIO.enumCase(EN,
"WriteOnly", AccessQualifier::WriteOnly);
34 YIO.enumCase(EN,
"ReadWrite", AccessQualifier::ReadWrite);
41 YIO.enumCase(EN,
"Private", AddressSpaceQualifier::Private);
42 YIO.enumCase(EN,
"Global", AddressSpaceQualifier::Global);
43 YIO.enumCase(EN,
"Constant", AddressSpaceQualifier::Constant);
44 YIO.enumCase(EN,
"Local", AddressSpaceQualifier::Local);
45 YIO.enumCase(EN,
"Generic", AddressSpaceQualifier::Generic);
46 YIO.enumCase(EN,
"Region", AddressSpaceQualifier::Region);
53 YIO.enumCase(EN,
"ByValue", ValueKind::ByValue);
54 YIO.enumCase(EN,
"GlobalBuffer", ValueKind::GlobalBuffer);
55 YIO.enumCase(EN,
"DynamicSharedPointer", ValueKind::DynamicSharedPointer);
56 YIO.enumCase(EN,
"Sampler", ValueKind::Sampler);
57 YIO.enumCase(EN,
"Image", ValueKind::Image);
58 YIO.enumCase(EN,
"Pipe", ValueKind::Pipe);
59 YIO.enumCase(EN,
"Queue", ValueKind::Queue);
60 YIO.enumCase(EN,
"HiddenGlobalOffsetX", ValueKind::HiddenGlobalOffsetX);
61 YIO.enumCase(EN,
"HiddenGlobalOffsetY", ValueKind::HiddenGlobalOffsetY);
62 YIO.enumCase(EN,
"HiddenGlobalOffsetZ", ValueKind::HiddenGlobalOffsetZ);
63 YIO.enumCase(EN,
"HiddenNone", ValueKind::HiddenNone);
64 YIO.enumCase(EN,
"HiddenPrintfBuffer", ValueKind::HiddenPrintfBuffer);
65 YIO.enumCase(EN,
"HiddenHostcallBuffer", ValueKind::HiddenHostcallBuffer);
66 YIO.enumCase(EN,
"HiddenDefaultQueue", ValueKind::HiddenDefaultQueue);
67 YIO.enumCase(EN,
"HiddenCompletionAction",
68 ValueKind::HiddenCompletionAction);
69 YIO.enumCase(EN,
"HiddenMultiGridSyncArg",
70 ValueKind::HiddenMultiGridSyncArg);
77 YIO.enumCase(EN,
"Struct", ValueType::Struct);
78 YIO.enumCase(EN,
"I8", ValueType::I8);
79 YIO.enumCase(EN,
"U8", ValueType::U8);
80 YIO.enumCase(EN,
"I16", ValueType::I16);
81 YIO.enumCase(EN,
"U16", ValueType::U16);
82 YIO.enumCase(EN,
"F16", ValueType::F16);
83 YIO.enumCase(EN,
"I32", ValueType::I32);
84 YIO.enumCase(EN,
"U32", ValueType::U32);
85 YIO.enumCase(EN,
"F32", ValueType::F32);
86 YIO.enumCase(EN,
"I64", ValueType::I64);
87 YIO.enumCase(EN,
"U64", ValueType::U64);
88 YIO.enumCase(EN,
"F64", ValueType::F64);
115// Removed. Accepted for parsing compatibility, but not emitted. 116 std::optional<ValueType> Unused;
122 AddressSpaceQualifier::Unknown);
124 AccessQualifier::Unknown);
126 AccessQualifier::Unknown);
187 std::vector<uint32_t>());
190if (!MD.
mArgs.empty() || !YIO.outputting())
204if (!MD.
mKernels.empty() || !YIO.outputting())
209}
// end namespace yaml 215 yaml::Input YamlInput(
String);
216 YamlInput >> HSAMetadata;
217return YamlInput.error();
222 yaml::Output YamlOutput(YamlStream,
nullptr, std::numeric_limits<int>::max());
223 YamlOutput << HSAMetadata;
224return std::error_code();
227}
// end namespace HSAMD 228}
// end namespace AMDGPU 229}
// end namespace llvm AMDGPU metadata definitions and in-memory representations.
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Root of the metadata hierarchy.
StringRef - Represent a constant reference to a string, i.e.
A raw_ostream that writes to an std::string.
constexpr char AddrSpaceQual[]
Key for Kernel::Arg::Metadata::mAddrSpaceQual.
constexpr char ValueType[]
Key for Kernel::Arg::Metadata::mValueType. (deprecated)
constexpr char IsVolatile[]
Key for Kernel::Arg::Metadata::mIsVolatile.
constexpr char PointeeAlign[]
Key for Kernel::Arg::Metadata::mPointeeAlign.
constexpr char Size[]
Key for Kernel::Arg::Metadata::mSize.
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
constexpr char TypeName[]
Key for Kernel::Arg::Metadata::mTypeName.
constexpr char ValueKind[]
Key for Kernel::Arg::Metadata::mValueKind.
constexpr char IsConst[]
Key for Kernel::Arg::Metadata::mIsConst.
constexpr char IsRestrict[]
Key for Kernel::Arg::Metadata::mIsRestrict.
constexpr char ActualAccQual[]
Key for Kernel::Arg::Metadata::mActualAccQual.
constexpr char AccQual[]
Key for Kernel::Arg::Metadata::mAccQual.
constexpr char IsPipe[]
Key for Kernel::Arg::Metadata::mIsPipe.
constexpr char Name[]
Key for Kernel::Arg::Metadata::mName.
constexpr char ReqdWorkGroupSize[]
Key for Kernel::Attr::Metadata::mReqdWorkGroupSize.
constexpr char VecTypeHint[]
Key for Kernel::Attr::Metadata::mVecTypeHint.
constexpr char RuntimeHandle[]
Key for Kernel::Attr::Metadata::mRuntimeHandle.
constexpr char WorkGroupSizeHint[]
Key for Kernel::Attr::Metadata::mWorkGroupSizeHint.
constexpr char NumVGPRs[]
Key for Kernel::CodeProps::Metadata::mNumVGPRs.
constexpr char NumSpilledSGPRs[]
Key for Kernel::CodeProps::Metadata::mNumSpilledSGPRs.
constexpr char IsXNACKEnabled[]
Key for Kernel::CodeProps::Metadata::mIsXNACKEnabled.
constexpr char NumSpilledVGPRs[]
Key for Kernel::CodeProps::Metadata::mNumSpilledVGPRs.
constexpr char KernargSegmentAlign[]
Key for Kernel::CodeProps::Metadata::mKernargSegmentAlign.
constexpr char IsDynamicCallStack[]
Key for Kernel::CodeProps::Metadata::mIsDynamicCallStack.
constexpr char NumSGPRs[]
Key for Kernel::CodeProps::Metadata::mNumSGPRs.
constexpr char KernargSegmentSize[]
Key for Kernel::CodeProps::Metadata::mKernargSegmentSize.
constexpr char WavefrontSize[]
Key for Kernel::CodeProps::Metadata::mWavefrontSize.
constexpr char MaxFlatWorkGroupSize[]
Key for Kernel::CodeProps::Metadata::mMaxFlatWorkGroupSize.
constexpr char GroupSegmentFixedSize[]
Key for Kernel::CodeProps::Metadata::mGroupSegmentFixedSize.
constexpr char PrivateSegmentFixedSize[]
Key for Kernel::CodeProps::Metadata::mPrivateSegmentFixedSize.
constexpr char ReservedFirstVGPR[]
Key for Kernel::DebugProps::Metadata::mReservedFirstVGPR.
constexpr char ReservedNumVGPRs[]
Key for Kernel::DebugProps::Metadata::mReservedNumVGPRs.
constexpr char DebuggerABIVersion[]
Key for Kernel::DebugProps::Metadata::mDebuggerABIVersion.
constexpr char PrivateSegmentBufferSGPR[]
Key for Kernel::DebugProps::Metadata::mPrivateSegmentBufferSGPR.
constexpr char WavefrontPrivateSegmentOffsetSGPR[]
Key for Kernel::DebugProps::Metadata::mWavefrontPrivateSegmentOffsetSGPR.
constexpr char Args[]
Key for Kernel::Metadata::mArgs.
constexpr char CodeProps[]
Key for Kernel::Metadata::mCodeProps.
constexpr char Name[]
Key for Kernel::Metadata::mName.
constexpr char Language[]
Key for Kernel::Metadata::mLanguage.
constexpr char Attrs[]
Key for Kernel::Metadata::mAttrs.
constexpr char LanguageVersion[]
Key for Kernel::Metadata::mLanguageVersion.
constexpr char DebugProps[]
Key for Kernel::Metadata::mDebugProps.
constexpr char SymbolName[]
Key for Kernel::Metadata::mSymbolName.
constexpr char Version[]
Key for HSA::Metadata::mVersion.
constexpr char Printf[]
Key for HSA::Metadata::mPrintf.
constexpr char Kernels[]
Key for HSA::Metadata::mKernels.
std::error_code fromString(StringRef String, Metadata &HSAMetadata)
Converts String to HSAMetadata.
AddressSpaceQualifier
Address space qualifiers.
std::error_code toString(Metadata HSAMetadata, std::string &String)
Converts HSAMetadata to String.
AccessQualifier
Access qualifiers.
This is an optimization pass for GlobalISel generic memory operations.
In-memory representation of kernel argument metadata.
AccessQualifier mActualAccQual
Actual access qualifier. Optional.
uint32_t mAlign
Alignment in bytes. Required.
std::string mName
Name. Optional.
uint32_t mPointeeAlign
Pointee alignment in bytes. Optional.
bool mIsVolatile
True if 'volatile' qualifier is specified. Optional.
ValueKind mValueKind
Value kind. Required.
bool mIsConst
True if 'const' qualifier is specified. Optional.
bool mIsRestrict
True if 'restrict' qualifier is specified. Optional.
bool mIsPipe
True if 'pipe' qualifier is specified. Optional.
AddressSpaceQualifier mAddrSpaceQual
Address space qualifier. Optional.
uint32_t mSize
Size in bytes. Required.
AccessQualifier mAccQual
Access qualifier. Optional.
std::string mTypeName
Type name. Optional.
In-memory representation of kernel attributes metadata.
std::string mRuntimeHandle
External symbol created by runtime to store the kernel address for enqueued blocks.
std::string mVecTypeHint
'vec_type_hint' attribute. Optional.
std::vector< uint32_t > mReqdWorkGroupSize
'reqd_work_group_size' attribute. Optional.
std::vector< uint32_t > mWorkGroupSizeHint
'work_group_size_hint' attribute. Optional.
In-memory representation of kernel code properties metadata.
uint16_t mNumSGPRs
Total number of SGPRs used by a wavefront. Optional.
uint64_t mKernargSegmentSize
Size in bytes of the kernarg segment memory.
uint32_t mGroupSegmentFixedSize
Size in bytes of the group segment memory required by a workgroup.
uint32_t mKernargSegmentAlign
Maximum byte alignment of variables used by the kernel in the kernarg memory segment.
uint16_t mNumSpilledSGPRs
Number of SGPRs spilled by a wavefront. Optional.
bool mIsXNACKEnabled
True if the generated machine code is capable of supporting XNACK.
uint32_t mWavefrontSize
Wavefront size. Required.
uint16_t mNumSpilledVGPRs
Number of VGPRs spilled by a workitem. Optional.
uint16_t mNumVGPRs
Total number of VGPRs used by a workitem. Optional.
bool mIsDynamicCallStack
True if the generated machine code is using a dynamically sized call stack.
uint32_t mPrivateSegmentFixedSize
Size in bytes of the private segment memory required by a workitem.
uint32_t mMaxFlatWorkGroupSize
Maximum flat work-group size supported by the kernel. Optional.
In-memory representation of kernel debug properties metadata.
uint16_t mPrivateSegmentBufferSGPR
Fixed SGPR of the first of 4 SGPRs used to hold the scratch V# used for the entire kernel execution.
uint16_t mReservedFirstVGPR
First fixed VGPR reserved.
std::vector< uint32_t > mDebuggerABIVersion
Debugger ABI version. Optional.
uint16_t mWavefrontPrivateSegmentOffsetSGPR
Fixed SGPR used to hold the wave scratch offset for the entire kernel execution.
uint16_t mReservedNumVGPRs
Consecutive number of VGPRs reserved for debugger use.
In-memory representation of kernel metadata.
DebugProps::Metadata mDebugProps
Debug properties metadata. Optional.
Attrs::Metadata mAttrs
Attributes metadata. Optional.
std::string mLanguage
Language. Optional.
std::string mName
Kernel source name. Required.
std::vector< Arg::Metadata > mArgs
Arguments metadata. Optional.
CodeProps::Metadata mCodeProps
Code properties metadata. Optional.
std::vector< uint32_t > mLanguageVersion
Language version. Optional.
std::string mSymbolName
Kernel descriptor name. Required.
In-memory representation of HSA metadata.
std::vector< Kernel::Metadata > mKernels
Kernels metadata. Required.
std::vector< uint32_t > mVersion
HSA metadata version. Required.
std::vector< std::string > mPrintf
Printf metadata. Optional.
static void mapping(IO &YIO, HSAMD::Metadata &MD)
static void mapping(IO &YIO, Kernel::Arg::Metadata &MD)
static void mapping(IO &YIO, Kernel::Attrs::Metadata &MD)
static void mapping(IO &YIO, Kernel::CodeProps::Metadata &MD)
static void mapping(IO &YIO, Kernel::DebugProps::Metadata &MD)
static void mapping(IO &YIO, Kernel::Metadata &MD)
static void enumeration(IO &YIO, AccessQualifier &EN)
static void enumeration(IO &YIO, AddressSpaceQualifier &EN)
static void enumeration(IO &YIO, ValueKind &EN)
static void enumeration(IO &YIO, ValueType &EN)