Revert r325193 as it breaks buildbots
llvm-svn: 325200
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 17ae336..8b69ed3 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -161,7 +161,7 @@
if (CPU.empty())
CPU = "tahiti";
- switch (parseAMDGCNName(CPU).Kind) {
+ switch (parseAMDGCNName(CPU)) {
case GK_GFX6:
case GK_GFX7:
break;
@@ -184,7 +184,7 @@
if (CPU.empty())
CPU = "r600";
- switch (parseR600Name(CPU).Kind) {
+ switch (parseR600Name(CPU)) {
case GK_R600:
case GK_R700:
case GK_EVERGREEN:
@@ -229,36 +229,36 @@
}
constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::InvalidGPU;
-constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::R600Names[];
-constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::AMDGCNNames[];
-AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseR600Name(StringRef Name) {
+constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::R600Names[];
+constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::AMDGCNNames[];
+AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseR600Name(StringRef Name) {
const auto *Result = llvm::find_if(
- R600Names, [Name](const GPUInfo &GPU) { return GPU.Name == Name; });
+ R600Names, [Name](const NameGPUKind &Kind) { return Kind.Name == Name; });
if (Result == std::end(R600Names))
- return InvalidGPU;
- return *Result;
+ return GK_NONE;
+ return Result->Kind;
}
-AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
+AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
const auto *Result =
- llvm::find_if(AMDGCNNames, [Name](const GPUInfo &GPU) {
- return GPU.Name == Name;
+ llvm::find_if(AMDGCNNames, [Name](const NameGPUKind &Kind) {
+ return Kind.Name == Name;
});
if (Result == std::end(AMDGCNNames))
- return InvalidGPU;
- return *Result;
+ return GK_NONE;
+ return Result->Kind;
}
void AMDGPUTargetInfo::fillValidCPUList(
SmallVectorImpl<StringRef> &Values) const {
if (getTriple().getArch() == llvm::Triple::amdgcn)
- llvm::for_each(AMDGCNNames, [&Values](const GPUInfo &GPU) {
- Values.emplace_back(GPU.Name);});
+ llvm::for_each(AMDGCNNames, [&Values](const NameGPUKind &Kind) {
+ Values.emplace_back(Kind.Name);});
else
- llvm::for_each(R600Names, [&Values](const GPUInfo &GPU) {
- Values.emplace_back(GPU.Name);});
+ llvm::for_each(R600Names, [&Values](const NameGPUKind &Kind) {
+ Values.emplace_back(Kind.Name);});
}
void AMDGPUTargetInfo::setAddressSpaceMap(bool DefaultIsPrivate) {
@@ -273,17 +273,17 @@
AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple,
const TargetOptions &Opts)
- : TargetInfo(Triple),
- GPU(isAMDGCN(Triple) ? AMDGCNNames[0] : parseR600Name(Opts.CPU)),
- hasFP64(false), hasFMAF(false), hasLDEXPF(false),
- AS(isGenericZero(Triple)) {
+ : TargetInfo(Triple),
+ GPU(isAMDGCN(Triple) ? GK_GFX6 : parseR600Name(Opts.CPU)),
+ hasFP64(false), hasFMAF(false), hasLDEXPF(false),
+ AS(isGenericZero(Triple)) {
if (getTriple().getArch() == llvm::Triple::amdgcn) {
hasFP64 = true;
hasFMAF = true;
hasLDEXPF = true;
}
if (getTriple().getArch() == llvm::Triple::r600) {
- if (GPU.Kind == GK_EVERGREEN_DOUBLE_OPS || GPU.Kind == GK_CAYMAN) {
+ if (GPU == GK_EVERGREEN_DOUBLE_OPS || GPU == GK_CAYMAN) {
hasFMAF = true;
}
}
@@ -324,17 +324,11 @@
void AMDGPUTargetInfo::getTargetDefines(const LangOptions &Opts,
MacroBuilder &Builder) const {
- Builder.defineMacro("__AMD__");
- Builder.defineMacro("__AMDGPU__");
-
if (getTriple().getArch() == llvm::Triple::amdgcn)
Builder.defineMacro("__AMDGCN__");
else
Builder.defineMacro("__R600__");
- if (GPU.Kind != GK_NONE)
- Builder.defineMacro(Twine("__") + Twine(GPU.CanonicalName) + Twine("__"));
-
if (hasFMAF)
Builder.defineMacro("__HAS_FMAF__");
if (hasLDEXPF)
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 8e4ccc5..050676e 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -62,76 +62,72 @@
GK_GFX7,
GK_GFX8,
GK_GFX9
- };
+ } GPU;
- struct GPUInfo {
+ struct NameGPUKind {
llvm::StringLiteral Name;
- llvm::StringLiteral CanonicalName;
AMDGPUTargetInfo::GPUKind Kind;
};
- GPUInfo GPU;
-
- static constexpr GPUInfo InvalidGPU = {{""}, {""}, GK_NONE};
- static constexpr GPUInfo R600Names[26] = {
- {{"r600"}, {"r600"}, GK_R600},
- {{"rv630"}, {"r600"}, GK_R600},
- {{"rv635"}, {"r600"}, GK_R600},
- {{"r630"}, {"r630"}, GK_R600},
- {{"rs780"}, {"rs880"}, GK_R600},
- {{"rs880"}, {"rs880"}, GK_R600},
- {{"rv610"}, {"rs880"}, GK_R600},
- {{"rv620"}, {"rs880"}, GK_R600},
- {{"rv670"}, {"rv670"}, GK_R600_DOUBLE_OPS},
- {{"rv710"}, {"rv710"}, GK_R700},
- {{"rv730"}, {"rv730"}, GK_R700},
- {{"rv740"}, {"rv770"}, GK_R700_DOUBLE_OPS},
- {{"rv770"}, {"rv770"}, GK_R700_DOUBLE_OPS},
- {{"cedar"}, {"cedar"}, GK_EVERGREEN},
- {{"palm"}, {"cedar"}, GK_EVERGREEN},
- {{"cypress"}, {"cypress"}, GK_EVERGREEN_DOUBLE_OPS},
- {{"hemlock"}, {"cypress"}, GK_EVERGREEN_DOUBLE_OPS},
- {{"juniper"}, {"juniper"}, GK_EVERGREEN},
- {{"redwood"}, {"redwood"}, GK_EVERGREEN},
- {{"sumo"}, {"sumo"}, GK_EVERGREEN},
- {{"sumo2"}, {"sumo"}, GK_EVERGREEN},
- {{"barts"}, {"barts"}, GK_NORTHERN_ISLANDS},
- {{"caicos"}, {"caicos"}, GK_NORTHERN_ISLANDS},
- {{"turks"}, {"turks"}, GK_NORTHERN_ISLANDS},
- {{"aruba"}, {"cayman"}, GK_CAYMAN},
- {{"cayman"}, {"cayman"}, GK_CAYMAN},
+ static constexpr NameGPUKind R600Names[26] = {
+ {{"r600"}, GK_R600},
+ {{"rv630"}, GK_R600},
+ {{"rv635"}, GK_R600},
+ {{"r630"}, GK_R600},
+ {{"rs780"}, GK_R600},
+ {{"rs880"}, GK_R600},
+ {{"rv610"}, GK_R600},
+ {{"rv620"}, GK_R600},
+ {{"rv670"}, GK_R600_DOUBLE_OPS},
+ {{"rv710"}, GK_R700},
+ {{"rv730"}, GK_R700},
+ {{"rv740"}, GK_R700_DOUBLE_OPS},
+ {{"rv770"}, GK_R700_DOUBLE_OPS},
+ {{"cedar"}, GK_EVERGREEN},
+ {{"palm"}, GK_EVERGREEN},
+ {{"cypress"}, GK_EVERGREEN_DOUBLE_OPS},
+ {{"hemlock"}, GK_EVERGREEN_DOUBLE_OPS},
+ {{"juniper"}, GK_EVERGREEN},
+ {{"redwood"}, GK_EVERGREEN},
+ {{"sumo"}, GK_EVERGREEN},
+ {{"sumo2"}, GK_EVERGREEN},
+ {{"barts"}, GK_NORTHERN_ISLANDS},
+ {{"caicos"}, GK_NORTHERN_ISLANDS},
+ {{"turks"}, GK_NORTHERN_ISLANDS},
+ {{"aruba"}, GK_CAYMAN},
+ {{"cayman"}, GK_CAYMAN},
};
- static constexpr GPUInfo AMDGCNNames[30] = {
- {{"gfx600"}, {"gfx600"}, GK_GFX6},
- {{"tahiti"}, {"gfx600"}, GK_GFX6},
- {{"gfx601"}, {"gfx601"}, GK_GFX6},
- {{"hainan"}, {"gfx601"}, GK_GFX6},
- {{"oland"}, {"gfx601"}, GK_GFX6},
- {{"pitcairn"}, {"gfx601"}, GK_GFX6},
- {{"verde"}, {"gfx601"}, GK_GFX6},
- {{"gfx700"}, {"gfx700"}, GK_GFX7},
- {{"kaveri"}, {"gfx700"}, GK_GFX7},
- {{"gfx701"}, {"gfx701"}, GK_GFX7},
- {{"hawaii"}, {"gfx701"}, GK_GFX7},
- {{"gfx702"}, {"gfx702"}, GK_GFX7},
- {{"gfx703"}, {"gfx703"}, GK_GFX7},
- {{"kabini"}, {"gfx703"}, GK_GFX7},
- {{"mullins"}, {"gfx703"}, GK_GFX7},
- {{"gfx704"}, {"gfx704"}, GK_GFX7},
- {{"bonaire"}, {"gfx704"}, GK_GFX7},
- {{"gfx801"}, {"gfx801"}, GK_GFX8},
- {{"carrizo"}, {"gfx801"}, GK_GFX8},
- {{"gfx802"}, {"gfx802"}, GK_GFX8},
- {{"iceland"}, {"gfx802"}, GK_GFX8},
- {{"tonga"}, {"gfx802"}, GK_GFX8},
- {{"gfx803"}, {"gfx803"}, GK_GFX8},
- {{"fiji"}, {"gfx803"}, GK_GFX8},
- {{"polaris10"}, {"gfx803"}, GK_GFX8},
- {{"polaris11"}, {"gfx803"}, GK_GFX8},
- {{"gfx810"}, {"gfx810"}, GK_GFX8},
- {{"stoney"}, {"gfx810"}, GK_GFX8},
- {{"gfx900"}, {"gfx900"}, GK_GFX9},
- {{"gfx902"}, {"gfx902"}, GK_GFX9},
+ static constexpr NameGPUKind AMDGCNNames[30] = {
+ {{"gfx600"}, GK_GFX6},
+ {{"tahiti"}, GK_GFX6},
+ {{"gfx601"}, GK_GFX6},
+ {{"hainan"}, GK_GFX6},
+ {{"oland"}, GK_GFX6},
+ {{"pitcairn"}, GK_GFX6},
+ {{"verde"}, GK_GFX6},
+ {{"gfx700"}, GK_GFX7},
+ {{"kaveri"}, GK_GFX7},
+ {{"gfx701"}, GK_GFX7},
+ {{"hawaii"}, GK_GFX7},
+ {{"gfx702"}, GK_GFX7},
+ {{"gfx703"}, GK_GFX7},
+ {{"kabini"}, GK_GFX7},
+ {{"mullins"}, GK_GFX7},
+ {{"gfx704"}, GK_GFX7},
+ {{"bonaire"}, GK_GFX7},
+ {{"gfx801"}, GK_GFX8},
+ {{"carrizo"}, GK_GFX8},
+ {{"gfx802"}, GK_GFX8},
+ {{"iceland"}, GK_GFX8},
+ {{"tonga"}, GK_GFX8},
+ {{"gfx803"}, GK_GFX8},
+ {{"fiji"}, GK_GFX8},
+ {{"polaris10"}, GK_GFX8},
+ {{"polaris11"}, GK_GFX8},
+ {{"gfx810"}, GK_GFX8},
+ {{"stoney"}, GK_GFX8},
+ {{"gfx900"}, GK_GFX9},
+ {{"gfx902"}, GK_GFX9},
};
bool hasFP64 : 1;
@@ -140,7 +136,7 @@
const AddrSpace AS;
static bool hasFullSpeedFMAF32(StringRef GPUName) {
- return parseAMDGCNName(GPUName).Kind >= GK_GFX9;
+ return parseAMDGCNName(GPUName) >= GK_GFX9;
}
static bool isAMDGCN(const llvm::Triple &TT) {
@@ -157,7 +153,7 @@
void adjust(LangOptions &Opts) override;
uint64_t getPointerWidthV(unsigned AddrSpace) const override {
- if (GPU.Kind <= GK_CAYMAN)
+ if (GPU <= GK_CAYMAN)
return 32;
if (AddrSpace == AS.Private || AddrSpace == AS.Local) {
@@ -278,15 +274,15 @@
return TargetInfo::CharPtrBuiltinVaList;
}
- static GPUInfo parseR600Name(StringRef Name);
+ static GPUKind parseR600Name(StringRef Name);
- static GPUInfo parseAMDGCNName(StringRef Name);
+ static GPUKind parseAMDGCNName(StringRef Name);
bool isValidCPUName(StringRef Name) const override {
if (getTriple().getArch() == llvm::Triple::amdgcn)
- return GK_NONE != parseAMDGCNName(Name).Kind;
+ return GK_NONE != parseAMDGCNName(Name);
else
- return GK_NONE != parseR600Name(Name).Kind;
+ return GK_NONE != parseR600Name(Name);
}
void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override;
@@ -297,7 +293,7 @@
else
GPU = parseR600Name(Name);
- return GPU.Kind != GK_NONE;
+ return GPU != GK_NONE;
}
void setSupportedOpenCLOpts() override {
@@ -307,14 +303,14 @@
if (hasFP64)
Opts.support("cl_khr_fp64");
- if (GPU.Kind >= GK_EVERGREEN) {
+ if (GPU >= GK_EVERGREEN) {
Opts.support("cl_khr_byte_addressable_store");
Opts.support("cl_khr_global_int32_base_atomics");
Opts.support("cl_khr_global_int32_extended_atomics");
Opts.support("cl_khr_local_int32_base_atomics");
Opts.support("cl_khr_local_int32_extended_atomics");
}
- if (GPU.Kind >= GK_GFX6) {
+ if (GPU >= GK_GFX6) {
Opts.support("cl_khr_fp16");
Opts.support("cl_khr_int64_base_atomics");
Opts.support("cl_khr_int64_extended_atomics");