diff options
Diffstat (limited to 'lib/Basic/Targets.cpp')
-rw-r--r-- | lib/Basic/Targets.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index b08a3d30f1..47598f8152 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -2963,7 +2963,19 @@ public: virtual const char *getClobbers() const { return ""; } + + static const char *getHexagonCPUSuffix(StringRef Name) { + return llvm::StringSwitch<const char*>(Name) + .Case("hexagonv2", "2") + .Case("hexagonv3", "3") + .Case("hexagonv4", "4") + .Default(0); + } + virtual bool setCPU(const std::string &Name) { + if (!getHexagonCPUSuffix(Name)) + return false; + CPU = Name; return true; } |