Skip to main content

hermes_simd/dispatch/
min.rs

1//! Generic runtime-dispatch min-reduction kernel.
2
3use hermes_simd_core::{
4    align::Unaligned, arch::SimdArch, execution::Unmasked, kernel::SimdKernel, ops::Min,
5    scalar::Scalar, view::SimdView,
6};
7use hermes_simd_macros::runtime_dispatch;
8
9#[runtime_dispatch(avx512f, avx2, neon, scalar)]
10pub(super) fn dispatch_min_kernel<T, A>(data: &[T]) -> T
11where
12    T: Scalar,
13    A: SimdArch + SimdKernel<T>,
14{
15    match SimdView::<T, A, Unaligned, Unmasked, &[T]>::new(data) {
16        Some(v) => v.reduce(Min),
17        None => unsafe { core::hint::unreachable_unchecked() },
18    }
19}