ppv_lite86

Trait Machine

Source
pub trait Machine: Sized + Copy {
    type u32x4: u32x4<Self>;
    type u64x2: u64x2<Self>;
    type u128x1: u128x1<Self>;
    type u32x4x2: u32x4x2<Self>;
    type u64x2x2: u64x2x2<Self>;
    type u64x4: u64x4<Self>;
    type u128x2: u128x2<Self>;
    type u32x4x4: u32x4x4<Self>;
    type u64x2x4: u64x2x4<Self>;
    type u128x4: u128x4<Self>;

    // Required method
    unsafe fn instance() -> Self;

    // Provided methods
    fn unpack<S, V: Store<S>>(self, s: S) -> V { ... }
    fn vec<V, A>(self, a: A) -> V
       where V: MultiLane<A> { ... }
    fn read_le<V>(self, input: &[u8]) -> V
       where V: StoreBytes { ... }
    fn read_be<V>(self, input: &[u8]) -> V
       where V: StoreBytes { ... }
}

Required Associated Types§

Source

type u32x4: u32x4<Self>

Source

type u64x2: u64x2<Self>

Source

type u128x1: u128x1<Self>

Source

type u32x4x2: u32x4x2<Self>

Source

type u64x2x2: u64x2x2<Self>

Source

type u64x4: u64x4<Self>

Source

type u128x2: u128x2<Self>

Source

type u32x4x4: u32x4x4<Self>

Source

type u64x2x4: u64x2x4<Self>

Source

type u128x4: u128x4<Self>

Required Methods§

Source

unsafe fn instance() -> Self

§Safety

Caller must ensure the type of Self is appropriate for the hardware of the execution environment.

Provided Methods§

Source

fn unpack<S, V: Store<S>>(self, s: S) -> V

Source

fn vec<V, A>(self, a: A) -> V
where V: MultiLane<A>,

Source

fn read_le<V>(self, input: &[u8]) -> V
where V: StoreBytes,

Source

fn read_be<V>(self, input: &[u8]) -> V
where V: StoreBytes,

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<NI: Copy> Machine for Avx2Machine<NI>
where u128x1_sse2<YesS3, YesS4, NI>: BSwap + Swap64, u64x2_sse2<YesS3, YesS4, NI>: BSwap + RotateEachWord32 + MultiLane<[u64; 2]> + Vec2<u64>, u32x4_sse2<YesS3, YesS4, NI>: BSwap + RotateEachWord32 + MultiLane<[u32; 4]> + Vec4<u32>, x2<u64x2_sse2<YesS3, YesS4, NI>, G1>: BSwap + Words4,

Source§

type u32x4 = u32x4_sse2<YesS3, YesS4, NI>

Source§

type u64x2 = u64x2_sse2<YesS3, YesS4, NI>

Source§

type u128x1 = u128x1_sse2<YesS3, YesS4, NI>

Source§

type u32x4x2 = u32x4x2_avx2<NI>

Source§

type u64x2x2 = x2<u64x2_sse2<YesS3, YesS4, NI>, G0>

Source§

type u64x4 = x2<u64x2_sse2<YesS3, YesS4, NI>, G1>

Source§

type u128x2 = x2<u128x1_sse2<YesS3, YesS4, NI>, G0>

Source§

type u32x4x4 = x2<u32x4x2_avx2<NI>, G0>

Source§

type u64x2x4 = x4<u64x2_sse2<YesS3, YesS4, NI>>

Source§

type u128x4 = x4<u128x1_sse2<YesS3, YesS4, NI>>

Source§

impl<S3: Copy, S4: Copy, NI: Copy> Machine for SseMachine<S3, S4, NI>
where u128x1_sse2<S3, S4, NI>: Swap64 + BSwap, u64x2_sse2<S3, S4, NI>: BSwap + RotateEachWord32 + MultiLane<[u64; 2]> + Vec2<u64>, u32x4_sse2<S3, S4, NI>: BSwap + RotateEachWord32 + MultiLane<[u32; 4]> + Vec4<u32>, x2<u64x2_sse2<S3, S4, NI>, G1>: BSwap + Words4, x2<u128x1_sse2<S3, S4, NI>, G0>: Into<x2<u64x2_sse2<S3, S4, NI>, G0>> + Into<x2<u64x2_sse2<S3, S4, NI>, G1>> + Into<x2<u32x4_sse2<S3, S4, NI>, G0>>, x4<u128x1_sse2<S3, S4, NI>>: Into<x4<u64x2_sse2<S3, S4, NI>>> + Into<x4<u32x4_sse2<S3, S4, NI>>>,

Source§

type u32x4 = u32x4_sse2<S3, S4, NI>

Source§

type u64x2 = u64x2_sse2<S3, S4, NI>

Source§

type u128x1 = u128x1_sse2<S3, S4, NI>

Source§

type u32x4x2 = x2<u32x4_sse2<S3, S4, NI>, G0>

Source§

type u64x2x2 = x2<u64x2_sse2<S3, S4, NI>, G0>

Source§

type u64x4 = x2<u64x2_sse2<S3, S4, NI>, G1>

Source§

type u128x2 = x2<u128x1_sse2<S3, S4, NI>, G0>

Source§

type u32x4x4 = x4<u32x4_sse2<S3, S4, NI>>

Source§

type u64x2x4 = x4<u64x2_sse2<S3, S4, NI>>

Source§

type u128x4 = x4<u128x1_sse2<S3, S4, NI>>