Re: r325203 - Reapply r325193

2018-02-15 Thread Jan Vesely via cfe-commits
On Thu, 2018-02-15 at 02:37 +, Konstantin Zhuravlyov via cfe-
commits wrote:
> Author: kzhuravl
> Date: Wed Feb 14 18:37:04 2018
> New Revision: 325203
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=325203=rev
> Log:
> Reapply r325193

Ca you please not do that ? Is it that difficult to have an actual
readable commit message? maybe describing the change and explaining
what has changed to fix the problems that got it reverted the first
time?

thanks,
Jan

> 
> Added:
> cfe/trunk/test/Driver/amdgpu-macros.cl
>   - copied unchanged from r325199, cfe/trunk/test/Driver/amdgpu-macros.cl
> Modified:
> cfe/trunk/lib/Basic/Targets/AMDGPU.cpp
> cfe/trunk/lib/Basic/Targets/AMDGPU.h
> 
> Modified: cfe/trunk/lib/Basic/Targets/AMDGPU.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/AMDGPU.cpp?rev=325203=325202=325203=diff
> ==
> --- cfe/trunk/lib/Basic/Targets/AMDGPU.cpp (original)
> +++ cfe/trunk/lib/Basic/Targets/AMDGPU.cpp Wed Feb 14 18:37:04 2018
> @@ -161,7 +161,7 @@ bool AMDGPUTargetInfo::initFeatureMap(
>  if (CPU.empty())
>CPU = "tahiti";
>  
> -switch (parseAMDGCNName(CPU)) {
> +switch (parseAMDGCNName(CPU).Kind) {
>  case GK_GFX6:
>  case GK_GFX7:
>break;
> @@ -184,7 +184,7 @@ bool AMDGPUTargetInfo::initFeatureMap(
>  if (CPU.empty())
>CPU = "r600";
>  
> -switch (parseR600Name(CPU)) {
> +switch (parseR600Name(CPU).Kind) {
>  case GK_R600:
>  case GK_R700:
>  case GK_EVERGREEN:
> @@ -229,36 +229,36 @@ void AMDGPUTargetInfo::adjustTargetOptio
>  }
>  
>  constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::InvalidGPU;
> -constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::R600Names[];
> -constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::AMDGCNNames[];
> -AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseR600Name(StringRef Name) {
> +constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::R600Names[];
> +constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::AMDGCNNames[];
> +AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseR600Name(StringRef Name) {
>const auto *Result = llvm::find_if(
> -  R600Names, [Name](const NameGPUKind ) { return Kind.Name == Name; 
> });
> +  R600Names, [Name](const GPUInfo ) { return GPU.Name == Name; });
>  
>if (Result == std::end(R600Names))
> -return GK_NONE;
> -  return Result->Kind;
> +return InvalidGPU;
> +  return *Result;
>  }
>  
> -AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
> +AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
>const auto *Result =
> -  llvm::find_if(AMDGCNNames, [Name](const NameGPUKind ) {
> -return Kind.Name == Name;
> +  llvm::find_if(AMDGCNNames, [Name](const GPUInfo ) {
> +return GPU.Name == Name;
>});
>  
>if (Result == std::end(AMDGCNNames))
> -return GK_NONE;
> -  return Result->Kind;
> +return InvalidGPU;
> +  return *Result;
>  }
>  
>  void AMDGPUTargetInfo::fillValidCPUList(
>  SmallVectorImpl ) const {
>if (getTriple().getArch() == llvm::Triple::amdgcn)
> -llvm::for_each(AMDGCNNames, [](const NameGPUKind ) {
> -   Values.emplace_back(Kind.Name);});
> +llvm::for_each(AMDGCNNames, [](const GPUInfo ) {
> +   Values.emplace_back(GPU.Name);});
>else
> -llvm::for_each(R600Names, [](const NameGPUKind ) {
> -   Values.emplace_back(Kind.Name);});
> +llvm::for_each(R600Names, [](const GPUInfo ) {
> +   Values.emplace_back(GPU.Name);});
>  }
>  
>  void AMDGPUTargetInfo::setAddressSpaceMap(bool DefaultIsPrivate) {
> @@ -273,17 +273,17 @@ void AMDGPUTargetInfo::setAddressSpaceMa
>  
>  AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple ,
> const TargetOptions )
> -: TargetInfo(Triple),
> -  GPU(isAMDGCN(Triple) ? GK_GFX6 : parseR600Name(Opts.CPU)),
> -  hasFP64(false), hasFMAF(false), hasLDEXPF(false),
> -  AS(isGenericZero(Triple)) {
> +  : TargetInfo(Triple),
> +GPU(isAMDGCN(Triple) ? AMDGCNNames[0] : 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 == GK_EVERGREEN_DOUBLE_OPS || GPU == GK_CAYMAN) {
> +if (GPU.Kind == GK_EVERGREEN_DOUBLE_OPS || GPU.Kind == GK_CAYMAN) {
>hasFMAF = true;
>  }
>}
> @@ -324,11 +324,17 @@ ArrayRef AMDGPUTargetInfo
>  
>  void AMDGPUTargetInfo::getTargetDefines(const LangOptions ,
>  MacroBuilder ) const {
> +  Builder.defineMacro("__AMD__");
> +  Builder.defineMacro("__AMDGPU__");
> +
>if 

r325203 - Reapply r325193

2018-02-14 Thread Konstantin Zhuravlyov via cfe-commits
Author: kzhuravl
Date: Wed Feb 14 18:37:04 2018
New Revision: 325203

URL: http://llvm.org/viewvc/llvm-project?rev=325203=rev
Log:
Reapply r325193

Added:
cfe/trunk/test/Driver/amdgpu-macros.cl
  - copied unchanged from r325199, cfe/trunk/test/Driver/amdgpu-macros.cl
Modified:
cfe/trunk/lib/Basic/Targets/AMDGPU.cpp
cfe/trunk/lib/Basic/Targets/AMDGPU.h

Modified: cfe/trunk/lib/Basic/Targets/AMDGPU.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/AMDGPU.cpp?rev=325203=325202=325203=diff
==
--- cfe/trunk/lib/Basic/Targets/AMDGPU.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/AMDGPU.cpp Wed Feb 14 18:37:04 2018
@@ -161,7 +161,7 @@ bool AMDGPUTargetInfo::initFeatureMap(
 if (CPU.empty())
   CPU = "tahiti";
 
-switch (parseAMDGCNName(CPU)) {
+switch (parseAMDGCNName(CPU).Kind) {
 case GK_GFX6:
 case GK_GFX7:
   break;
@@ -184,7 +184,7 @@ bool AMDGPUTargetInfo::initFeatureMap(
 if (CPU.empty())
   CPU = "r600";
 
-switch (parseR600Name(CPU)) {
+switch (parseR600Name(CPU).Kind) {
 case GK_R600:
 case GK_R700:
 case GK_EVERGREEN:
@@ -229,36 +229,36 @@ void AMDGPUTargetInfo::adjustTargetOptio
 }
 
 constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::InvalidGPU;
-constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::R600Names[];
-constexpr AMDGPUTargetInfo::NameGPUKind AMDGPUTargetInfo::AMDGCNNames[];
-AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseR600Name(StringRef Name) {
+constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::R600Names[];
+constexpr AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::AMDGCNNames[];
+AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseR600Name(StringRef Name) {
   const auto *Result = llvm::find_if(
-  R600Names, [Name](const NameGPUKind ) { return Kind.Name == Name; 
});
+  R600Names, [Name](const GPUInfo ) { return GPU.Name == Name; });
 
   if (Result == std::end(R600Names))
-return GK_NONE;
-  return Result->Kind;
+return InvalidGPU;
+  return *Result;
 }
 
-AMDGPUTargetInfo::GPUKind AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
+AMDGPUTargetInfo::GPUInfo AMDGPUTargetInfo::parseAMDGCNName(StringRef Name) {
   const auto *Result =
-  llvm::find_if(AMDGCNNames, [Name](const NameGPUKind ) {
-return Kind.Name == Name;
+  llvm::find_if(AMDGCNNames, [Name](const GPUInfo ) {
+return GPU.Name == Name;
   });
 
   if (Result == std::end(AMDGCNNames))
-return GK_NONE;
-  return Result->Kind;
+return InvalidGPU;
+  return *Result;
 }
 
 void AMDGPUTargetInfo::fillValidCPUList(
 SmallVectorImpl ) const {
   if (getTriple().getArch() == llvm::Triple::amdgcn)
-llvm::for_each(AMDGCNNames, [](const NameGPUKind ) {
-   Values.emplace_back(Kind.Name);});
+llvm::for_each(AMDGCNNames, [](const GPUInfo ) {
+   Values.emplace_back(GPU.Name);});
   else
-llvm::for_each(R600Names, [](const NameGPUKind ) {
-   Values.emplace_back(Kind.Name);});
+llvm::for_each(R600Names, [](const GPUInfo ) {
+   Values.emplace_back(GPU.Name);});
 }
 
 void AMDGPUTargetInfo::setAddressSpaceMap(bool DefaultIsPrivate) {
@@ -273,17 +273,17 @@ void AMDGPUTargetInfo::setAddressSpaceMa
 
 AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple ,
const TargetOptions )
-: TargetInfo(Triple),
-  GPU(isAMDGCN(Triple) ? GK_GFX6 : parseR600Name(Opts.CPU)),
-  hasFP64(false), hasFMAF(false), hasLDEXPF(false),
-  AS(isGenericZero(Triple)) {
+  : TargetInfo(Triple),
+GPU(isAMDGCN(Triple) ? AMDGCNNames[0] : 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 == GK_EVERGREEN_DOUBLE_OPS || GPU == GK_CAYMAN) {
+if (GPU.Kind == GK_EVERGREEN_DOUBLE_OPS || GPU.Kind == GK_CAYMAN) {
   hasFMAF = true;
 }
   }
@@ -324,11 +324,17 @@ ArrayRef AMDGPUTargetInfo
 
 void AMDGPUTargetInfo::getTargetDefines(const LangOptions ,
 MacroBuilder ) 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)

Modified: cfe/trunk/lib/Basic/Targets/AMDGPU.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/AMDGPU.h?rev=325203=325202=325203=diff
==
---