pub use kernels::REFERENCE;
use crate::checksum::common::kernels;
pub const PORTABLE_SLICE8: &str = kernels::PORTABLE_SLICE8;
#[cfg(target_arch = "x86_64")]
pub mod x86_64 {
use super::super::x86_64 as arch;
use crate::checksum::dispatchers::Crc16Fn;
pub const CCITT_PCLMUL: [Crc16Fn; 5] = [
arch::crc16_ccitt_pclmul_safe,
arch::crc16_ccitt_pclmul_2way_safe,
arch::crc16_ccitt_pclmul_4way_safe,
arch::crc16_ccitt_pclmul_7way_safe,
arch::crc16_ccitt_pclmul_8way_safe,
];
pub const CCITT_PCLMUL_SMALL_KERNEL: Crc16Fn = arch::crc16_ccitt_pclmul_small_safe;
pub const CCITT_VPCLMUL: [Crc16Fn; 5] = [
arch::crc16_ccitt_vpclmul_safe,
arch::crc16_ccitt_vpclmul_2way_safe,
arch::crc16_ccitt_vpclmul_4way_safe,
arch::crc16_ccitt_vpclmul_7way_safe,
arch::crc16_ccitt_vpclmul_8way_safe,
];
pub const IBM_PCLMUL: [Crc16Fn; 5] = [
arch::crc16_ibm_pclmul_safe,
arch::crc16_ibm_pclmul_2way_safe,
arch::crc16_ibm_pclmul_4way_safe,
arch::crc16_ibm_pclmul_7way_safe,
arch::crc16_ibm_pclmul_8way_safe,
];
pub const IBM_PCLMUL_SMALL_KERNEL: Crc16Fn = arch::crc16_ibm_pclmul_small_safe;
pub const IBM_VPCLMUL: [Crc16Fn; 5] = [
arch::crc16_ibm_vpclmul_safe,
arch::crc16_ibm_vpclmul_2way_safe,
arch::crc16_ibm_vpclmul_4way_safe,
arch::crc16_ibm_vpclmul_7way_safe,
arch::crc16_ibm_vpclmul_8way_safe,
];
}
#[cfg(target_arch = "aarch64")]
pub mod aarch64 {
use super::super::aarch64 as arch;
use crate::checksum::dispatchers::Crc16Fn;
pub const CCITT_PMULL: [Crc16Fn; 5] = [
arch::crc16_ccitt_pmull_safe,
arch::crc16_ccitt_pmull_2way_safe,
arch::crc16_ccitt_pmull_3way_safe,
arch::crc16_ccitt_pmull_3way_safe, arch::crc16_ccitt_pmull_3way_safe, ];
#[cfg(all(not(miri), any(target_os = "linux", target_os = "android")))]
pub const CCITT_PMULL_EOR3: [Crc16Fn; 5] = [
arch::crc16_ccitt_pmull_eor3_safe,
arch::crc16_ccitt_pmull_eor3_2way_safe,
arch::crc16_ccitt_pmull_eor3_3way_safe,
arch::crc16_ccitt_pmull_eor3_3way_safe, arch::crc16_ccitt_pmull_eor3_3way_safe, ];
pub const CCITT_PMULL_SMALL_KERNEL: Crc16Fn = arch::crc16_ccitt_pmull_small_safe;
pub const IBM_PMULL: [Crc16Fn; 5] = [
arch::crc16_ibm_pmull_safe,
arch::crc16_ibm_pmull_2way_safe,
arch::crc16_ibm_pmull_3way_safe,
arch::crc16_ibm_pmull_3way_safe, arch::crc16_ibm_pmull_3way_safe, ];
#[cfg(all(not(miri), any(target_os = "linux", target_os = "android")))]
pub const IBM_PMULL_EOR3: [Crc16Fn; 5] = [
arch::crc16_ibm_pmull_eor3_safe,
arch::crc16_ibm_pmull_eor3_2way_safe,
arch::crc16_ibm_pmull_eor3_3way_safe,
arch::crc16_ibm_pmull_eor3_3way_safe, arch::crc16_ibm_pmull_eor3_3way_safe, ];
pub const IBM_PMULL_SMALL_KERNEL: Crc16Fn = arch::crc16_ibm_pmull_small_safe;
}
#[cfg(target_arch = "powerpc64")]
pub mod power {
use super::super::power as arch;
use crate::checksum::dispatchers::Crc16Fn;
pub const CCITT_VPMSUM: [Crc16Fn; 5] = [
arch::crc16_ccitt_vpmsum_safe,
arch::crc16_ccitt_vpmsum_2way_safe,
arch::crc16_ccitt_vpmsum_4way_safe,
arch::crc16_ccitt_vpmsum_8way_safe,
arch::crc16_ccitt_vpmsum_8way_safe,
];
pub const IBM_VPMSUM: [Crc16Fn; 5] = [
arch::crc16_ibm_vpmsum_safe,
arch::crc16_ibm_vpmsum_2way_safe,
arch::crc16_ibm_vpmsum_4way_safe,
arch::crc16_ibm_vpmsum_8way_safe,
arch::crc16_ibm_vpmsum_8way_safe,
];
}
#[cfg(target_arch = "s390x")]
pub mod s390x {
use super::super::s390x as arch;
use crate::checksum::dispatchers::Crc16Fn;
pub const CCITT_VGFM: [Crc16Fn; 5] = [
arch::crc16_ccitt_vgfm_safe,
arch::crc16_ccitt_vgfm_2way_safe,
arch::crc16_ccitt_vgfm_4way_safe,
arch::crc16_ccitt_vgfm_4way_safe,
arch::crc16_ccitt_vgfm_4way_safe,
];
pub const IBM_VGFM: [Crc16Fn; 5] = [
arch::crc16_ibm_vgfm_safe,
arch::crc16_ibm_vgfm_2way_safe,
arch::crc16_ibm_vgfm_4way_safe,
arch::crc16_ibm_vgfm_4way_safe,
arch::crc16_ibm_vgfm_4way_safe,
];
}
#[cfg(target_arch = "riscv64")]
#[allow(dead_code)]
pub mod riscv64 {
use super::super::riscv64 as arch;
use crate::checksum::dispatchers::Crc16Fn;
pub const ZBC_NAMES: &[&str] = &[
"riscv64/zbc",
"riscv64/zbc-2way",
"riscv64/zbc-4way",
"riscv64/zbc-4way",
"riscv64/zbc-4way",
];
pub const ZVBC_NAMES: &[&str] = &[
"riscv64/zvbc",
"riscv64/zvbc-2way",
"riscv64/zvbc-4way",
"riscv64/zvbc-4way",
"riscv64/zvbc-4way",
];
pub const CCITT_ZBC: [Crc16Fn; 5] = [
arch::crc16_ccitt_zbc_safe,
arch::crc16_ccitt_zbc_2way_safe,
arch::crc16_ccitt_zbc_4way_safe,
arch::crc16_ccitt_zbc_4way_safe,
arch::crc16_ccitt_zbc_4way_safe,
];
pub const CCITT_ZVBC: [Crc16Fn; 5] = [
arch::crc16_ccitt_zvbc_safe,
arch::crc16_ccitt_zvbc_2way_safe,
arch::crc16_ccitt_zvbc_4way_safe,
arch::crc16_ccitt_zvbc_4way_safe,
arch::crc16_ccitt_zvbc_4way_safe,
];
pub const IBM_ZBC: [Crc16Fn; 5] = [
arch::crc16_ibm_zbc_safe,
arch::crc16_ibm_zbc_2way_safe,
arch::crc16_ibm_zbc_4way_safe,
arch::crc16_ibm_zbc_4way_safe,
arch::crc16_ibm_zbc_4way_safe,
];
pub const IBM_ZVBC: [Crc16Fn; 5] = [
arch::crc16_ibm_zvbc_safe,
arch::crc16_ibm_zvbc_2way_safe,
arch::crc16_ibm_zvbc_4way_safe,
arch::crc16_ibm_zvbc_4way_safe,
arch::crc16_ibm_zvbc_4way_safe,
];
}