[PATCH] D115921: [RISCV] Refactor the RISCV ISA extension info and target features to support multiple extension version
Craig Topper via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 23 08:20:05 PST 2021
craig.topper added inline comments.
================
Comment at: llvm/include/llvm/Support/RISCVISAInfo.h:33
+ bool operator!=(const RISCVExtensionVersion &Version) const {
+ return !operator==(Version);
+ }
----------------
Use `!(*this == Version)`
================
Comment at: llvm/lib/Support/RISCVISAInfo.cpp:154
-static Optional<RISCVExtensionVersion> isExperimentalExtension(StringRef Ext) {
- auto ExtIterator =
- llvm::find_if(SupportedExperimentalExtensions, FindByName(Ext));
- if (ExtIterator == std::end(SupportedExperimentalExtensions))
- return None;
+static std::vector<RISCVExtensionVersion> isExperimentalExtension(StringRef Ext) {
+ std::vector<RISCVExtensionVersion> Result;
----------------
This name was already bad and getting worse. It doesn't return a bool so shouldn't start with `is`. It should be called something like `getExperimentalExtensionVersions`.
================
Comment at: llvm/lib/Support/RISCVISAInfo.cpp:341
+ addVersionSuffix("experimental-", "zvlsseg", Major, Minor));
+ } else if (isExperimentalExtension(ExtName).size()) {
+ Features.push_back(
----------------
Use `!isExperimentalExtension(ExtName).empty()`
================
Comment at: llvm/lib/Support/RISCVISAInfo.cpp:404
+ auto ExperimentalExtension = isExperimentalExtension(Ext);
+ if (ExperimentalExtension.size()) {
if (!EnableExperimentalExtension) {
----------------
!empty
================
Comment at: llvm/lib/Support/RISCVISAInfo.cpp:481
+ auto Info = isSupportedExtensionFeature(ExtName);
+ if(!Info)
continue;
----------------
Please fix this clang-format issue
================
Comment at: llvm/lib/Target/RISCV/RISCVSubtarget.cpp:56
+void RISCVSubtarget::initializeEnvironment() {
+ StdExtM = {0, 0};
+ StdExtA = {0, 0};
----------------
Add a reset method?
================
Comment at: llvm/lib/Target/RISCV/RISCVSubtarget.cpp:91
StringRef ABIName) {
+ initializeEnvironment();
// Determine default and user-specified characteristics
----------------
Why do we need to initialize things now but didn't before?
================
Comment at: llvm/lib/Target/RISCV/RISCVSubtarget.h:38
virtual void anchor();
- bool HasStdExtM = false;
- bool HasStdExtA = false;
- bool HasStdExtF = false;
- bool HasStdExtD = false;
- bool HasStdExtC = false;
- bool HasStdExtZba = false;
- bool HasStdExtZbb = false;
- bool HasStdExtZbc = false;
- bool HasStdExtZbe = false;
- bool HasStdExtZbf = false;
- bool HasStdExtZbm = false;
- bool HasStdExtZbp = false;
- bool HasStdExtZbr = false;
- bool HasStdExtZbs = false;
- bool HasStdExtZbt = false;
- bool HasStdExtV = false;
- bool HasStdExtZvlsseg = false;
- bool HasStdExtZfhmin = false;
- bool HasStdExtZfh = false;
+ RISCVExtensionVersion StdExtM = {0, 0};
+ RISCVExtensionVersion StdExtA = {0, 0};
----------------
Can we have a default constructor for RISCVExtensionVersion?
================
Comment at: llvm/lib/Target/RISCV/RISCVSubtarget.h:106
bool enableMachineScheduler() const override { return true; }
- bool hasStdExtM() const { return HasStdExtM; }
- bool hasStdExtA() const { return HasStdExtA; }
- bool hasStdExtF() const { return HasStdExtF; }
- bool hasStdExtD() const { return HasStdExtD; }
- bool hasStdExtC() const { return HasStdExtC; }
- bool hasStdExtZba() const { return HasStdExtZba; }
- bool hasStdExtZbb() const { return HasStdExtZbb; }
- bool hasStdExtZbc() const { return HasStdExtZbc; }
- bool hasStdExtZbe() const { return HasStdExtZbe; }
- bool hasStdExtZbf() const { return HasStdExtZbf; }
- bool hasStdExtZbm() const { return HasStdExtZbm; }
- bool hasStdExtZbp() const { return HasStdExtZbp; }
- bool hasStdExtZbr() const { return HasStdExtZbr; }
- bool hasStdExtZbs() const { return HasStdExtZbs; }
- bool hasStdExtZbt() const { return HasStdExtZbt; }
- bool hasStdExtV() const { return HasStdExtV; }
- bool hasStdExtZvlsseg() const { return HasStdExtZvlsseg; }
- bool hasStdExtZfhmin() const { return HasStdExtZfhmin; }
- bool hasStdExtZfh() const { return HasStdExtZfh; }
+ bool hasStdExtM() const { return StdExtM != RISCVExtensionVersion{0, 0}; }
+ bool hasStdExtA() const { return StdExtA != RISCVExtensionVersion{0, 0}; }
----------------
Add a helper method to RISCVExtensionVersion to check for a null version?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115921/new/
https://reviews.llvm.org/D115921
More information about the cfe-commits
mailing list