diff options
author | Brian Cain <brian.cain@oss.qualcomm.com> | 2025-06-27 22:13:36 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-27 23:13:36 -0500 |
commit | c6bd0207141f8fbd4061495b238a70e833f51cb6 (patch) | |
tree | 1a76c33732ba57f184ad65567f19eb613b533937 /clang/lib/Basic | |
parent | 54a7d53227ae7413dcb731ce14c1adc612d12a95 (diff) | |
download | llvm-c6bd0207141f8fbd4061495b238a70e833f51cb6.zip llvm-c6bd0207141f8fbd4061495b238a70e833f51cb6.tar.gz llvm-c6bd0207141f8fbd4061495b238a70e833f51cb6.tar.bz2 |
Revert "[Hexagon] NFC: Reduce the amount of version-specific code" (#146193)
Reverts llvm/llvm-project#145812
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r-- | clang/lib/Basic/Targets/Hexagon.cpp | 41 | ||||
-rw-r--r-- | clang/lib/Basic/Targets/Hexagon.h | 5 |
2 files changed, 28 insertions, 18 deletions
diff --git a/clang/lib/Basic/Targets/Hexagon.cpp b/clang/lib/Basic/Targets/Hexagon.cpp index 9fff20b..06dcac0 100644 --- a/clang/lib/Basic/Targets/Hexagon.cpp +++ b/clang/lib/Basic/Targets/Hexagon.cpp @@ -18,19 +18,6 @@ using namespace clang; using namespace clang::targets; -namespace { - -constexpr llvm::StringLiteral CpuValsTextArray[] = { - "hexagonv5", "hexagonv55", "hexagonv60", "hexagonv62", "hexagonv65", - "hexagonv66", "hexagonv67", "hexagonv67t", "hexagonv68", "hexagonv69", - "hexagonv71", "hexagonv71t", "hexagonv73", "hexagonv75", "hexagonv79", -}; - -} // namespace - -const llvm::ArrayRef<llvm::StringLiteral> - HexagonTargetInfo::CpuValsText(CpuValsTextArray); - void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { Builder.defineMacro("__qdsp6__", "1"); @@ -252,6 +239,22 @@ bool HexagonTargetInfo::hasFeature(StringRef Feature) const { .Default(false); } +struct CPUSuffix { + llvm::StringLiteral Name; + llvm::StringLiteral Suffix; +}; + +static constexpr CPUSuffix Suffixes[] = { + {{"hexagonv5"}, {"5"}}, {{"hexagonv55"}, {"55"}}, + {{"hexagonv60"}, {"60"}}, {{"hexagonv62"}, {"62"}}, + {{"hexagonv65"}, {"65"}}, {{"hexagonv66"}, {"66"}}, + {{"hexagonv67"}, {"67"}}, {{"hexagonv67t"}, {"67t"}}, + {{"hexagonv68"}, {"68"}}, {{"hexagonv69"}, {"69"}}, + {{"hexagonv71"}, {"71"}}, {{"hexagonv71t"}, {"71t"}}, + {{"hexagonv73"}, {"73"}}, {{"hexagonv75"}, {"75"}}, + {{"hexagonv79"}, {"79"}}, +}; + std::optional<unsigned> HexagonTargetInfo::getHexagonCPURev(StringRef Name) { StringRef Arch = Name; Arch.consume_front("hexagonv"); @@ -264,10 +267,18 @@ std::optional<unsigned> HexagonTargetInfo::getHexagonCPURev(StringRef Name) { return std::nullopt; } +const char *HexagonTargetInfo::getHexagonCPUSuffix(StringRef Name) { + const CPUSuffix *Item = llvm::find_if( + Suffixes, [Name](const CPUSuffix &S) { return S.Name == Name; }); + if (Item == std::end(Suffixes)) + return nullptr; + return Item->Suffix.data(); +} + void HexagonTargetInfo::fillValidCPUList( SmallVectorImpl<StringRef> &Values) const { - for (const llvm::StringLiteral &I : CpuValsText) - Values.push_back(I); + for (const CPUSuffix &Suffix : Suffixes) + Values.push_back(Suffix.Name); } llvm::SmallVector<Builtin::InfosShard> diff --git a/clang/lib/Basic/Targets/Hexagon.h b/clang/lib/Basic/Targets/Hexagon.h index 8aebbe1..a65663c 100644 --- a/clang/lib/Basic/Targets/Hexagon.h +++ b/clang/lib/Basic/Targets/Hexagon.h @@ -25,7 +25,6 @@ namespace targets { // Hexagon abstract base class class LLVM_LIBRARY_VISIBILITY HexagonTargetInfo : public TargetInfo { - static const llvm::ArrayRef<llvm::StringLiteral> CpuValsText; static const char *const GCCRegNames[]; static const TargetInfo::GCCRegAlias GCCRegAliases[]; std::string CPU; @@ -116,11 +115,11 @@ public: std::string_view getClobbers() const override { return ""; } + static const char *getHexagonCPUSuffix(StringRef Name); static std::optional<unsigned> getHexagonCPURev(StringRef Name); bool isValidCPUName(StringRef Name) const override { - return std::any_of(std::begin(CpuValsText), std::end(CpuValsText), - [Name](StringRef V) { return V == Name; }); + return getHexagonCPUSuffix(Name); } void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override; |