Skip to content

Commit 7f7bbb9

Browse files
authored
[AArch64] Use parseArchExtension function. NFC (#78158)
1 parent 92289db commit 7f7bbb9

File tree

2 files changed

+17
-29
lines changed

2 files changed

+17
-29
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -622,9 +622,8 @@ AArch64TargetInfo::getVScaleRange(const LangOptions &LangOpts) const {
622622
unsigned AArch64TargetInfo::multiVersionSortPriority(StringRef Name) const {
623623
if (Name == "default")
624624
return 0;
625-
for (const auto &E : llvm::AArch64::Extensions)
626-
if (Name == E.Name)
627-
return E.FmvPriority;
625+
if (auto Ext = llvm::AArch64::parseArchExtension(Name))
626+
return Ext->FmvPriority;
628627
return 0;
629628
}
630629

@@ -634,24 +633,19 @@ unsigned AArch64TargetInfo::multiVersionFeatureCost() const {
634633
}
635634

636635
bool AArch64TargetInfo::doesFeatureAffectCodeGen(StringRef Name) const {
637-
auto F = llvm::find_if(llvm::AArch64::Extensions, [&](const auto &E) {
638-
return Name == E.Name && !E.DependentFeatures.empty();
639-
});
640-
return F != std::end(llvm::AArch64::Extensions);
636+
if (auto Ext = llvm::AArch64::parseArchExtension(Name))
637+
return !Ext->DependentFeatures.empty();
638+
return false;
641639
}
642640

643641
StringRef AArch64TargetInfo::getFeatureDependencies(StringRef Name) const {
644-
auto F = llvm::find_if(llvm::AArch64::Extensions,
645-
[&](const auto &E) { return Name == E.Name; });
646-
return F != std::end(llvm::AArch64::Extensions) ? F->DependentFeatures
647-
: StringRef();
642+
if (auto Ext = llvm::AArch64::parseArchExtension(Name))
643+
return Ext->DependentFeatures;
644+
return StringRef();
648645
}
649646

650647
bool AArch64TargetInfo::validateCpuSupports(StringRef FeatureStr) const {
651-
for (const auto &E : llvm::AArch64::Extensions)
652-
if (FeatureStr == E.Name)
653-
return true;
654-
return false;
648+
return llvm::AArch64::parseArchExtension(FeatureStr).has_value();
655649
}
656650

657651
bool AArch64TargetInfo::hasFeature(StringRef Feature) const {

llvm/lib/TargetParser/AArch64TargetParser.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,8 @@ std::optional<AArch64::ArchInfo> AArch64::ArchInfo::findBySubArch(StringRef SubA
4747
uint64_t AArch64::getCpuSupportsMask(ArrayRef<StringRef> FeatureStrs) {
4848
uint64_t FeaturesMask = 0;
4949
for (const StringRef &FeatureStr : FeatureStrs) {
50-
for (const auto &E : llvm::AArch64::Extensions)
51-
if (FeatureStr == E.Name) {
52-
FeaturesMask |= (1ULL << E.CPUFeature);
53-
break;
54-
}
50+
if (auto Ext = parseArchExtension(FeatureStr))
51+
FeaturesMask |= (1ULL << Ext->CPUFeature);
5552
}
5653
return FeaturesMask;
5754
}
@@ -75,17 +72,14 @@ StringRef AArch64::resolveCPUAlias(StringRef Name) {
7572
}
7673

7774
StringRef AArch64::getArchExtFeature(StringRef ArchExt) {
78-
if (ArchExt.starts_with("no")) {
79-
StringRef ArchExtBase(ArchExt.substr(2));
80-
for (const auto &AE : Extensions) {
81-
if (!AE.NegFeature.empty() && ArchExtBase == AE.Name)
82-
return AE.NegFeature;
83-
}
75+
bool IsNegated = ArchExt.starts_with("no");
76+
StringRef ArchExtBase = IsNegated ? ArchExt.drop_front(2) : ArchExt;
77+
78+
if (auto AE = parseArchExtension(ArchExtBase)) {
79+
// Note: the returned string can be empty.
80+
return IsNegated ? AE->NegFeature : AE->Feature;
8481
}
8582

86-
for (const auto &AE : Extensions)
87-
if (!AE.Feature.empty() && ArchExt == AE.Name)
88-
return AE.Feature;
8983
return StringRef();
9084
}
9185

0 commit comments

Comments
 (0)