# Machine in ppv_lite86 - Rust
API documentation for the Rust `Machine` trait in crate `ppv_lite86`.
Keywords: rust, rustlang, rust-lang, Machine

# Trait ppv_lite86::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>;

        unsafe fn instance() -> Self;

        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,

## 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,

#### type u32x4 = u32x4_sse2<YesS3, YesS4, NI>

#### type u64x2 = u64x2_sse2<YesS3, YesS4, NI>

#### type u128x1 = u128x1_sse2<YesS3, YesS4, NI>

#### type u32x4x2 = u32x4x2_avx2<NI>

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

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

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

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

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

#### 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,
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,
u128x1_sse2<S3, S4, NI>: BSwap,
x2<u128x1_sse2<S3, S4, NI>, G0>: Into<x2<u64x2_sse2<S3, S4, NI>, G0>>,
x2<u128x1_sse2<S3, S4, NI>, G0>: Into<x2<u64x2_sse2<S3, S4, NI>, G1>>,
x2<u128x1_sse2<S3, S4, NI>, G0>: Into<x2<u32x4_sse2<S3, S4, NI>, G0>>,
x4<u128x1_sse2<S3, S4, NI>>: Into<x4<u64x2_sse2<S3, S4, NI>>>,
x4<u128x1_sse2<S3, S4, NI>>: Into<x4<u32x4_sse2<S3, S4, NI>>>,

#### type u32x4 = u32x4_sse2<S3, S4, NI>

#### type u64x2 = u64x2_sse2<S3, S4, NI>

#### type u128x1 = u128x1_sse2<S3, S4, NI>

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

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

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

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

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

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

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