Skip to content

Commit c6726b8

Browse files
authored
Rollup merge of rust-lang#146397 - pthariensflame:patch-1, r=Amanieu
std_detect on Darwin AArch64: update features Synchronizes the list (and re-sorts it alphabetically by `FEAT` name) with the initial release version of macOS Tahoe.
2 parents 223e5d7 + d49f6a7 commit c6726b8

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

library/std_detect/src/detect/os/darwin/aarch64.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,31 +37,34 @@ pub(crate) fn detect_features() -> cache::Initializer {
3737
// Armv8.0 features not using the standard identifiers
3838
let fp = _sysctlbyname(c"hw.optional.floatingpoint");
3939
let asimd = _sysctlbyname(c"hw.optional.AdvSIMD");
40-
let crc = _sysctlbyname(c"hw.optional.armv8_crc32");
40+
let crc_old = _sysctlbyname(c"hw.optional.armv8_crc32");
4141

4242
// Armv8 and Armv9 features using the standard identifiers
4343
let aes = _sysctlbyname(c"hw.optional.arm.FEAT_AES");
4444
let bf16 = _sysctlbyname(c"hw.optional.arm.FEAT_BF16");
4545
let bti = _sysctlbyname(c"hw.optional.arm.FEAT_BTI");
46+
let crc = _sysctlbyname(c"hw.optional.arm.FEAT_CRC32");
4647
let cssc = _sysctlbyname(c"hw.optional.arm.FEAT_CSSC");
4748
let dit = _sysctlbyname(c"hw.optional.arm.FEAT_DIT");
49+
let dotprod = _sysctlbyname(c"hw.optional.arm.FEAT_DotProd");
4850
let dpb = _sysctlbyname(c"hw.optional.arm.FEAT_DPB");
4951
let dpb2 = _sysctlbyname(c"hw.optional.arm.FEAT_DPB2");
50-
let dotprod = _sysctlbyname(c"hw.optional.arm.FEAT_DotProd");
5152
let ecv = _sysctlbyname(c"hw.optional.arm.FEAT_ECV");
5253
let fcma = _sysctlbyname(c"hw.optional.arm.FEAT_FCMA");
5354
let fhm = _sysctlbyname(c"hw.optional.arm.FEAT_FHM");
54-
let fp16 = _sysctlbyname(c"hw.optional.arm.FEAT_FP16");
55-
let frintts = _sysctlbyname(c"hw.optional.arm.FEAT_FRINTTS");
5655
let flagm = _sysctlbyname(c"hw.optional.arm.FEAT_FlagM");
5756
let flagm2 = _sysctlbyname(c"hw.optional.arm.FEAT_FlagM2");
57+
let fp16 = _sysctlbyname(c"hw.optional.arm.FEAT_FP16");
58+
let frintts = _sysctlbyname(c"hw.optional.arm.FEAT_FRINTTS");
5859
let hbc = _sysctlbyname(c"hw.optional.arm.FEAT_HBC");
5960
let i8mm = _sysctlbyname(c"hw.optional.arm.FEAT_I8MM");
6061
let jsconv = _sysctlbyname(c"hw.optional.arm.FEAT_JSCVT");
6162
let rcpc = _sysctlbyname(c"hw.optional.arm.FEAT_LRCPC");
6263
let rcpc2 = _sysctlbyname(c"hw.optional.arm.FEAT_LRCPC2");
6364
let lse = _sysctlbyname(c"hw.optional.arm.FEAT_LSE");
6465
let lse2 = _sysctlbyname(c"hw.optional.arm.FEAT_LSE2");
66+
let mte = _sysctlbyname(c"hw.optional.arm.FEAT_MTE");
67+
let mte2 = _sysctlbyname(c"hw.optional.arm.FEAT_MTE2");
6568
let pauth = _sysctlbyname(c"hw.optional.arm.FEAT_PAuth");
6669
let pmull = _sysctlbyname(c"hw.optional.arm.FEAT_PMULL");
6770
let rdm = _sysctlbyname(c"hw.optional.arm.FEAT_RDM");
@@ -72,6 +75,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
7275
let sha512 = _sysctlbyname(c"hw.optional.arm.FEAT_SHA512");
7376
let sme = _sysctlbyname(c"hw.optional.arm.FEAT_SME");
7477
let sme2 = _sysctlbyname(c"hw.optional.arm.FEAT_SME2");
78+
let sme2p1 = _sysctlbyname(c"hw.optional.arm.FEAT_SME2p1");
7579
let sme_f64f64 = _sysctlbyname(c"hw.optional.arm.FEAT_SME_F64F64");
7680
let sme_i16i64 = _sysctlbyname(c"hw.optional.arm.FEAT_SME_I16I64");
7781
let ssbs = _sysctlbyname(c"hw.optional.arm.FEAT_SSBS");
@@ -87,6 +91,12 @@ pub(crate) fn detect_features() -> cache::Initializer {
8791
let ebf16 = _sysctlbyname(c"hw.optional.arm.FEAT_EBF16");
8892
let fpac = _sysctlbyname(c"hw.optional.arm.FEAT_FPAC");
8993
let fpaccombine = _sysctlbyname(c"hw.optional.arm.FEAT_FPACCOMBINE");
94+
let mte_async = _sysctlbyname(c"hw.optional.arm.FEAT_MTE_ASYNC");
95+
let mte_canonical_tags = _sysctlbyname(c"hw.optional.arm.FEAT_MTE_CANONICAL_TAGS");
96+
let mte_no_address_tags = _sysctlbyname(c"hw.optional.arm.FEAT_MTE_NO_ADDRESS_TAGS");
97+
let mte_store_only = _sysctlbyname(c"hw.optional.arm.FEAT_MTE_STORE_ONLY");
98+
let mte3 = _sysctlbyname(c"hw.optional.arm.FEAT_MTE3");
99+
let mte4 = _sysctlbyname(c"hw.optional.arm.FEAT_MTE4");
90100
let pacimp = _sysctlbyname(c"hw.optional.arm.FEAT_PACIMP");
91101
let pauth2 = _sysctlbyname(c"hw.optional.arm.FEAT_PAuth2");
92102
let rpres = _sysctlbyname(c"hw.optional.arm.FEAT_RPRES");
@@ -111,7 +121,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
111121
enable_feature(Feature::asimd, asimd);
112122
enable_feature(Feature::bf16, bf16);
113123
enable_feature(Feature::bti, bti);
114-
enable_feature(Feature::crc, crc);
124+
enable_feature(Feature::crc, crc_old || crc);
115125
enable_feature(Feature::cssc, cssc);
116126
enable_feature(Feature::dit, dit);
117127
enable_feature(Feature::dotprod, dotprod);
@@ -130,6 +140,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
130140
enable_feature(Feature::jsconv, jsconv);
131141
enable_feature(Feature::lse, lse);
132142
enable_feature(Feature::lse2, lse2);
143+
enable_feature(Feature::mte, mte && mte2);
133144
enable_feature(Feature::paca, pauth);
134145
enable_feature(Feature::pacg, pauth);
135146
enable_feature(Feature::pmull, aes && pmull);
@@ -141,6 +152,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
141152
enable_feature(Feature::sha3, sha512 && sha3 && asimd);
142153
enable_feature(Feature::sme, sme);
143154
enable_feature(Feature::sme2, sme2);
155+
enable_feature(Feature::sme2p1, sme2p1);
144156
enable_feature(Feature::sme_f64f64, sme_f64f64);
145157
enable_feature(Feature::sme_i16i64, sme_i16i64);
146158
enable_feature(Feature::ssbs, ssbs);

0 commit comments

Comments
 (0)