[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