arsenm created this revision.
arsenm added reviewers: rampitec, kzhuravl, yaxunl.
Herald added subscribers: t-tye, tpr, dstuttard, nhaehnle, wdng, jvesely.
arsenm added a dependency: D50983: AMDGPU: Partially move target handling code
from clang to TargetParser.
https://reviews.llvm.org/D50984
Files:
lib/Basic/Targets/AMDGPU.cpp
lib/Basic/Targets/AMDGPU.h
Index: lib/Basic/Targets/AMDGPU.h
===
--- lib/Basic/Targets/AMDGPU.h
+++ lib/Basic/Targets/AMDGPU.h
@@ -19,6 +19,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Support/Compiler.h"
+#include "llvm/Support/TargetParser.h"
namespace clang {
namespace targets {
@@ -38,160 +39,61 @@
static const LangASMap AMDGPUDefIsGenMap;
static const LangASMap AMDGPUDefIsPrivMap;
- /// GPU kinds supported by the AMDGPU target.
- enum GPUKind : uint32_t {
-// Not specified processor.
-GK_NONE = 0,
-
-// R600-based processors.
-GK_R600,
-GK_R630,
-GK_RS880,
-GK_RV670,
-GK_RV710,
-GK_RV730,
-GK_RV770,
-GK_CEDAR,
-GK_CYPRESS,
-GK_JUNIPER,
-GK_REDWOOD,
-GK_SUMO,
-GK_BARTS,
-GK_CAICOS,
-GK_CAYMAN,
-GK_TURKS,
-
-GK_R600_FIRST = GK_R600,
-GK_R600_LAST = GK_TURKS,
-
-// AMDGCN-based processors.
-GK_GFX600,
-GK_GFX601,
-GK_GFX700,
-GK_GFX701,
-GK_GFX702,
-GK_GFX703,
-GK_GFX704,
-GK_GFX801,
-GK_GFX802,
-GK_GFX803,
-GK_GFX810,
-GK_GFX900,
-GK_GFX902,
-GK_GFX904,
-GK_GFX906,
-
-GK_AMDGCN_FIRST = GK_GFX600,
-GK_AMDGCN_LAST = GK_GFX906,
- };
+ llvm::AMDGPU::GPUKind GPUKind;
+ unsigned GPUFeatures;
- struct GPUInfo {
-llvm::StringLiteral Name;
-llvm::StringLiteral CanonicalName;
-AMDGPUTargetInfo::GPUKind Kind;
-bool HasFMAF;
-bool HasFastFMAF;
-bool HasLDEXPF;
-bool HasFP64;
-bool HasFastFMA;
-bool HasFullRateF32Denorms;
- };
- static constexpr GPUInfo InvalidGPU =
-{{""}, {""}, GK_NONE, false, false, false, false, false, false};
- static constexpr GPUInfo R600GPUs[26] = {
- // Name CanonicalKindHasHasHasHasHasHas
- // Name FMAF Fast LDEXPF FP64 Fast Fast
- // FMAF FMADenorm
-{{"r600"},{"r600"},GK_R600,false, false, false, false, false, false},
-{{"rv630"}, {"r600"},GK_R600,false, false, false, false, false, false},
-{{"rv635"}, {"r600"},GK_R600,false, false, false, false, false, false},
-{{"r630"},{"r630"},GK_R630,false, false, false, false, false, false},
-{{"rs780"}, {"rs880"}, GK_RS880, false, false, false, false, false, false},
-{{"rs880"}, {"rs880"}, GK_RS880, false, false, false, false, false, false},
-{{"rv610"}, {"rs880"}, GK_RS880, false, false, false, false, false, false},
-{{"rv620"}, {"rs880"}, GK_RS880, false, false, false, false, false, false},
-{{"rv670"}, {"rv670"}, GK_RV670, false, false, false, false, false, false},
-{{"rv710"}, {"rv710"}, GK_RV710, false, false, false, false, false, false},
-{{"rv730"}, {"rv730"}, GK_RV730, false, false, false, false, false, false},
-{{"rv740"}, {"rv770"}, GK_RV770, false, false, false, false, false, false},
-{{"rv770"}, {"rv770"}, GK_RV770, false, false, false, false, false, false},
-{{"cedar"}, {"cedar"}, GK_CEDAR, false, false, false, false, false, false},
-{{"palm"},{"cedar"}, GK_CEDAR, false, false, false, false, false, false},
-{{"cypress"}, {"cypress"}, GK_CYPRESS, true, false, false, false, false, false},
-{{"hemlock"}, {"cypress"}, GK_CYPRESS, true, false, false, false, false, false},
-{{"juniper"}, {"juniper"}, GK_JUNIPER, false, false, false, false, false, false},
-{{"redwood"}, {"redwood"}, GK_REDWOOD, false, false, false, false, false, false},
-{{"sumo"},{"sumo"},GK_SUMO,false, false, false, false, false, false},
-{{"sumo2"}, {"sumo"},GK_SUMO,false, false, false, false, false, false},
-{{"barts"}, {"barts"}, GK_BARTS, false, false, false, false, false, false},
-{{"caicos"}, {"caicos"}, GK_CAICOS, false, false, false, false, false, false},
-{{"aruba"}, {"cayman"}, GK_CAYMAN, true, false, false, false, false, false},
-{{"cayman"}, {"cayman"}, GK_CAYMAN, true, false, false, false, false, false},
-{{"turks"}, {"turks"}, GK_TURKS, false, false, false, false, false, false},
- };
- static constexpr GPUInfo AMDGCNGPUs[32] = {
- // Name CanonicalKindHas HasHasHas Has Has
- //Name FMAF Fast LDEXPF FP64 Fast Fast
- // FMAFFMA Denorm
-{{"gfx600"},