r278890 - Some missing usage of TargetParser. NFC.

2016-08-16 Thread Zijiao Ma via cfe-commits
Author: zijiaoma
Date: Tue Aug 16 21:13:33 2016
New Revision: 278890

URL: http://llvm.org/viewvc/llvm-project?rev=278890&view=rev
Log:
Some missing usage of TargetParser. NFC.

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=278890&r1=278889&r2=278890&view=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Tue Aug 16 21:13:33 2016
@@ -4901,7 +4901,7 @@ public:
   // the frontend matches that.
   if (Triple.getEnvironment() == llvm::Triple::EABI ||
   Triple.getOS() == llvm::Triple::UnknownOS ||
-  StringRef(CPU).startswith("cortex-m")) {
+  ArchProfile == llvm::ARM::PK_M) {
 setABI("aapcs");
   } else if (Triple.isWatchABI()) {
 setABI("aapcs16");
@@ -5230,7 +5230,7 @@ public:
 if (SoftFloat)
   Builder.defineMacro("__SOFTFP__");
 
-if (CPU == "xscale")
+if (ArchKind == llvm::ARM::AK_XSCALE)
   Builder.defineMacro("__XSCALE__");
 
 if (isThumb()) {

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=278890&r1=278889&r2=278890&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Aug 16 21:13:33 2016
@@ -7465,11 +7465,14 @@ llvm::Triple::ArchType darwin::getArchTy
 
 void darwin::setTripleTypeForMachOArchName(llvm::Triple &T, StringRef Str) {
   const llvm::Triple::ArchType Arch = getArchTypeForMachOArchName(Str);
+  unsigned ArchKind = llvm::ARM::parseArch(Str);
   T.setArch(Arch);
 
   if (Str == "x86_64h")
 T.setArchName(Str);
-  else if (Str == "armv6m" || Str == "armv7m" || Str == "armv7em") {
+  else if (ArchKind == llvm::ARM::AK_ARMV6M ||
+   ArchKind == llvm::ARM::AK_ARMV7M ||
+   ArchKind == llvm::ARM::AK_ARMV7EM) {
 T.setOS(llvm::Triple::UnknownOS);
 T.setObjectFormat(llvm::Triple::MachO);
   }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r276958 - [AArch64] Using AArch64TargetParser in Clang.

2016-07-27 Thread Zijiao Ma via cfe-commits
Author: zijiaoma
Date: Thu Jul 28 01:24:48 2016
New Revision: 276958

URL: http://llvm.org/viewvc/llvm-project?rev=276958&view=rev
Log:
[AArch64] Using AArch64TargetParser in Clang.

This resubmit r270688 which broke some specific buildbots.That's because
there is incorrect indexing problem in the targetparser,and the problem is
fixed in r276957.

Differential Revision: https://reviews.llvm.org/D21277

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=276958&r1=276957&r2=276958&view=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Thu Jul 28 01:24:48 2016
@@ -5726,19 +5726,9 @@ public:
   }
 
   bool setCPU(const std::string &Name) override {
-bool CPUKnown = llvm::StringSwitch(Name)
-  .Case("cortex-a35", true)
-  .Case("cortex-a53", true)
-  .Case("cortex-a57", true)
-  .Case("cortex-a72", true)
-  .Case("cortex-a73", true)
-  .Case("cyclone", true)
-  .Case("exynos-m1", true)
-  .Case("generic", true)
-  .Case("kryo", true)
-  .Case("vulcan", true)
-  .Default(false);
-return CPUKnown;
+return Name == "generic" ||
+   llvm::AArch64::parseCPUArch(Name) !=
+   static_cast(llvm::AArch64::ArchKind::AK_INVALID);
   }
 
   void getTargetDefines(const LangOptions &Opts,

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=276958&r1=276957&r2=276958&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Jul 28 01:24:48 2016
@@ -2340,24 +2340,8 @@ static bool DecodeAArch64Features(const
   text.split(Split, StringRef("+"), -1, false);
 
   for (StringRef Feature : Split) {
-const char *result = llvm::StringSwitch(Feature)
- .Case("fp", "+fp-armv8")
- .Case("simd", "+neon")
- .Case("crc", "+crc")
- .Case("crypto", "+crypto")
- .Case("fp16", "+fullfp16")
- .Case("profile", "+spe")
- .Case("ras", "+ras")
- .Case("nofp", "-fp-armv8")
- .Case("nosimd", "-neon")
- .Case("nocrc", "-crc")
- .Case("nocrypto", "-crypto")
- .Case("nofp16", "-fullfp16")
- .Case("noprofile", "-spe")
- .Case("noras", "-ras")
- .Default(nullptr);
-if (result)
-  Features.push_back(result);
+if (const char *FeatureName = llvm::AArch64::getArchExtFeature(Feature))
+  Features.push_back(FeatureName);
 else if (Feature == "neon" || Feature == "noneon")
   D.Diag(diag::err_drv_no_neon_modifier);
 else
@@ -2372,20 +2356,16 @@ static bool DecodeAArch64Mcpu(const Driv
   std::vector &Features) {
   std::pair Split = Mcpu.split("+");
   CPU = Split.first;
-  if (CPU == "cortex-a53" || CPU == "cortex-a57" ||
-  CPU == "cortex-a72" || CPU == "cortex-a35" || CPU == "exynos-m1" ||
-  CPU == "kryo"   || CPU == "cortex-a73" || CPU == "vulcan") {
-Features.push_back("+neon");
-Features.push_back("+crc");
-Features.push_back("+crypto");
-  } else if (CPU == "cyclone") {
-Features.push_back("+neon");
-Features.push_back("+crypto");
-  } else if (CPU == "generic") {
+
+  if (CPU == "generic") {
 Features.push_back("+neon");
   } else {
-return false;
-  }
+unsigned ArchKind = llvm::AArch64::parseCPUArch(CPU);
+unsigned Extersion = llvm::AArch64::getDefaultExtensions(CPU, ArchKind);
+
+if (!llvm::AArch64::getExtensionFeatures(Extersion, Features))
+  return false;
+   }
 
   if (Split.second.size() && !DecodeAArch64Features(D, Split.second, Features))
 return false;
@@ -2400,17 +2380,10 @@ getAArch64ArchFeaturesFromMarch(const Dr
   std::string MarchLowerCase = March.lower();
   std::pair Split = StringRef(MarchLowerCase).split("+");
 
-  if (Split.first == "armv8-a" || Split.first == "armv8a") {
-// ok, no additional features.
-  } else if (Split.first == "armv8.1-a" || Split.first == "armv8.1a") {
-Features.push_back("+v8.1a");
-  } else if (Split.first == "armv8.2-a" || Split.first == "armv8.2a" ) {
-Features.push_back("+v8.2a");
-  } else {
-return false;
-  }
-
-  if (Split.second.size() && !DecodeAArch64Features(D, Split.second, Features))
+  unsigned ArchKind = llvm::AArch64::parseArch(Split.first);
+  if (ArchKind == static_cast(llvm::AArch64::ArchKind::AK_INVALID) ||
+  !llvm::AArch64::ge