Crates.io | crc8-smbus-fast |
lib.rs | crc8-smbus-fast |
version | 0.4.0 |
source | src |
created_at | 2024-10-20 20:40:13.005293 |
updated_at | 2024-11-07 23:12:36.163109 |
description | SIMD-powered implementation of CRC-8/SMBUS (a.k.a. CRC-8) |
homepage | |
repository | https://github.com/TobiasBengtsson/crc-fast-rs |
max_upload_size | |
id | 1416616 |
size | 8,017 |
SIMD implementation of CRC-8/SMBUS (a.k.a. CRC-8), with table and loop fallbacks.
This crate was generated by crc-fast-rs.
TL;DR: uses SIMD if available, otherwise falls back seamlessly to a lookup table algorithm.
hash
, will use SIMD if the CPU is capable
pclmulqdq
sse4.1
nano
aes
hash
with an incompatible CPU the fallback algorithm will be
invoked. If the table-fallback
feature is active the fallback is based on
a lookup table, otherwise a simple loop (slowest option). Deactivating
table-fallback
(default enabled) can be useful when memory is very scarce,
as the lookup table requires a small amount of extra RAM.table-fallback
feature is enabled, it can be manually invoked by
hash_table
(not recommended in the typical case).hash_simple
can be used to force the loop algorithm (also not
recommended in the typical case).let res: u32 = crc8_smbus_fast::hash(&my_binary_slice);
There is no "update"-like functionality yet, since doing this with arbitrarily lengths can be tricky with SIMD and destroy performance.