[llvm] [RISCV] Merge RISCVISAInfo::updateFLen/MinVLen/MaxELen into a single function. (PR #90665)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 30 13:58:57 PDT 2024
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/90665
This simplifies the callers.
>From 97d54ce20e32784ded476d5a82e3d9af41678bca Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Tue, 30 Apr 2024 13:55:23 -0700
Subject: [PATCH] [RISCV] Merge RISCVISAInfo::updateFLen/MinVLen/MaxELen into a
single function.
This simplifies the callers.
---
llvm/include/llvm/TargetParser/RISCVISAInfo.h | 15 ++++----
llvm/lib/TargetParser/RISCVISAInfo.cpp | 37 ++++++++-----------
2 files changed, 22 insertions(+), 30 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/RISCVISAInfo.h b/llvm/include/llvm/TargetParser/RISCVISAInfo.h
index 0d5637155daa96..36617a9b625972 100644
--- a/llvm/include/llvm/TargetParser/RISCVISAInfo.h
+++ b/llvm/include/llvm/TargetParser/RISCVISAInfo.h
@@ -78,13 +78,12 @@ class RISCVISAInfo {
static std::string getTargetFeatureForExtension(StringRef Ext);
private:
- RISCVISAInfo(unsigned XLen)
- : XLen(XLen), FLen(0), MinVLen(0), MaxELen(0), MaxELenFp(0) {}
+ RISCVISAInfo(unsigned XLen) : XLen(XLen) {}
unsigned XLen;
- unsigned FLen;
- unsigned MinVLen;
- unsigned MaxELen, MaxELenFp;
+ unsigned FLen = 0;
+ unsigned MinVLen = 0;
+ unsigned MaxELen = 0, MaxELenFp = 0;
RISCVISAUtils::OrderedExtensionMap Exts;
@@ -94,9 +93,9 @@ class RISCVISAInfo {
void updateImplication();
void updateCombination();
- void updateFLen();
- void updateMinVLen();
- void updateMaxELen();
+
+ /// Update FLen, MinVLen, MaxELen, and MaxELenFp.
+ void updateImpliedLengths();
};
} // namespace llvm
diff --git a/llvm/lib/TargetParser/RISCVISAInfo.cpp b/llvm/lib/TargetParser/RISCVISAInfo.cpp
index 3b0cf8fab25f46..517c141c922e7e 100644
--- a/llvm/lib/TargetParser/RISCVISAInfo.cpp
+++ b/llvm/lib/TargetParser/RISCVISAInfo.cpp
@@ -478,9 +478,7 @@ RISCVISAInfo::parseNormalizedArchString(StringRef Arch) {
"failed to parse major version number");
ISAInfo->addExtension(ExtName, {MajorVersion, MinorVersion});
}
- ISAInfo->updateFLen();
- ISAInfo->updateMinVLen();
- ISAInfo->updateMaxELen();
+ ISAInfo->updateImpliedLengths();
return std::move(ISAInfo);
}
@@ -907,28 +905,14 @@ void RISCVISAInfo::updateCombination() {
} while (MadeChange);
}
-void RISCVISAInfo::updateFLen() {
- FLen = 0;
+void RISCVISAInfo::updateImpliedLengths() {
+ assert(FLen == 0);
// TODO: Handle q extension.
if (Exts.count("d"))
FLen = 64;
else if (Exts.count("f"))
FLen = 32;
-}
-
-void RISCVISAInfo::updateMinVLen() {
- for (auto const &Ext : Exts) {
- StringRef ExtName = Ext.first;
- bool IsZvlExt = ExtName.consume_front("zvl") && ExtName.consume_back("b");
- if (IsZvlExt) {
- unsigned ZvlLen;
- if (!ExtName.getAsInteger(10, ZvlLen))
- MinVLen = std::max(MinVLen, ZvlLen);
- }
- }
-}
-void RISCVISAInfo::updateMaxELen() {
assert(MaxELenFp == 0 && MaxELen == 0);
if (Exts.count("v")) {
MaxELenFp = std::max(MaxELenFp, 64u);
@@ -953,6 +937,17 @@ void RISCVISAInfo::updateMaxELen() {
MaxELen = std::max(MaxELen, ZveELen);
}
}
+
+ // FIXME: Merge these loops.
+ for (auto const &Ext : Exts) {
+ StringRef ExtName = Ext.first;
+ bool IsZvlExt = ExtName.consume_front("zvl") && ExtName.consume_back("b");
+ if (IsZvlExt) {
+ unsigned ZvlLen;
+ if (!ExtName.getAsInteger(10, ZvlLen))
+ MinVLen = std::max(MinVLen, ZvlLen);
+ }
+ }
}
std::string RISCVISAInfo::toString() const {
@@ -976,9 +971,7 @@ llvm::Expected<std::unique_ptr<RISCVISAInfo>>
RISCVISAInfo::postProcessAndChecking(std::unique_ptr<RISCVISAInfo> &&ISAInfo) {
ISAInfo->updateImplication();
ISAInfo->updateCombination();
- ISAInfo->updateFLen();
- ISAInfo->updateMinVLen();
- ISAInfo->updateMaxELen();
+ ISAInfo->updateImpliedLengths();
if (Error Result = ISAInfo->checkDependency())
return std::move(Result);
More information about the llvm-commits
mailing list