gemm_common::simd

Trait MixedSimd

Source
pub unsafe trait MixedSimd<Lhs, Rhs, Dst, Acc>: Simd {
    type LhsN: Boilerplate;
    type RhsN: Boilerplate;
    type DstN: Boilerplate;
    type AccN: Boilerplate;

    const SIMD_WIDTH: usize;
Show 17 methods // Required methods fn try_new() -> Option<Self>; fn vectorize<F: NullaryFnOnce>(self, f: F) -> F::Output; fn add(self, lhs: Acc, rhs: Acc) -> Acc; fn mult(self, lhs: Acc, rhs: Acc) -> Acc; fn mult_add(self, lhs: Acc, rhs: Acc, acc: Acc) -> Acc; fn from_lhs(self, lhs: Lhs) -> Acc; fn from_rhs(self, rhs: Rhs) -> Acc; fn from_dst(self, dst: Dst) -> Acc; fn into_dst(self, acc: Acc) -> Dst; fn simd_mul(self, lhs: Self::AccN, rhs: Self::AccN) -> Self::AccN; fn simd_add(self, lhs: Self::AccN, rhs: Self::AccN) -> Self::AccN; fn simd_mult_add( self, lhs: Self::AccN, rhs: Self::AccN, acc: Self::AccN, ) -> Self::AccN; fn simd_from_lhs(self, lhs: Self::LhsN) -> Self::AccN; fn simd_from_rhs(self, rhs: Self::RhsN) -> Self::AccN; fn simd_splat(self, lhs: Acc) -> Self::AccN; fn simd_from_dst(self, dst: Self::DstN) -> Self::AccN; fn simd_into_dst(self, acc: Self::AccN) -> Self::DstN;
}

Required Associated Constants§

Required Associated Types§

Required Methods§

Source

fn try_new() -> Option<Self>

Source

fn vectorize<F: NullaryFnOnce>(self, f: F) -> F::Output

Source

fn add(self, lhs: Acc, rhs: Acc) -> Acc

Source

fn mult(self, lhs: Acc, rhs: Acc) -> Acc

Source

fn mult_add(self, lhs: Acc, rhs: Acc, acc: Acc) -> Acc

Source

fn from_lhs(self, lhs: Lhs) -> Acc

Source

fn from_rhs(self, rhs: Rhs) -> Acc

Source

fn from_dst(self, dst: Dst) -> Acc

Source

fn into_dst(self, acc: Acc) -> Dst

Source

fn simd_mul(self, lhs: Self::AccN, rhs: Self::AccN) -> Self::AccN

Source

fn simd_add(self, lhs: Self::AccN, rhs: Self::AccN) -> Self::AccN

Source

fn simd_mult_add( self, lhs: Self::AccN, rhs: Self::AccN, acc: Self::AccN, ) -> Self::AccN

Source

fn simd_from_lhs(self, lhs: Self::LhsN) -> Self::AccN

Source

fn simd_from_rhs(self, rhs: Self::RhsN) -> Self::AccN

Source

fn simd_splat(self, lhs: Acc) -> Self::AccN

Source

fn simd_from_dst(self, dst: Self::DstN) -> Self::AccN

Source

fn simd_into_dst(self, acc: Self::AccN) -> Self::DstN

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl MixedSimd<f32, f32, f32, f32> for Scalar

Source§

impl MixedSimd<f32, f32, f32, f32> for V3

Source§

const SIMD_WIDTH: usize = 8usize

Source§

type LhsN = [f32; 8]

Source§

type RhsN = [f32; 8]

Source§

type DstN = [f32; 8]

Source§

type AccN = [f32; 8]

Source§

impl MixedSimd<f64, f64, f64, f64> for Scalar

Source§

impl MixedSimd<f64, f64, f64, f64> for V3

Source§

const SIMD_WIDTH: usize = 4usize

Source§

type LhsN = [f64; 4]

Source§

type RhsN = [f64; 4]

Source§

type DstN = [f64; 4]

Source§

type AccN = [f64; 4]

Source§

impl MixedSimd<f16, f16, f16, f32> for Scalar

Source§

impl MixedSimd<f16, f16, f16, f32> for V3

Source§

const SIMD_WIDTH: usize = 8usize

Source§

type LhsN = [f16; 8]

Source§

type RhsN = [f16; 8]

Source§

type DstN = [f16; 8]

Source§

type AccN = [f32; 8]

Source§

impl MixedSimd<f16, f16, f16, f32> for V3Half

Source§

const SIMD_WIDTH: usize = 4usize

Source§

type LhsN = [f16; 4]

Source§

type RhsN = [f16; 4]

Source§

type DstN = [f16; 4]

Source§

type AccN = [f32; 4]

Source§

impl MixedSimd<Complex<f32>, Complex<f32>, Complex<f32>, Complex<f32>> for Scalar

Source§

impl MixedSimd<Complex<f32>, Complex<f32>, Complex<f32>, Complex<f32>> for V3

Source§

impl MixedSimd<Complex<f64>, Complex<f64>, Complex<f64>, Complex<f64>> for Scalar

Source§

impl MixedSimd<Complex<f64>, Complex<f64>, Complex<f64>, Complex<f64>> for V3