#cpu #mobile #run-time #aarch64 #detection #x86-64 #features

no-std cpufeatures

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

18 releases

0.2.16 Nov 22, 2024
0.2.14 Sep 6, 2024
0.2.12 Jan 4, 2024
0.2.11 Oct 26, 2023
0.1.5 Jun 22, 2021

#6 in Hardware support

Download history 2119112/week @ 2024-08-21 2019762/week @ 2024-08-28 2236906/week @ 2024-09-04 2106472/week @ 2024-09-11 2158939/week @ 2024-09-18 2329883/week @ 2024-09-25 2655816/week @ 2024-10-02 2695850/week @ 2024-10-09 2764754/week @ 2024-10-16 2261679/week @ 2024-10-23 2142302/week @ 2024-10-30 2178624/week @ 2024-11-06 2348207/week @ 2024-11-13 2375994/week @ 2024-11-20 2094067/week @ 2024-11-27 1989831/week @ 2024-12-04

9,230,831 downloads per month
Used in 24,168 crates (28 directly)

MIT/Apache

27KB
402 lines

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.

Dependencies