Skip to main content

SimdOpsExt

Trait SimdOpsExt 

Source
pub trait SimdOpsExt: SimdOps {
    // Required methods
    fn load4_u8_to_i16x8(&self, src: &[u8]) -> I16x8;
    fn load8_u8_to_i16x8(&self, src: &[u8]) -> I16x8;
    fn store4_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8]);
    fn store8_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8]);
    fn transpose_4x4_i16(&self, rows: &[I16x8; 4]) -> [I16x8; 4];
    fn transpose_8x8_i16(&self, rows: &[I16x8; 8]) -> [I16x8; 8];
    fn butterfly_i16x8(&self, a: I16x8, b: I16x8) -> (I16x8, I16x8);
    fn butterfly_i32x4(&self, a: I32x4, b: I32x4) -> (I32x4, I32x4);
}
Expand description

Extended SIMD operations for more complex codec operations.

Required Methods§

Source

fn load4_u8_to_i16x8(&self, src: &[u8]) -> I16x8

Load 4 bytes from memory and zero-extend to i16x8.

Source

fn load8_u8_to_i16x8(&self, src: &[u8]) -> I16x8

Load 8 bytes from memory and zero-extend to i16x8.

Source

fn store4_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])

Store lower 4 elements of i16x8 to memory as saturated u8.

Source

fn store8_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])

Store lower 8 elements of i16x8 to memory as saturated u8.

Source

fn transpose_4x4_i16(&self, rows: &[I16x8; 4]) -> [I16x8; 4]

Transpose 4x4 block of i16 values.

Input: 4 rows stored in 4 I16x8 vectors (only lower 4 elements used) Output: Transposed 4x4 block

Source

fn transpose_8x8_i16(&self, rows: &[I16x8; 8]) -> [I16x8; 8]

Transpose 8x8 block of i16 values.

Source

fn butterfly_i16x8(&self, a: I16x8, b: I16x8) -> (I16x8, I16x8)

DCT butterfly: (a + b, a - b).

Source

fn butterfly_i32x4(&self, a: I32x4, b: I32x4) -> (I32x4, I32x4)

DCT butterfly for i32x4.

Implementors§