diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2018-09-12 07:05:30 +0000 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2018-09-12 07:05:30 +0000 |
commit | 95066496d08011c70b1dd6208deb17511f3000d0 (patch) | |
tree | 71a56db87cad62cdac1878a77e4b76fee9031528 /llvm/lib/Support/TargetParser.cpp | |
parent | 26a37998588f673ef1e3fc4a126f2a0963dad6bb (diff) | |
download | bcm5719-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.cpp | 138 |
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}; - } -} |