macro_rules! is_aarch64_feature_detected {
("neon") => { ... };
("pmull") => { ... };
("fp") => { ... };
("aes") => { ... };
("bf16") => { ... };
("bti") => { ... };
("crc") => { ... };
("cssc") => { ... };
("dit") => { ... };
("dpb") => { ... };
("dpb2") => { ... };
("dotprod") => { ... };
("ecv") => { ... };
("f32mm") => { ... };
("f64mm") => { ... };
("faminmax") => { ... };
("fcma") => { ... };
("fhm") => { ... };
("flagm") => { ... };
("flagm2") => { ... };
("fp16") => { ... };
("fp8") => { ... };
("fp8dot2") => { ... };
("fp8dot4") => { ... };
("fp8fma") => { ... };
("fpmr") => { ... };
("frintts") => { ... };
("hbc") => { ... };
("i8mm") => { ... };
("jsconv") => { ... };
("lse") => { ... };
("lse128") => { ... };
("lse2") => { ... };
("lut") => { ... };
("mops") => { ... };
("mte") => { ... };
("paca") => { ... };
("pacg") => { ... };
("pauth-lr") => { ... };
("rand") => { ... };
("rcpc") => { ... };
("rcpc2") => { ... };
("rcpc3") => { ... };
("rdm") => { ... };
("sb") => { ... };
("sha2") => { ... };
("sha3") => { ... };
("sm4") => { ... };
("sme") => { ... };
("sme2") => { ... };
("sme2p1") => { ... };
("sme-b16b16") => { ... };
("sme-f16f16") => { ... };
("sme-f64f64") => { ... };
("sme-f8f16") => { ... };
("sme-f8f32") => { ... };
("sme-fa64") => { ... };
("sme-i16i64") => { ... };
("sme-lutv2") => { ... };
("ssbs") => { ... };
("ssve-fp8dot2") => { ... };
("ssve-fp8dot4") => { ... };
("ssve-fp8fma") => { ... };
("sve") => { ... };
("sve2") => { ... };
("sve2p1") => { ... };
("sve2-aes") => { ... };
("sve-b16b16") => { ... };
("sve2-bitperm") => { ... };
("sve2-sha3") => { ... };
("sve2-sm4") => { ... };
("tme") => { ... };
("wfxt") => { ... };
("asimd") => { ... };
("ras") => { ... };
("v8.1a") => { ... };
("v8.2a") => { ... };
("v8.3a") => { ... };
("v8.4a") => { ... };
("v8.5a") => { ... };
("v8.6a") => { ... };
("v8.7a") => { ... };
("v8.8a") => { ... };
("v8.9a") => { ... };
("v9.1a") => { ... };
("v9.2a") => { ... };
("v9.3a") => { ... };
("v9.4a") => { ... };
("v9.5a") => { ... };
("v9a") => { ... };
($t:tt,) => { ... };
($t:tt) => { ... };
}
Check for the presence of a CPU feature at runtime.
When the feature is known to be enabled at compile time (e.g. via -Ctarget-feature) the macro expands to true.
This macro takes one argument which is a string literal of the feature being tested for. The feature names are mostly taken from their FEAT_* definitions in the ARM Architecture Reference Manual.
Currently most features are only supported on linux-based platforms: on other platforms the runtime check will always return false.
"aes" - FEAT_AES & FEAT_PMULL"asimd" or “neon” - FEAT_AdvSIMD"bf16" - FEAT_BF16"bti" - FEAT_BTI"crc" - FEAT_CRC"cssc" - FEAT_CSSC"dit" - FEAT_DIT"dotprod" - FEAT_DotProd"dpb" - FEAT_DPB"dpb2" - FEAT_DPB2"ecv" - FEAT_ECV"f32mm" - FEAT_F32MM"f64mm" - FEAT_F64MM"faminmax" - FEAT_FAMINMAX"fcma" - FEAT_FCMA"fhm" - FEAT_FHM"flagm" - FEAT_FLAGM"flagm2" - FEAT_FLAGM2"fp" - FEAT_FP"fp16" - FEAT_FP16"fp8" - FEAT_FP8"fp8dot2" - FEAT_FP8DOT2"fp8dot4" - FEAT_FP8DOT4"fp8fma" - FEAT_FP8FMA"fpmr" - FEAT_FPMR"frintts" - FEAT_FRINTTS"hbc" - FEAT_HBC"i8mm" - FEAT_I8MM"jsconv" - FEAT_JSCVT"lse" - FEAT_LSE"lse128" - FEAT_LSE128"lse2" - FEAT_LSE2"lut" - FEAT_LUT"mops" - FEAT_MOPS"mte" - FEAT_MTE & FEAT_MTE2"paca" - FEAT_PAuth (address authentication)"pacg" - FEAT_Pauth (generic authentication)"pauth-lr" - FEAT_PAuth_LR"pmull" - FEAT_PMULL"rand" - FEAT_RNG"rcpc" - FEAT_LRCPC"rcpc2" - FEAT_LRCPC2"rcpc3" - FEAT_LRCPC3"rdm" - FEAT_RDM"sb" - FEAT_SB"sha2" - FEAT_SHA1 & FEAT_SHA256"sha3" - FEAT_SHA512 & FEAT_SHA3"sm4" - FEAT_SM3 & FEAT_SM4"sme" - FEAT_SME"sme-b16b16" - FEAT_SME_B16B16"sme-f16f16" - FEAT_SME_F16F16"sme-f64f64" - FEAT_SME_F64F64"sme-f8f16" - FEAT_SME_F8F16"sme-f8f32" - FEAT_SME_F8F32"sme-fa64" - FEAT_SME_FA64"sme-i16i64" - FEAT_SME_I16I64"sme-lutv2" - FEAT_SME_LUTv2"sme2" - FEAT_SME2"sme2p1" - FEAT_SME2p1"ssbs" - FEAT_SSBS & FEAT_SSBS2"ssve-fp8dot2" - FEAT_SSVE_FP8DOT2"ssve-fp8dot4" - FEAT_SSVE_FP8DOT4"ssve-fp8fma" - FEAT_SSVE_FP8FMA"sve" - FEAT_SVE"sve-b16b16" - FEAT_SVE_B16B16 (SVE or SME Z-targeting instructions)"sve2" - FEAT_SVE2"sve2-aes" - FEAT_SVE_AES & FEAT_SVE_PMULL128 (SVE2 AES crypto)"sve2-bitperm" - FEAT_SVE2_BitPerm"sve2-sha3" - FEAT_SVE2_SHA3"sve2-sm4" - FEAT_SVE2_SM4"sve2p1" - FEAT_SVE2p1"tme" - FEAT_TME"wfxt" - FEAT_WFxT
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/arch/macro.is_aarch64_feature_detected.html