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§
Sourcefn load4_u8_to_i16x8(&self, src: &[u8]) -> I16x8
fn load4_u8_to_i16x8(&self, src: &[u8]) -> I16x8
Load 4 bytes from memory and zero-extend to i16x8.
Sourcefn load8_u8_to_i16x8(&self, src: &[u8]) -> I16x8
fn load8_u8_to_i16x8(&self, src: &[u8]) -> I16x8
Load 8 bytes from memory and zero-extend to i16x8.
Sourcefn store4_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])
fn store4_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])
Store lower 4 elements of i16x8 to memory as saturated u8.
Sourcefn store8_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])
fn store8_i16x8_as_u8(&self, v: I16x8, dst: &mut [u8])
Store lower 8 elements of i16x8 to memory as saturated u8.
Sourcefn transpose_4x4_i16(&self, rows: &[I16x8; 4]) -> [I16x8; 4]
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