diff options
author | Justin Holewinski <justin.holewinski@gmail.com> | 2011-09-22 17:57:40 +0000 |
---|---|---|
committer | Justin Holewinski <justin.holewinski@gmail.com> | 2011-09-22 17:57:40 +0000 |
commit | 0542df51982242e98a0f320e8277cad13e201251 (patch) | |
tree | 0b1e107d35c429cd5cd4a909b8455fb97a5282a5 /clang/lib/Basic/Targets.cpp | |
parent | 79a45a839c523beb81b85a1c2554cbc24764acb0 (diff) | |
download | bcm5719-llvm-0542df51982242e98a0f320e8277cad13e201251.tar.gz bcm5719-llvm-0542df51982242e98a0f320e8277cad13e201251.zip |
PTX: Clean up target options code
llvm-svn: 140320
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 106 |
1 files changed, 27 insertions, 79 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 43a9dce276c..5e25f69f41e 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -880,10 +880,32 @@ namespace { 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 @@ namespace { 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 { |