Cargo Features
crc-fast has no features set by default.
[dependencies]
crc-fast = { version = "1.0.0", features = ["vpclmulqdq", "optimize_crc32_auto", "optimize_crc32_neon_eor3_v9s3x2e_s3", "optimize_crc32_neon_v3s4x2e_v2", "optimize_crc32_neon_blended", "optimize_crc32_avx512_vpclmulqdq_v3x2", "optimize_crc32_avx512_v4s3x3", "optimize_crc32_sse_v4s3x3"] }
- vpclmulqdq
-
enable VPCLMULQDQ support in Rust for x86_64 using nightly toolchain builds
- optimize_crc32_auto
-
enable using fast-crc32 optimized C implementations for CRC-32/ISCSI and CRC-32/ISO-HDLC, automatically detected
- optimize_crc32_neon_eor3_v9s3x2e_s3
-
the following features enable forcing custom optimized build features (rather than "auto" which attemps to pick the best) for CRC-32/ISCSI and CRC-32/ISO-HDLC calculations, since architecture support and performance varies
aarch64 NEON options - optimize_crc32_neon_v12e_v1 optimize_crc32_neon_v3s4x2e_v2
- optimize_crc32_neon_blended
-
blends eor3_v9s3x2e_s3 for "large" (>1KiB) payloads, and v12e_v1 for "small" ones, which tends to yield the best results on modern aarch64 such as Graviton and Apple Silicon
- optimize_crc32_avx512_vpclmulqdq_v3x2
-
x86 SSE+ options
this will blend automagically for CRC-32/ISO-HDLC which tends to have poor hardware support, but typically great support for CRC-32/ISCSI - optimize_crc32_avx512_v4s3x3
-
non-blended alternatives
- optimize_crc32_sse_v4s3x3