pub struct AvxVnni;Expand description
x86/x86_64 AVX-VNNI (256-bit VEX-encoded VNNI) instruction set marker.
Distinct from Avx512: AVX-VNNI provides vpdpbusd/vpdpwssd on 256-bit
YMM registers without requiring AVX-512, so it accelerates integer dot/GEMM
on client CPUs (Alder Lake and newer) that lack AVX-512. The int8 tile kernel
uses the unsigned-signed vpdpbusd with a +128 operand bias correction
(base AVX-VNNI has no signed-signed vpdpbssd; that is the separate
avxvnniint8 feature).
Trait Implementations§
impl Copy for AvxVnni
impl Eq for AvxVnni
Source§impl SimdArch for AvxVnni
impl SimdArch for AvxVnni
Source§const NAME: &'static str = "avx_vnni"
const NAME: &'static str = "avx_vnni"
Human-readable ISA name (
"avx2", "avx512", "neon", "scalar").Source§const REGISTER_WIDTH_BITS: u32 = 256
const REGISTER_WIDTH_BITS: u32 = 256
Width of vector registers in bits. Read more
Source§const ISA_FAMILY: IsaFamily = hermes_simd_core::arch::IsaFamily::X86
const ISA_FAMILY: IsaFamily = hermes_simd_core::arch::IsaFamily::X86
ISA family for this architecture.
Source§const FMA_THROUGHPUT_HINT: u32 = 4
const FMA_THROUGHPUT_HINT: u32 = 4
Source§fn is_runtime_supported() -> bool
fn is_runtime_supported() -> bool
Returns true when the current host may execute this architecture’s
native instructions from safe wrappers. Read more
impl StructuralPartialEq for AvxVnni
Auto Trait Implementations§
impl Freeze for AvxVnni
impl RefUnwindSafe for AvxVnni
impl Send for AvxVnni
impl Sync for AvxVnni
impl Unpin for AvxVnni
impl UnsafeUnpin for AvxVnni
impl UnwindSafe for AvxVnni
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.