[cfe-commits] r139789 - /cfe/trunk/lib/Basic/Targets.cpp
Tobias Grosser
tobias at grosser.es
Thu Sep 15 07:34:14 PDT 2011
On 09/15/2011 01:13 PM, Justin Holewinski wrote:
> Author: jholewinski
> Date: Thu Sep 15 07:13:38 2011
> New Revision: 139789
>
> URL: http://llvm.org/viewvc/llvm-project?rev=139789&view=rev
> Log:
> PTX: Define target options
Hey Justin,
this is nice, but you might shorten the code slightly.
> 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=139789&r1=139788&r2=139789&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Basic/Targets.cpp (original)
> +++ cfe/trunk/lib/Basic/Targets.cpp Thu Sep 15 07:13:38 2011
> @@ -916,6 +916,10 @@
> // 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 @@
> 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;
> + }
Does the following code achieve the same?
std::set<std::string> AvailableFeatures;
AvailableFeatures.add("double");
AvailableFeatures.add("no-fma");
AvailableFeatures.add("compute10");
[...]
if (AvailableFeatures.count(Name))
Features[Name] = Enabled;
You may want to move the AvailableFeatures initialization in the
constructure.
Cheers
Tobi
More information about the cfe-commits
mailing list