[PATCH] D152423: [RISCV] check extension name with version
Piyou Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 7 23:08:14 PDT 2023
BeMg created this revision.
Herald added subscribers: jobnoorman, luke, VincentWu, vkmr, frasercrmck, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, hiraditya, arichardson.
Herald added a project: All.
BeMg requested review of this revision.
Herald added subscribers: llvm-commits, pcwang-thead, eopXD, MaskRay.
Herald added a project: LLVM.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D152423
Files:
llvm/include/llvm/Support/RISCVISAInfo.h
llvm/lib/Support/RISCVISAInfo.cpp
Index: llvm/lib/Support/RISCVISAInfo.cpp
===================================================================
--- llvm/lib/Support/RISCVISAInfo.cpp
+++ llvm/lib/Support/RISCVISAInfo.cpp
@@ -1192,3 +1192,34 @@
}
llvm_unreachable("Invalid XLEN");
}
+
+bool RISCVISAInfo::isSupportedExtensionWithVersion(StringRef Ext) {
+ if (Ext.empty())
+ return false;
+
+ auto Pos = findFirstNonVersionCharacter(Ext) + 1;
+ StringRef Name(Ext.substr(0, Pos));
+ StringRef Vers(Ext.substr(Pos));
+ if (Vers.empty())
+ return false;
+
+ unsigned Major, Minor, ConsumeLength;
+ if (auto E = getExtensionVersion(Name, Vers, Major, Minor, ConsumeLength,
+ true, true)) {
+ consumeError(std::move(E));
+ return false;
+ }
+
+ return true;
+}
+
+std::string RISCVISAInfo::getTargetFeatureFromOneExt(StringRef Ext) {
+ auto Pos = findFirstNonVersionCharacter(Ext) + 1;
+ StringRef Name(Ext.substr(0, Pos));
+
+ if (!isSupportedExtension(Name))
+ return std::string();
+
+ return isExperimentalExtension(Name) ? "experimental-" + Name.str()
+ : Name.str();
+}
\ No newline at end of file
Index: llvm/include/llvm/Support/RISCVISAInfo.h
===================================================================
--- llvm/include/llvm/Support/RISCVISAInfo.h
+++ llvm/include/llvm/Support/RISCVISAInfo.h
@@ -85,10 +85,12 @@
static bool isSupportedExtensionFeature(StringRef Ext);
static bool isSupportedExtension(StringRef Ext);
+ static bool isSupportedExtensionWithVersion(StringRef Ext);
static bool isSupportedExtension(StringRef Ext, unsigned MajorVersion,
unsigned MinorVersion);
static llvm::Expected<std::unique_ptr<RISCVISAInfo>>
postProcessAndChecking(std::unique_ptr<RISCVISAInfo> &&ISAInfo);
+ static std::string getTargetFeatureFromOneExt(StringRef Ext);
private:
RISCVISAInfo(unsigned XLen)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D152423.529508.patch
Type: text/x-patch
Size: 1938 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230608/b9bbe31c/attachment.bin>
More information about the llvm-commits
mailing list