#[cfg(all(target_arch = "x86_64", feature = "simd"))]
mod avx2;
mod rust;
#[cfg(test)]
mod tests;
use std::num::NonZeroUsize;
use crate::util::Pixel;
#[inline]
pub fn reduce_bilinear<T: Pixel>(
dest: &mut [T],
src: &[T],
dest_pitch: NonZeroUsize,
src_pitch: NonZeroUsize,
dest_width: NonZeroUsize,
dest_height: NonZeroUsize,
) {
#[cfg(all(target_arch = "x86_64", feature = "simd"))]
if cpudetect::x86_64::is_x86_64_v3_compatible() {
unsafe {
avx2::reduce_bilinear(dest, src, dest_pitch, src_pitch, dest_width, dest_height);
}
return;
}
rust::reduce_bilinear(dest, src, dest_pitch, src_pitch, dest_width, dest_height);
}