hermes_simd/dispatch/argmax.rs
1//! Generic runtime-dispatch argmax kernel.
2//!
3//! Returns the first maximum, or `None` for empty or NaN-containing slices.
4
5use hermes_simd_core::{
6 align::Unaligned, arch::SimdArch, execution::Unmasked, kernel::SimdKernel, scalar::Scalar,
7 view::SimdView,
8};
9use hermes_simd_macros::runtime_dispatch;
10
11#[allow(dead_code)]
12#[runtime_dispatch(avx512f, avx2, neon, scalar)]
13pub(super) fn dispatch_argmax_kernel<T, A>(data: &[T]) -> Option<(usize, T)>
14where
15 T: Scalar,
16 A: SimdArch + SimdKernel<T>,
17{
18 SimdView::<T, A, Unaligned, Unmasked, &[T]>::new(data)?.argmax()
19}