pub mod api;
mod simd;
cfg_select! {
target_arch = "x86_64" => {
mod fallback;
mod sse2;
mod avx2;
mod avx512;
pub(crate) use simd::{HasAvx512, HasAvx2, HasSse2};
pub(crate) use sse2::{Sse1x128, Sse2x128, Sse4x128};
pub(crate) use avx2::{Avx1x256, Avx2x256};
pub(crate) use avx512::{Avx1x512};
pub(crate) use fallback::{Fallback128, Fallback256, Fallback512};
#[cfg(test)]
mod x86_tests;
#[cfg(test)]
pub(crate) use simd::{Avx512, Avx2, Avx, Sse2, Fallback};
},
all(target_arch = "aarch64", any(target_os = "macos", target_os = "ios")) => {
mod neon;
pub(crate) use simd::HasNeon;
pub(crate) use neon::{Neon1x128, Neon2x128, Neon4x128};
}
target_arch = "aarch64" => {
mod fallback;
mod neon;
pub(crate) use simd::HasNeon;
pub(crate) use neon::{Neon1x128, Neon2x128, Neon4x128};
pub(crate) use fallback::{Fallback128, Fallback256, Fallback512};
}
_ => {
mod fallback;
pub(crate) use simd::Fallback;
pub(crate) use fallback::{Fallback128, Fallback256, Fallback512};
}
}
pub use simd::is_hw_accelerated;
pub(crate) use simd::{
Simd, SimdLevel, annotate_with_target_features, with_simd,
};