diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/MCTargetDesc')
5 files changed, 17 insertions, 137 deletions
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadata.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadata.h index 78c8754117f..bb03eff4344 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadata.h +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadata.h @@ -99,67 +99,6 @@ enum class ValueType : uint8_t { }; //===----------------------------------------------------------------------===// -// Instruction Set Architecture Metadata (ISA). -//===----------------------------------------------------------------------===// -namespace Isa { - -namespace Key { -/// \brief Key for Isa::Metadata::mWavefrontSize. -constexpr char WavefrontSize[] = "WavefrontSize"; -/// \brief Key for Isa::Metadata::mLocalMemorySize. -constexpr char LocalMemorySize[] = "LocalMemorySize"; -/// \brief Key for Isa::Metadata::mEUsPerCU. -constexpr char EUsPerCU[] = "EUsPerCU"; -/// \brief Key for Isa::Metadata::mMaxWavesPerEU. -constexpr char MaxWavesPerEU[] = "MaxWavesPerEU"; -/// \brief Key for Isa::Metadata::mMaxFlatWorkGroupSize. -constexpr char MaxFlatWorkGroupSize[] = "MaxFlatWorkGroupSize"; -/// \brief Key for Isa::Metadata::mSGPRAllocGranule. -constexpr char SGPRAllocGranule[] = "SGPRAllocGranule"; -/// \brief Key for Isa::Metadata::mTotalNumSGPRs. -constexpr char TotalNumSGPRs[] = "TotalNumSGPRs"; -/// \brief Key for Isa::Metadata::mAddressableNumSGPRs. -constexpr char AddressableNumSGPRs[] = "AddressableNumSGPRs"; -/// \brief Key for Isa::Metadata::mVGPRAllocGranule. -constexpr char VGPRAllocGranule[] = "VGPRAllocGranule"; -/// \brief Key for Isa::Metadata::mTotalNumVGPRs. -constexpr char TotalNumVGPRs[] = "TotalNumVGPRs"; -/// \brief Key for Isa::Metadata::mAddressableNumVGPRs. -constexpr char AddressableNumVGPRs[] = "AddressableNumVGPRs"; -} // end namespace Key - -/// \brief In-memory representation of instruction set architecture metadata. -struct Metadata final { - /// \brief Wavefront size. Required. - uint32_t mWavefrontSize = 0; - /// \brief Local memory size in bytes. Required. - uint32_t mLocalMemorySize = 0; - /// \brief Number of execution units per compute unit. Required. - uint32_t mEUsPerCU = 0; - /// \brief Maximum number of waves per execution unit. Required. - uint32_t mMaxWavesPerEU = 0; - /// \brief Maximum flat work group size. Required. - uint32_t mMaxFlatWorkGroupSize = 0; - /// \brief SGPR allocation granularity. Required. - uint32_t mSGPRAllocGranule = 0; - /// \brief Total number of SGPRs. Required. - uint32_t mTotalNumSGPRs = 0; - /// \brief Addressable number of SGPRs. Required. - uint32_t mAddressableNumSGPRs = 0; - /// \brief VGPR allocation granularity. Required. - uint32_t mVGPRAllocGranule = 0; - /// \brief Total number of VGPRs. Required. - uint32_t mTotalNumVGPRs = 0; - /// \brief Addressable number of VGPRs. Required. - uint32_t mAddressableNumVGPRs = 0; - - /// \brief Default constructor. - Metadata() = default; -}; - -} // end namespace Isa - -//===----------------------------------------------------------------------===// // Kernel Metadata. //===----------------------------------------------------------------------===// namespace Kernel { @@ -449,8 +388,6 @@ struct Metadata final { namespace Key { /// \brief Key for CodeObject::Metadata::mVersion. constexpr char Version[] = "Version"; -/// \brief Key for CodeObject::Metadata::mIsa. -constexpr char Isa[] = "Isa"; /// \brief Key for CodeObject::Metadata::mPrintf. constexpr char Printf[] = "Printf"; /// \brief Key for CodeObject::Metadata::mKernels. @@ -461,8 +398,6 @@ constexpr char Kernels[] = "Kernels"; struct Metadata final { /// \brief Code object metadata version. Required. std::vector<uint32_t> mVersion = std::vector<uint32_t>(); - /// \brief Instruction set architecture metadata. Optional. - Isa::Metadata mIsa = Isa::Metadata(); /// \brief Printf metadata. Optional. std::vector<std::string> mPrintf = std::vector<std::string>(); /// \brief Kernels metadata. Optional. diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp index 29f36028328..2c71d706dd4 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp @@ -15,7 +15,6 @@ #include "AMDGPU.h" #include "AMDGPUCodeObjectMetadataStreamer.h" -#include "Utils/AMDGPUBaseInfo.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Module.h" @@ -23,7 +22,6 @@ using namespace llvm::AMDGPU; using namespace llvm::AMDGPU::CodeObject; -using namespace llvm::AMDGPU::IsaInfo; LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(uint32_t) LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(std::string) @@ -103,23 +101,6 @@ struct ScalarEnumerationTraits<ValueType> { }; template <> -struct MappingTraits<Isa::Metadata> { - static void mapping(IO &YIO, Isa::Metadata &MD) { - YIO.mapRequired(Isa::Key::WavefrontSize, MD.mWavefrontSize); - YIO.mapRequired(Isa::Key::LocalMemorySize, MD.mLocalMemorySize); - YIO.mapRequired(Isa::Key::EUsPerCU, MD.mEUsPerCU); - YIO.mapRequired(Isa::Key::MaxWavesPerEU, MD.mMaxWavesPerEU); - YIO.mapRequired(Isa::Key::MaxFlatWorkGroupSize, MD.mMaxFlatWorkGroupSize); - YIO.mapRequired(Isa::Key::SGPRAllocGranule, MD.mSGPRAllocGranule); - YIO.mapRequired(Isa::Key::TotalNumSGPRs, MD.mTotalNumSGPRs); - YIO.mapRequired(Isa::Key::AddressableNumSGPRs, MD.mAddressableNumSGPRs); - YIO.mapRequired(Isa::Key::VGPRAllocGranule, MD.mVGPRAllocGranule); - YIO.mapRequired(Isa::Key::TotalNumVGPRs, MD.mTotalNumVGPRs); - YIO.mapRequired(Isa::Key::AddressableNumVGPRs, MD.mAddressableNumVGPRs); - } -}; - -template <> struct MappingTraits<Kernel::Attrs::Metadata> { static void mapping(IO &YIO, Kernel::Attrs::Metadata &MD) { YIO.mapOptional(Kernel::Attrs::Key::ReqdWorkGroupSize, @@ -215,7 +196,6 @@ template <> struct MappingTraits<CodeObject::Metadata> { static void mapping(IO &YIO, CodeObject::Metadata &MD) { YIO.mapRequired(Key::Version, MD.mVersion); - YIO.mapOptional(Key::Isa, MD.mIsa); YIO.mapOptional(Key::Printf, MD.mPrintf, std::vector<std::string>()); if (!MD.mKernels.empty() || !YIO.outputting()) YIO.mapOptional(Key::Kernels, MD.mKernels); @@ -417,22 +397,6 @@ void MetadataStreamer::emitVersion() { Version.push_back(MetadataVersionMinor); } -void MetadataStreamer::emitIsa(const FeatureBitset &Features) { - auto &Isa = CodeObjectMetadata.mIsa; - - Isa.mWavefrontSize = getWavefrontSize(Features); - Isa.mLocalMemorySize = getLocalMemorySize(Features); - Isa.mEUsPerCU = getEUsPerCU(Features); - Isa.mMaxWavesPerEU = getMaxWavesPerEU(Features); - Isa.mMaxFlatWorkGroupSize = getMaxFlatWorkGroupSize(Features); - Isa.mSGPRAllocGranule = getSGPRAllocGranule(Features); - Isa.mTotalNumSGPRs = getTotalNumSGPRs(Features); - Isa.mAddressableNumSGPRs = getAddressableNumSGPRs(Features); - Isa.mVGPRAllocGranule = getVGPRAllocGranule(Features); - Isa.mTotalNumVGPRs = getTotalNumVGPRs(Features); - Isa.mAddressableNumVGPRs = getAddressableNumVGPRs(Features); -} - void MetadataStreamer::emitPrintf(const Module &Mod) { auto &Printf = CodeObjectMetadata.mPrintf; @@ -611,9 +575,8 @@ void MetadataStreamer::emitKernelDebugProps( KernelCode.debug_wavefront_private_segment_offset_sgpr; } -void MetadataStreamer::begin(const FeatureBitset &Features, const Module &Mod) { +void MetadataStreamer::begin(const Module &Mod) { emitVersion(); - emitIsa(Features); emitPrintf(Mod); } @@ -646,12 +609,10 @@ ErrorOr<std::string> MetadataStreamer::toYamlString() { return YamlString; } -ErrorOr<std::string> MetadataStreamer::toYamlString( - const FeatureBitset &Features, StringRef YamlString) { +ErrorOr<std::string> MetadataStreamer::toYamlString(StringRef YamlString) { if (auto Error = Metadata::fromYamlString(YamlString, CodeObjectMetadata)) return Error; - emitIsa(Features); return toYamlString(); } diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.h index 4d86d0184f1..12d4c5e5dd5 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.h +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.h @@ -25,7 +25,6 @@ namespace llvm { class Argument; class DataLayout; -class FeatureBitset; class Function; class MDNode; class Module; @@ -57,8 +56,6 @@ private: void emitVersion(); - void emitIsa(const FeatureBitset &Features); - void emitPrintf(const Module &Mod); void emitKernelLanguage(const Function &Func); @@ -82,7 +79,7 @@ public: MetadataStreamer() = default; ~MetadataStreamer() = default; - void begin(const FeatureBitset &Features, const Module &Mod); + void begin(const Module &Mod); void end() {} @@ -90,8 +87,7 @@ public: ErrorOr<std::string> toYamlString(); - ErrorOr<std::string> toYamlString(const FeatureBitset &Features, - StringRef YamlString); + ErrorOr<std::string> toYamlString(StringRef YamlString); }; } // end namespace CodeObject diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp index 100f1ba84b9..8dc863f723e 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -42,9 +42,8 @@ using namespace llvm::AMDGPU; AMDGPUTargetStreamer::AMDGPUTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {} -void AMDGPUTargetStreamer::EmitStartOfCodeObjectMetadata( - const FeatureBitset &Features, const Module &Mod) { - CodeObjectMetadataStreamer.begin(Features, Mod); +void AMDGPUTargetStreamer::EmitStartOfCodeObjectMetadata(const Module &Mod) { + CodeObjectMetadataStreamer.begin(Mod); } void AMDGPUTargetStreamer::EmitKernelCodeObjectMetadata( @@ -52,11 +51,9 @@ void AMDGPUTargetStreamer::EmitKernelCodeObjectMetadata( CodeObjectMetadataStreamer.emitKernel(Func, KernelCode); } -void AMDGPUTargetStreamer::EmitEndOfCodeObjectMetadata( - const FeatureBitset &Features) { +void AMDGPUTargetStreamer::EmitEndOfCodeObjectMetadata() { CodeObjectMetadataStreamer.end(); - EmitCodeObjectMetadata(Features, - CodeObjectMetadataStreamer.toYamlString().get()); + EmitCodeObjectMetadata(CodeObjectMetadataStreamer.toYamlString().get()); } //===----------------------------------------------------------------------===// @@ -113,10 +110,8 @@ void AMDGPUTargetAsmStreamer::EmitAMDGPUHsaProgramScopeGlobal( OS << "\t.amdgpu_hsa_program_global " << GlobalName << '\n'; } -bool AMDGPUTargetAsmStreamer::EmitCodeObjectMetadata( - const FeatureBitset &Features, StringRef YamlString) { - auto VerifiedYamlString = - CodeObjectMetadataStreamer.toYamlString(Features, YamlString); +bool AMDGPUTargetAsmStreamer::EmitCodeObjectMetadata(StringRef YamlString) { + auto VerifiedYamlString = CodeObjectMetadataStreamer.toYamlString(YamlString); if (!VerifiedYamlString) return false; @@ -237,10 +232,8 @@ void AMDGPUTargetELFStreamer::EmitAMDGPUHsaProgramScopeGlobal( Symbol->setBinding(ELF::STB_GLOBAL); } -bool AMDGPUTargetELFStreamer::EmitCodeObjectMetadata( - const FeatureBitset &Features, StringRef YamlString) { - auto VerifiedYamlString = - CodeObjectMetadataStreamer.toYamlString(Features, YamlString); +bool AMDGPUTargetELFStreamer::EmitCodeObjectMetadata(StringRef YamlString) { + auto VerifiedYamlString = CodeObjectMetadataStreamer.toYamlString(YamlString); if (!VerifiedYamlString) return false; diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h index 0d0fcbfb230..5c588bbded9 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h @@ -18,7 +18,6 @@ namespace llvm { #include "AMDGPUPTNote.h" class DataLayout; -class FeatureBitset; class Function; class MCELFStreamer; class MCSymbol; @@ -49,17 +48,15 @@ public: virtual void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) = 0; - virtual void EmitStartOfCodeObjectMetadata(const FeatureBitset &Features, - const Module &Mod); + virtual void EmitStartOfCodeObjectMetadata(const Module &Mod); virtual void EmitKernelCodeObjectMetadata( const Function &Func, const amd_kernel_code_t &KernelCode); - virtual void EmitEndOfCodeObjectMetadata(const FeatureBitset &Features); + virtual void EmitEndOfCodeObjectMetadata(); /// \returns True on success, false on failure. - virtual bool EmitCodeObjectMetadata(const FeatureBitset &Features, - StringRef YamlString) = 0; + virtual bool EmitCodeObjectMetadata(StringRef YamlString) = 0; }; class AMDGPUTargetAsmStreamer final : public AMDGPUTargetStreamer { @@ -82,8 +79,7 @@ public: void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override; /// \returns True on success, false on failure. - bool EmitCodeObjectMetadata(const FeatureBitset &Features, - StringRef YamlString) override; + bool EmitCodeObjectMetadata(StringRef YamlString) override; }; class AMDGPUTargetELFStreamer final : public AMDGPUTargetStreamer { @@ -114,8 +110,7 @@ public: void EmitAMDGPUHsaProgramScopeGlobal(StringRef GlobalName) override; /// \returns True on success, false on failure. - bool EmitCodeObjectMetadata(const FeatureBitset &Features, - StringRef YamlString) override; + bool EmitCodeObjectMetadata(StringRef YamlString) override; }; } |