summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/MCTargetDesc
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/AMDGPU/MCTargetDesc')
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadata.h65
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.cpp43
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUCodeObjectMetadataStreamer.h8
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp23
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h15
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;
};
}
OpenPOWER on IntegriCloud