[cfe-commits] r140320 - /cfe/trunk/lib/Basic/Targets.cpp

Justin Holewinski justin.holewinski at gmail.com
Thu Sep 22 10:57:40 PDT 2011


Author: jholewinski
Date: Thu Sep 22 12:57:40 2011
New Revision: 140320

URL: http://llvm.org/viewvc/llvm-project?rev=140320&view=rev
Log:
PTX: Clean up target options code

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

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=140320&r1=140319&r2=140320&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Thu Sep 22 12:57:40 2011
@@ -880,10 +880,32 @@
   class PTXTargetInfo : public TargetInfo {
     static const char * const GCCRegNames[];
     static const Builtin::Info BuiltinInfo[];
+    std::vector<llvm::StringRef> AvailableFeatures;
   public:
     PTXTargetInfo(const std::string& triple) : TargetInfo(triple) {
       TLSSupported = false;
       LongWidth = LongAlign = 64;
+      // Define available target features
+      // These must be defined in sorted order!      
+      AvailableFeatures.push_back("compute10");
+      AvailableFeatures.push_back("compute11");
+      AvailableFeatures.push_back("compute12");
+      AvailableFeatures.push_back("compute13");
+      AvailableFeatures.push_back("compute20");
+      AvailableFeatures.push_back("double");
+      AvailableFeatures.push_back("no-fma");
+      AvailableFeatures.push_back("ptx20");
+      AvailableFeatures.push_back("ptx21");
+      AvailableFeatures.push_back("ptx22");
+      AvailableFeatures.push_back("ptx23");
+      AvailableFeatures.push_back("sm10");
+      AvailableFeatures.push_back("sm11");
+      AvailableFeatures.push_back("sm12");
+      AvailableFeatures.push_back("sm13");
+      AvailableFeatures.push_back("sm20");
+      AvailableFeatures.push_back("sm21");
+      AvailableFeatures.push_back("sm22");
+      AvailableFeatures.push_back("sm23");
     }
     virtual void getTargetDefines(const LangOptions &Opts,
                                   MacroBuilder &Builder) const {
@@ -942,87 +964,13 @@
   bool PTXTargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features,
                                         const std::string &Name,
                                         bool Enabled) const {
-    if (Enabled) {
-      if (Name == "double")
-        Features["double"] = true;
-      else if (Name == "no-fma")
-        Features["no-fma"] = true;
-      else if (Name == "compute10")
-        Features["compute10"] = true;
-      else if (Name == "compute11")
-        Features["compute11"] = true;
-      else if (Name == "compute12")
-        Features["compute12"] = true;
-      else if (Name == "compute13")
-        Features["compute13"] = true;
-      else if (Name == "compute20")
-        Features["compute20"] = true;
-      else if (Name == "ptx20")
-        Features["ptx20"] = true;
-      else if (Name == "ptx21")
-        Features["ptx21"] = true;
-      else if (Name == "ptx22")
-        Features["ptx22"] = true;
-      else if (Name == "ptx23")
-        Features["ptx23"] = true;
-      else if (Name == "sm10")
-        Features["sm10"] = true;
-      else if (Name == "sm11")
-        Features["sm11"] = true;
-      else if (Name == "sm12")
-        Features["sm12"] = true;
-      else if (Name == "sm13")
-        Features["sm13"] = true;
-      else if (Name == "sm20")
-        Features["sm20"] = true;
-      else if (Name == "sm21")
-        Features["sm21"] = true;
-      else if (Name == "sm22")
-        Features["sm22"] = true;
-      else if (Name == "sm23")
-        Features["sm23"] = true;
+    if(std::binary_search(AvailableFeatures.begin(), AvailableFeatures.end(),
+                          Name)) {
+      Features[Name] = Enabled;
+      return true;
     } else {
-      if (Name == "double")
-        Features["double"] = false;
-      else if (Name == "no-fma")
-        Features["no-fma"] = false;
-      else if (Name == "compute10")
-        Features["compute10"] = false;
-      else if (Name == "compute11")
-        Features["compute11"] = false;
-      else if (Name == "compute12")
-        Features["compute12"] = false;
-      else if (Name == "compute13")
-        Features["compute13"] = false;
-      else if (Name == "compute20")
-        Features["compute20"] = false;
-      else if (Name == "ptx20")
-        Features["ptx20"] = false;
-      else if (Name == "ptx21")
-        Features["ptx21"] = false;
-      else if (Name == "ptx22")
-        Features["ptx22"] = false;
-      else if (Name == "ptx23")
-        Features["ptx23"] = false;
-      else if (Name == "sm10")
-        Features["sm10"] = false;
-      else if (Name == "sm11")
-        Features["sm11"] = false;
-      else if (Name == "sm12")
-        Features["sm12"] = false;
-      else if (Name == "sm13")
-        Features["sm13"] = false;
-      else if (Name == "sm20")
-        Features["sm20"] = false;
-      else if (Name == "sm21")
-        Features["sm21"] = false;
-      else if (Name == "sm22")
-        Features["sm22"] = false;
-      else if (Name == "sm23")
-        Features["sm23"] = false;
+      return false;
     }
-
-    return true;
   }
 
   class PTX32TargetInfo : public PTXTargetInfo {





More information about the cfe-commits mailing list