Crates.io | crc16-ibm3740-fast |
lib.rs | crc16-ibm3740-fast |
version | 0.4.0 |
source | src |
created_at | 2024-10-20 22:10:22.140464 |
updated_at | 2024-11-07 23:13:37.083664 |
description | SIMD-powered implementation of CRC-16/IBM-3740 (CRC-16/AUTOSAR CRC-16/CCITT-FALSE) |
homepage | |
repository | https://github.com/TobiasBengtsson/crc-fast-rs |
max_upload_size | |
id | 1416688 |
size | 8,134 |
SIMD implementation of CRC-16/IBM-3740 (CRC-16/AUTOSAR CRC-16/CCITT-FALSE), 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 = crc16_ibm3740_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.