library/std_detect/README.md
std::detect - Rust's standard library run-time CPU feature detectionThe private std::detect module implements run-time feature detection in Rust's
standard library. This allows detecting whether the CPU the binary runs on
supports certain features, like SIMD instructions.
std::detect APIs are available as part of libstd. Prefer using it via the
standard library than through this crate. Unstable features of std::detect are
available on nightly Rust behind various feature-gates.
If you need run-time feature detection in #[no_std] environments, Rust core
library cannot help you. By design, Rust core is platform independent, but
performing run-time feature detection requires a certain level of cooperation
from the platform.
You can then manually include std_detect as a dependency to get similar
run-time feature detection support than the one offered by Rust's standard
library. We intend to make std_detect more flexible and configurable in this
regard to better serve the needs of #[no_std] targets.
All x86/x86_64 targets are supported on all platforms by querying the
cpuid instruction directly for the features supported by the hardware and
the operating system. std_detect assumes that the binary is a user-space
application.
Linux/Android:
arm{32, 64}, mips{32,64}{,el}, powerpc{32,64}{,le}, loongarch{32,64}, s390x:
std_detect supports these on Linux by querying ELF auxiliary vectors (using getauxval
when available), and if that fails, by querying /proc/self/auxv.arm64: partial support for doing run-time feature detection by directly
querying mrs is implemented for Linux >= 4.11, but not enabled by default.riscv{32,64}:
std_detect supports these on Linux by querying riscv_hwprobe, and
by querying ELF auxiliary vectors (using getauxval when available).FreeBSD:
arm32, powerpc64: std_detect supports these on FreeBSD by querying ELF
auxiliary vectors using elf_aux_info.arm64: run-time feature detection is implemented by directly querying mrs.OpenBSD:
powerpc64: std_detect supports these on OpenBSD by querying ELF auxiliary
vectors using elf_aux_info.arm64: run-time feature detection is implemented by querying sysctl.Windows:
arm64: run-time feature detection is implemented by querying IsProcessorFeaturePresent.This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in std_detect by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.