summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/TargetParser.cpp
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2018-09-12 07:05:30 +0000
committerIlya Biryukov <ibiryukov@google.com>2018-09-12 07:05:30 +0000
commit95066496d08011c70b1dd6208deb17511f3000d0 (patch)
tree71a56db87cad62cdac1878a77e4b76fee9031528 /llvm/lib/Support/TargetParser.cpp
parent26a37998588f673ef1e3fc4a126f2a0963dad6bb (diff)
downloadbcm5719-llvm-95066496d08011c70b1dd6208deb17511f3000d0.tar.gz
bcm5719-llvm-95066496d08011c70b1dd6208deb17511f3000d0.zip
Revert "AMDGPU: Move isa version and EF_AMDGPU_MACH_* determination into TargetParser."
This reverts commit r341982. The change introduced a layering violation. Reverting to unbreak our integrate. llvm-svn: 342023
Diffstat (limited to 'llvm/lib/Support/TargetParser.cpp')
-rw-r--r--llvm/lib/Support/TargetParser.cpp138
1 files changed, 10 insertions, 128 deletions
diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp
index f73eb290752..1f580378c01 100644
--- a/llvm/lib/Support/TargetParser.cpp
+++ b/llvm/lib/Support/TargetParser.cpp
@@ -17,13 +17,11 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
-#include "llvm/BinaryFormat/ELF.h"
#include <cctype>
using namespace llvm;
using namespace ARM;
using namespace AArch64;
-using namespace AMDGPU;
namespace {
@@ -949,8 +947,6 @@ bool llvm::AArch64::isX18ReservedByDefault(const Triple &TT) {
TT.isOSWindows();
}
-namespace {
-
struct GPUInfo {
StringLiteral Name;
StringLiteral CanonicalName;
@@ -958,9 +954,11 @@ struct GPUInfo {
unsigned Features;
};
-constexpr GPUInfo R600GPUs[26] = {
- // Name Canonical Kind Features
- // Name
+using namespace AMDGPU;
+static constexpr GPUInfo R600GPUs[26] = {
+ // Name Canonical Kind Features
+ // Name
+ //
{{"r600"}, {"r600"}, GK_R600, FEATURE_NONE },
{{"rv630"}, {"r600"}, GK_R600, FEATURE_NONE },
{{"rv635"}, {"r600"}, GK_R600, FEATURE_NONE },
@@ -991,9 +989,9 @@ constexpr GPUInfo R600GPUs[26] = {
// This table should be sorted by the value of GPUKind
// Don't bother listing the implicitly true features
-constexpr GPUInfo AMDGCNGPUs[32] = {
- // Name Canonical Kind Features
- // Name
+static constexpr GPUInfo AMDGCNGPUs[32] = {
+ // Name Canonical Kind Features
+ // Name
{{"gfx600"}, {"gfx600"}, GK_GFX600, FEATURE_FAST_FMA_F32},
{{"tahiti"}, {"gfx600"}, GK_GFX600, FEATURE_FAST_FMA_F32},
{{"gfx601"}, {"gfx601"}, GK_GFX601, FEATURE_NONE},
@@ -1028,7 +1026,8 @@ constexpr GPUInfo AMDGCNGPUs[32] = {
{{"gfx906"}, {"gfx906"}, GK_GFX906, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32},
};
-const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef<GPUInfo> Table) {
+static const GPUInfo *getArchEntry(AMDGPU::GPUKind AK,
+ ArrayRef<GPUInfo> Table) {
GPUInfo Search = { {""}, {""}, AK, AMDGPU::FEATURE_NONE };
auto I = std::lower_bound(Table.begin(), Table.end(), Search,
@@ -1041,8 +1040,6 @@ const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef<GPUInfo> Table) {
return I;
}
-} // namespace
-
StringRef llvm::AMDGPU::getArchNameAMDGCN(GPUKind AK) {
if (const auto *Entry = getArchEntry(AK, AMDGCNGPUs))
return Entry->CanonicalName;
@@ -1095,118 +1092,3 @@ void AMDGPU::fillValidArchListR600(SmallVectorImpl<StringRef> &Values) {
for (const auto C : R600GPUs)
Values.push_back(C.Name);
}
-
-StringRef AMDGPU::getArchNameFromElfMach(unsigned ElfMach) {
- AMDGPU::GPUKind AK;
-
- switch (ElfMach) {
- case ELF::EF_AMDGPU_MACH_R600_R600: AK = GK_R600; break;
- case ELF::EF_AMDGPU_MACH_R600_R630: AK = GK_R630; break;
- case ELF::EF_AMDGPU_MACH_R600_RS880: AK = GK_RS880; break;
- case ELF::EF_AMDGPU_MACH_R600_RV670: AK = GK_RV670; break;
- case ELF::EF_AMDGPU_MACH_R600_RV710: AK = GK_RV710; break;
- case ELF::EF_AMDGPU_MACH_R600_RV730: AK = GK_RV730; break;
- case ELF::EF_AMDGPU_MACH_R600_RV770: AK = GK_RV770; break;
- case ELF::EF_AMDGPU_MACH_R600_CEDAR: AK = GK_CEDAR; break;
- case ELF::EF_AMDGPU_MACH_R600_CYPRESS: AK = GK_CYPRESS; break;
- case ELF::EF_AMDGPU_MACH_R600_JUNIPER: AK = GK_JUNIPER; break;
- case ELF::EF_AMDGPU_MACH_R600_REDWOOD: AK = GK_REDWOOD; break;
- case ELF::EF_AMDGPU_MACH_R600_SUMO: AK = GK_SUMO; break;
- case ELF::EF_AMDGPU_MACH_R600_BARTS: AK = GK_BARTS; break;
- case ELF::EF_AMDGPU_MACH_R600_CAICOS: AK = GK_CAICOS; break;
- case ELF::EF_AMDGPU_MACH_R600_CAYMAN: AK = GK_CAYMAN; break;
- case ELF::EF_AMDGPU_MACH_R600_TURKS: AK = GK_TURKS; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX600: AK = GK_GFX600; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601: AK = GK_GFX601; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700: AK = GK_GFX700; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX701: AK = GK_GFX701; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX702: AK = GK_GFX702; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX703: AK = GK_GFX703; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704: AK = GK_GFX704; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801: AK = GK_GFX801; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX802: AK = GK_GFX802; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803: AK = GK_GFX803; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810: AK = GK_GFX810; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX900: AK = GK_GFX900; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX902: AK = GK_GFX902; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX904: AK = GK_GFX904; break;
- case ELF::EF_AMDGPU_MACH_AMDGCN_GFX906: AK = GK_GFX906; break;
- case ELF::EF_AMDGPU_MACH_NONE: AK = GK_NONE; break;
- }
-
- StringRef GPUName = getArchNameAMDGCN(AK);
- if (GPUName != "")
- return GPUName;
- return getArchNameR600(AK);
-}
-
-unsigned AMDGPU::getElfMach(StringRef GPU) {
- AMDGPU::GPUKind AK = parseArchAMDGCN(GPU);
- if (AK == AMDGPU::GPUKind::GK_NONE)
- AK = parseArchR600(GPU);
-
- switch (AK) {
- case GK_R600: return ELF::EF_AMDGPU_MACH_R600_R600;
- case GK_R630: return ELF::EF_AMDGPU_MACH_R600_R630;
- case GK_RS880: return ELF::EF_AMDGPU_MACH_R600_RS880;
- case GK_RV670: return ELF::EF_AMDGPU_MACH_R600_RV670;
- case GK_RV710: return ELF::EF_AMDGPU_MACH_R600_RV710;
- case GK_RV730: return ELF::EF_AMDGPU_MACH_R600_RV730;
- case GK_RV770: return ELF::EF_AMDGPU_MACH_R600_RV770;
- case GK_CEDAR: return ELF::EF_AMDGPU_MACH_R600_CEDAR;
- case GK_CYPRESS: return ELF::EF_AMDGPU_MACH_R600_CYPRESS;
- case GK_JUNIPER: return ELF::EF_AMDGPU_MACH_R600_JUNIPER;
- case GK_REDWOOD: return ELF::EF_AMDGPU_MACH_R600_REDWOOD;
- case GK_SUMO: return ELF::EF_AMDGPU_MACH_R600_SUMO;
- case GK_BARTS: return ELF::EF_AMDGPU_MACH_R600_BARTS;
- case GK_CAICOS: return ELF::EF_AMDGPU_MACH_R600_CAICOS;
- case GK_CAYMAN: return ELF::EF_AMDGPU_MACH_R600_CAYMAN;
- case GK_TURKS: return ELF::EF_AMDGPU_MACH_R600_TURKS;
- case GK_GFX600: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX600;
- case GK_GFX601: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX601;
- case GK_GFX700: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX700;
- case GK_GFX701: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX701;
- case GK_GFX702: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX702;
- case GK_GFX703: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX703;
- case GK_GFX704: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX704;
- case GK_GFX801: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX801;
- case GK_GFX802: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX802;
- case GK_GFX803: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX803;
- case GK_GFX810: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX810;
- case GK_GFX900: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX900;
- case GK_GFX902: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX902;
- case GK_GFX904: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX904;
- case GK_GFX906: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX906;
- case GK_NONE: return ELF::EF_AMDGPU_MACH_NONE;
- }
-
- llvm_unreachable("unknown GPU");
-}
-
-AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) {
- if (GPU == "generic")
- return {7, 0, 0};
-
- AMDGPU::GPUKind AK = parseArchAMDGCN(GPU);
- if (AK == AMDGPU::GPUKind::GK_NONE)
- return {0, 0, 0};
-
- switch (AK) {
- case GK_GFX600: return {6, 0, 0};
- case GK_GFX601: return {6, 0, 1};
- case GK_GFX700: return {7, 0, 0};
- case GK_GFX701: return {7, 0, 1};
- case GK_GFX702: return {7, 0, 2};
- case GK_GFX703: return {7, 0, 3};
- case GK_GFX704: return {7, 0, 4};
- case GK_GFX801: return {8, 0, 1};
- case GK_GFX802: return {8, 0, 2};
- case GK_GFX803: return {8, 0, 3};
- case GK_GFX810: return {8, 1, 0};
- case GK_GFX900: return {9, 0, 0};
- case GK_GFX902: return {9, 0, 2};
- case GK_GFX904: return {9, 0, 4};
- case GK_GFX906: return {9, 0, 6};
- default: return {0, 0, 0};
- }
-}
OpenPOWER on IntegriCloud