about summary refs log tree commit diff
path: root/library/std_detect/src
diff options
context:
space:
mode:
authorLaine Taffin Altman <alexanderaltman@me.com>2025-09-09 22:27:37 -0700
committerLaine Taffin Altman <alexanderaltman@me.com>2025-09-13 23:25:29 -0700
commitd8cc5757ba92085c4fe19e86c4293bb619b2385f (patch)
tree2c47cb328925147f1f0a07f213dc100ad27e7b41 /library/std_detect/src
parent60a5372753460ef0db67c2307308a741b17771f3 (diff)
downloadrust-d8cc5757ba92085c4fe19e86c4293bb619b2385f.tar.gz
rust-d8cc5757ba92085c4fe19e86c4293bb619b2385f.zip
std_detect Darwin AArch64: add new-style detection for FEAT_CRC32
Now that this feature has a standard identifier, Darwin has started exposing it accordingly, in addition to the existing less-standard way.  Check both, and enable the `crc` feature if either identifier for it is present to ensure backwards and forwards compatibility.
Diffstat (limited to 'library/std_detect/src')
-rw-r--r--library/std_detect/src/detect/os/darwin/aarch64.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/library/std_detect/src/detect/os/darwin/aarch64.rs b/library/std_detect/src/detect/os/darwin/aarch64.rs
index f5409361d93..89521c1c6af 100644
--- a/library/std_detect/src/detect/os/darwin/aarch64.rs
+++ b/library/std_detect/src/detect/os/darwin/aarch64.rs
@@ -37,12 +37,13 @@ pub(crate) fn detect_features() -> cache::Initializer {
     // Armv8.0 features not using the standard identifiers
     let fp = _sysctlbyname(c"hw.optional.floatingpoint");
     let asimd = _sysctlbyname(c"hw.optional.AdvSIMD");
-    let crc = _sysctlbyname(c"hw.optional.armv8_crc32");
+    let crc_old = _sysctlbyname(c"hw.optional.armv8_crc32");
 
     // Armv8 and Armv9 features using the standard identifiers
     let aes = _sysctlbyname(c"hw.optional.arm.FEAT_AES");
     let bf16 = _sysctlbyname(c"hw.optional.arm.FEAT_BF16");
     let bti = _sysctlbyname(c"hw.optional.arm.FEAT_BTI");
+    let crc = _sysctlbyname(c"hw.optional.arm.FEAT_CRC32");
     let cssc = _sysctlbyname(c"hw.optional.arm.FEAT_CSSC");
     let dit = _sysctlbyname(c"hw.optional.arm.FEAT_DIT");
     let dpb = _sysctlbyname(c"hw.optional.arm.FEAT_DPB");
@@ -111,7 +112,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
     enable_feature(Feature::asimd, asimd);
     enable_feature(Feature::bf16, bf16);
     enable_feature(Feature::bti, bti);
-    enable_feature(Feature::crc, crc);
+    enable_feature(Feature::crc, crc_old || crc);
     enable_feature(Feature::cssc, cssc);
     enable_feature(Feature::dit, dit);
     enable_feature(Feature::dotprod, dotprod);