cpufeatures 0.2.16

Lightweight runtime CPU feature detection for aarch64, loongarch64, and x86/x86_64 targets, with no_std support and support for mobile targets including Android and iOS
Documentation

RustCrypto: CPU Feature Detection

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

Lightweight and efficient runtime CPU feature detection for aarch64, loongarch64, and x86/x86_64 targets.

Supports no_std as well as mobile targets including iOS and Android, providing an alternative to the std-dependent is_x86_feature_detected! macro.

Documentation

Supported target architectures

*NOTE: target features with an asterisk are unstable (nightly-only) and subject to change to match upstream name changes in the Rust standard library.

aarch64

Linux, iOS, and macOS/ARM only (ARM64 does not support OS-independent feature detection)

Target features:

  • aes*
  • sha2*
  • sha3*

loongarch64

Linux only (LoongArch64 does not support OS-independent feature detection)

Target features:

  • lam*
  • ual*
  • fpu*
  • lsx*
  • lasx*
  • crc32*
  • complex*
  • crypto*
  • lvz*
  • lbt.x86*
  • lbt.arm*
  • lbt.mips*
  • ptw*

x86/x86_64

OS independent and no_std-friendly

Target features:

  • adx
  • aes
  • avx
  • avx2
  • avx512bw*
  • avx512cd*
  • avx512dq*
  • avx512er*
  • avx512f*
  • avx512ifma*
  • avx512pf*
  • avx512vl*
  • avx512vbmi*
  • avx512vbmi2*
  • bmi1
  • bmi2
  • fma,
  • mmx
  • pclmulqdq
  • popcnt
  • rdrand
  • rdseed
  • sgx
  • sha
  • sse
  • sse2
  • sse3
  • sse4.1
  • sse4.2
  • ssse3

If you would like detection support for a target feature which is not on this list, please open a GitHub issue.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.