pub enum CpuTier {
Scalar,
Avx2,
Avx512,
Neon,
NeonDotprod,
NeonI8mm,
}Expand description
Ordered CPU capability tier. Higher is more capable.
Ord is derived from declaration order, so within a single architecture the
comparison is meaningful (Scalar < Avx2 < Avx512, Scalar < Neon < NeonDotprod < NeonI8mm). Cross-architecture comparisons are nonsensical but
harmless — only one architecture’s variants are ever produced at runtime.
Variants§
Scalar
Portable scalar reference path. Always available.
Avx2
x86_64 AVX2 + FMA.
Avx512
x86_64 AVX-512 — 512-bit f32 vec_dot for Q8_0/Q4_0 (needs only
avx512f). Produced when the default-on avx512 crate feature is
enabled; disable it for a Rust 1.85-compatible x86 build.
Neon
aarch64 baseline NEON.
NeonDotprod
aarch64 NEON + dotprod (FEAT_DotProd, vdotq_s32).
NeonI8mm
aarch64 NEON + i8mm (FEAT_I8MM, vmmlaq_s32) — Q8_0 GEMM only; other ops
use the dotprod path (i8mm implies dotprod).
Implementations§
Trait Implementations§
impl Copy for CpuTier
impl Eq for CpuTier
Source§impl Ord for CpuTier
impl Ord for CpuTier
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for CpuTier
impl PartialOrd for CpuTier
impl StructuralPartialEq for CpuTier
Auto Trait Implementations§
impl Freeze for CpuTier
impl RefUnwindSafe for CpuTier
impl Send for CpuTier
impl Sync for CpuTier
impl Unpin for CpuTier
impl UnsafeUnpin for CpuTier
impl UnwindSafe for CpuTier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more