simd-adler32 0.1.0

A SIMD-accelerated Adler-32 rolling hash algorithm implementation.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub mod avx2;
pub mod scalar;
pub mod ssse3;

pub type Adler32Imp = fn(u16, u16, &[u8]) -> (u16, u16);

#[inline]
#[allow(non_snake_case)]
pub const fn _MM_SHUFFLE(z: u32, y: u32, x: u32, w: u32) -> i32 {
  ((z << 6) | (y << 4) | (x << 2) | w) as i32
}

pub fn get_imp() -> Adler32Imp {
  avx2::get_imp()
    .or_else(ssse3::get_imp)
    .unwrap_or(scalar::update)
}