]> granicus.if.org Git - clang/commitdiff
PTX: Define target options
authorJustin Holewinski <justin.holewinski@gmail.com>
Thu, 15 Sep 2011 12:13:38 +0000 (12:13 +0000)
committerJustin Holewinski <justin.holewinski@gmail.com>
Thu, 15 Sep 2011 12:13:38 +0000 (12:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139789 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp

index 3198b361fb1aa279bb67ebde5f3291de76145db7..efbb1395739da9ce3b17712a3313f9652849c683 100644 (file)
@@ -916,6 +916,10 @@ namespace {
       // FIXME: implement
       return "typedef char* __builtin_va_list;";
     }
+
+    virtual bool setFeatureEnabled(llvm::StringMap<bool> &Features,
+                                   const std::string &Name,
+                                   bool Enabled) const;
   };
 
   const Builtin::Info PTXTargetInfo::BuiltinInfo[] = {
@@ -935,6 +939,91 @@ namespace {
     NumNames = llvm::array_lengthof(GCCRegNames);
   }
 
+  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;
+    } 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 true;
+  }
 
   class PTX32TargetInfo : public PTXTargetInfo {
   public: