simd_adler32/imp/
mod.rs

1pub mod avx2;
2pub mod avx512;
3pub mod neon;
4pub mod scalar;
5pub mod sse2;
6pub mod ssse3;
7pub mod wasm;
8
9pub type Adler32Imp = fn(u16, u16, &[u8]) -> (u16, u16);
10
11#[inline]
12#[allow(non_snake_case)]
13pub const fn _MM_SHUFFLE(z: u32, y: u32, x: u32, w: u32) -> i32 {
14  ((z << 6) | (y << 4) | (x << 2) | w) as i32
15}
16
17pub fn get_imp() -> Adler32Imp {
18  avx512::get_imp()
19    .or_else(neon::get_imp)
20    .or_else(avx2::get_imp)
21    .or_else(ssse3::get_imp)
22    .or_else(sse2::get_imp)
23    .or_else(wasm::get_imp)
24    .unwrap_or(scalar::update)
25}