use crate::{Alphabet, DecodeError, scalar};
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) enum DecodeBackend {
Scalar,
}
#[must_use]
pub(crate) fn active_decode_backend() -> DecodeBackend {
#[cfg(feature = "simd")]
match crate::simd::active_backend() {
crate::simd::ActiveBackend::Scalar => {}
#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
crate::simd::ActiveBackend::Avx512Vbmi => {}
#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
crate::simd::ActiveBackend::Avx2 => {}
#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
crate::simd::ActiveBackend::Ssse3Sse41 => {}
#[cfg(all(feature = "std", target_arch = "aarch64"))]
crate::simd::ActiveBackend::Neon => {}
}
DecodeBackend::Scalar
}
pub(crate) fn decode_slice<A, const PAD: bool>(
input: &[u8],
output: &mut [u8],
) -> Result<usize, DecodeError>
where
A: Alphabet,
{
match active_decode_backend() {
DecodeBackend::Scalar => scalar::decode_slice::<A, PAD>(input, output),
}
}