[llvm] [AArch64] Improve host feature detection. (PR #160410)
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 22 11:01:44 PDT 2025
================
@@ -2260,20 +2260,80 @@ StringMap<bool> sys::getHostCPUFeatures() {
uint32_t Sha2 = CAP_SHA1 | CAP_SHA2;
Features["aes"] = (crypto & Aes) == Aes;
Features["sha2"] = (crypto & Sha2) == Sha2;
+
+ // SVE support is disabled in for cores which are identified as supporting
+ // SVE; disable SVE if we don't detect support at runtime.
+ if (!Features.contains("sve"))
+ Features["sve"] = false;
#endif
return Features;
}
#elif defined(_WIN32) && (defined(__aarch64__) || defined(_M_ARM64) || \
defined(__arm64ec__) || defined(_M_ARM64EC))
+#ifndef PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 43
+#endif
+#ifndef PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 44
+#endif
+#ifndef PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE 45
+#endif
+#ifndef PF_ARM_SVE_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_SVE_INSTRUCTIONS_AVAILABLE 46
+#endif
+#ifndef PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE 47
+#endif
+#ifndef PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE
+#define PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE 50
+#endif
----------------
efriedma-quic wrote:
The gap is:
```
#define PF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE 48
#define PF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE 49
```
We could add these as a followup. Currently this list matches the set of constants we check in compiler-rt; I'd prefer to keep them in sync.
https://github.com/llvm/llvm-project/pull/160410
More information about the llvm-commits
mailing list