-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[LoongArch] add la v1.1 features for sys::getHostCPUFeatures #115832
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-backend-loongarch @llvm/pr-subscribers-clang-driver Author: None (tangaac) ChangesFull diff: https://github.com/llvm/llvm-project/pull/115832.diff 2 Files Affected:
diff --git a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
index e69a5562137ccd..2dc7550176f5f0 100644
--- a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
@@ -135,8 +135,13 @@ void loongarch::getLoongArchTargetFeatures(const Driver &D,
Features.push_back("+lsx");
std::string ArchName;
- if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
+ if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
ArchName = A->getValue();
+ if (ArchName == "native")
+ for (auto &F : llvm::sys::getHostCPUFeatures())
+ Features.push_back(
+ Args.MakeArgString((F.second ? "+" : "-") + F.first()));
+ }
ArchName = postProcessTargetCPUString(ArchName, Triple);
llvm::LoongArch::getArchFeatures(ArchName, Features);
diff --git a/llvm/lib/TargetParser/Host.cpp b/llvm/lib/TargetParser/Host.cpp
index 58ba2553633221..d0f3bbc26716e7 100644
--- a/llvm/lib/TargetParser/Host.cpp
+++ b/llvm/lib/TargetParser/Host.cpp
@@ -2006,6 +2006,15 @@ const StringMap<bool> sys::getHostCPUFeatures() {
Features["lasx"] = hwcap & (1UL << 5); // HWCAP_LOONGARCH_LASX
Features["lvz"] = hwcap & (1UL << 9); // HWCAP_LOONGARCH_LVZ
+ Features["frecipe"] = cpucfg2 & (1U << 25); // CPUCFG.2.FRECIPE
+ Features["lam-bh"] = cpucfg2 & (1U << 27); // CPUCFG.2.LAM_BH
+
+ // TODO: Need to complete.
+ // Features["div32"] = cpucfg2 & (1U << 26); // CPUCFG.2.DIV32
+ // Features["lamcas"] = cpucfg2 & (1U << 28); // CPUCFG.2.LAMCAS
+ // Features["llacq-screl"] = cpucfg2 & (1U << 29); // CPUCFG.2.LLACQ_SCREL
+ // Features["scq"] = cpucfg2 & (1U << 30); // CPUCFG.2.SCQ
+ // Features["ld-seq-sa"] = cpucfg3 & (1U << 23); // CPUCFG.3.LD_SEQ_SA
return Features;
}
#elif defined(__linux__) && defined(__riscv)
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
10d2d8e
to
3d204da
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add theual
feature in another PR? Thanks.
3d204da
to
3a65187
Compare
3a65187
to
206bfe8
Compare
Co-authored-by: Lu Weining <[email protected]>
c1c2bfc
to
1f35113
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Tips: It's not necessary to use force-push to address review comments. Add new commits and they will be squashed when merge.
Two features (i.e.
frecipe
andlam-bh
) are added tosys.getHostCPUFeatures
. More features will be added in future.In addition, this patch adds the features returned by
sys.getHostCPUFeature
when-march=native
.