vsimd

Trait SIMD256

Source
pub unsafe trait SIMD256: SIMD128 {
Show 93 methods // Provided methods unsafe fn v256_load(self, addr: *const u8) -> V256 { ... } unsafe fn v256_load_unaligned(self, addr: *const u8) -> V256 { ... } unsafe fn v256_store(self, addr: *mut u8, a: V256) { ... } unsafe fn v256_store_unaligned(self, addr: *mut u8, a: V256) { ... } fn v256_create_zero(self) -> V256 { ... } fn v256_not(self, a: V256) -> V256 { ... } fn v256_and(self, a: V256, b: V256) -> V256 { ... } fn v256_or(self, a: V256, b: V256) -> V256 { ... } fn v256_xor(self, a: V256, b: V256) -> V256 { ... } fn v256_andnot(self, a: V256, b: V256) -> V256 { ... } fn v256_all_zero(self, a: V256) -> bool { ... } fn u8x32_splat(self, x: u8) -> V256 { ... } fn u16x16_splat(self, x: u16) -> V256 { ... } fn u32x8_splat(self, x: u32) -> V256 { ... } fn u64x4_splat(self, x: u64) -> V256 { ... } fn i8x32_splat(self, x: i8) -> V256 { ... } fn i16x16_splat(self, x: i16) -> V256 { ... } fn i32x8_splat(self, x: i32) -> V256 { ... } fn i64x4_splat(self, x: i64) -> V256 { ... } fn u8x32_add(self, a: V256, b: V256) -> V256 { ... } fn u16x16_add(self, a: V256, b: V256) -> V256 { ... } fn u32x8_add(self, a: V256, b: V256) -> V256 { ... } fn u64x4_add(self, a: V256, b: V256) -> V256 { ... } fn u8x32_sub(self, a: V256, b: V256) -> V256 { ... } fn u16x16_sub(self, a: V256, b: V256) -> V256 { ... } fn u32x8_sub(self, a: V256, b: V256) -> V256 { ... } fn u64x4_sub(self, a: V256, b: V256) -> V256 { ... } fn u8x32_sub_sat(self, a: V256, b: V256) -> V256 { ... } fn u16x16_sub_sat(self, a: V256, b: V256) -> V256 { ... } fn i8x32_sub_sat(self, a: V256, b: V256) -> V256 { ... } fn i16x16_sub_sat(self, a: V256, b: V256) -> V256 { ... } fn i16x16_mul_lo(self, a: V256, b: V256) -> V256 { ... } fn i32x8_mul_lo(self, a: V256, b: V256) -> V256 { ... } fn u16x16_shl<const IMM8: i32>(self, a: V256) -> V256 { ... } fn u32x8_shl<const IMM8: i32>(self, a: V256) -> V256 { ... } fn u16x16_shr<const IMM8: i32>(self, a: V256) -> V256 { ... } fn u32x8_shr<const IMM8: i32>(self, a: V256) -> V256 { ... } fn u8x32_eq(self, a: V256, b: V256) -> V256 { ... } fn u16x16_eq(self, a: V256, b: V256) -> V256 { ... } fn u32x8_eq(self, a: V256, b: V256) -> V256 { ... } fn u8x32_lt(self, a: V256, b: V256) -> V256 { ... } fn u16x16_lt(self, a: V256, b: V256) -> V256 { ... } fn u32x8_lt(self, a: V256, b: V256) -> V256 { ... } fn i8x32_lt(self, a: V256, b: V256) -> V256 { ... } fn i16x16_lt(self, a: V256, b: V256) -> V256 { ... } fn i32x8_lt(self, a: V256, b: V256) -> V256 { ... } fn u8x32_max(self, a: V256, b: V256) -> V256 { ... } fn u16x16_max(self, a: V256, b: V256) -> V256 { ... } fn u32x8_max(self, a: V256, b: V256) -> V256 { ... } fn i8x32_max(self, a: V256, b: V256) -> V256 { ... } fn i16x16_max(self, a: V256, b: V256) -> V256 { ... } fn i32x8_max(self, a: V256, b: V256) -> V256 { ... } fn u8x32_min(self, a: V256, b: V256) -> V256 { ... } fn u16x16_min(self, a: V256, b: V256) -> V256 { ... } fn u32x8_min(self, a: V256, b: V256) -> V256 { ... } fn i8x32_min(self, a: V256, b: V256) -> V256 { ... } fn i16x16_min(self, a: V256, b: V256) -> V256 { ... } fn i32x8_min(self, a: V256, b: V256) -> V256 { ... } fn u8x16x2_swizzle(self, a: V256, b: V256) -> V256 { ... } fn u16x16_bswap(self, a: V256) -> V256 { ... } fn u32x8_bswap(self, a: V256) -> V256 { ... } fn u64x4_bswap(self, a: V256) -> V256 { ... } fn u8x32_swizzle(self, a: V256, b: V256) -> V256 { ... } fn u8x32_any_zero(self, a: V256) -> bool { ... } fn u8x32_bitmask(self, a: V256) -> u32 { ... } fn u8x32_reduce_max(self, a: V256) -> u8 { ... } fn u8x32_reduce_min(self, a: V256) -> u8 { ... } fn v256_bsl(self, a: V256, b: V256, c: V256) -> V256 { ... } fn u16x16_from_u8x16(self, a: V128) -> V256 { ... } fn u8x16x2_zip_lo(self, a: V256, b: V256) -> V256 { ... } fn u8x16x2_zip_hi(self, a: V256, b: V256) -> V256 { ... } fn u16x8x2_zip_lo(self, a: V256, b: V256) -> V256 { ... } fn u16x8x2_zip_hi(self, a: V256, b: V256) -> V256 { ... } fn u32x4x2_zip_lo(self, a: V256, b: V256) -> V256 { ... } fn u32x4x2_zip_hi(self, a: V256, b: V256) -> V256 { ... } fn u64x2x2_zip_lo(self, a: V256, b: V256) -> V256 { ... } fn u64x2x2_zip_hi(self, a: V256, b: V256) -> V256 { ... } fn v128x2_zip_lo(self, a: V256, b: V256) -> V256 { ... } fn v128x2_zip_hi(self, a: V256, b: V256) -> V256 { ... } fn u64x4_permute<const IMM8: i32>(self, a: V256) -> V256 { ... } fn u8x32_unzip_even(self, a: V256, b: V256) -> V256 { ... } fn u8x32_unzip_odd(self, a: V256, b: V256) -> V256 { ... } fn u64x4_unzip_even(self, a: V256, b: V256) -> V256 { ... } fn u64x4_unzip_odd(self, a: V256, b: V256) -> V256 { ... } fn u16x16_mul_hi(self, a: V256, b: V256) -> V256 { ... } fn i16x16_mul_hi(self, a: V256, b: V256) -> V256 { ... } fn i16x16_maddubs(self, a: V256, b: V256) -> V256 { ... } fn u32x8_blend<const IMM8: i32>(self, a: V256, b: V256) -> V256 { ... } fn u8x32_blendv(self, a: V256, b: V256, c: V256) -> V256 { ... } fn i16x16_madd(self, a: V256, b: V256) -> V256 { ... } fn u8x32_avgr(self, a: V256, b: V256) -> V256 { ... } fn i8x32_add_sat(self, a: V256, b: V256) -> V256 { ... } fn u8x32_add_sat(self, a: V256, b: V256) -> V256 { ... }
}

Provided Methods§

Source

unsafe fn v256_load(self, addr: *const u8) -> V256

Source

unsafe fn v256_load_unaligned(self, addr: *const u8) -> V256

Source

unsafe fn v256_store(self, addr: *mut u8, a: V256)

Source

unsafe fn v256_store_unaligned(self, addr: *mut u8, a: V256)

Source

fn v256_create_zero(self) -> V256

Source

fn v256_not(self, a: V256) -> V256

Source

fn v256_and(self, a: V256, b: V256) -> V256

Source

fn v256_or(self, a: V256, b: V256) -> V256

Source

fn v256_xor(self, a: V256, b: V256) -> V256

Source

fn v256_andnot(self, a: V256, b: V256) -> V256

Source

fn v256_all_zero(self, a: V256) -> bool

Source

fn u8x32_splat(self, x: u8) -> V256

Source

fn u16x16_splat(self, x: u16) -> V256

Source

fn u32x8_splat(self, x: u32) -> V256

Source

fn u64x4_splat(self, x: u64) -> V256

Source

fn i8x32_splat(self, x: i8) -> V256

Source

fn i16x16_splat(self, x: i16) -> V256

Source

fn i32x8_splat(self, x: i32) -> V256

Source

fn i64x4_splat(self, x: i64) -> V256

Source

fn u8x32_add(self, a: V256, b: V256) -> V256

Source

fn u16x16_add(self, a: V256, b: V256) -> V256

Source

fn u32x8_add(self, a: V256, b: V256) -> V256

Source

fn u64x4_add(self, a: V256, b: V256) -> V256

Source

fn u8x32_sub(self, a: V256, b: V256) -> V256

Source

fn u16x16_sub(self, a: V256, b: V256) -> V256

Source

fn u32x8_sub(self, a: V256, b: V256) -> V256

Source

fn u64x4_sub(self, a: V256, b: V256) -> V256

Source

fn u8x32_sub_sat(self, a: V256, b: V256) -> V256

Source

fn u16x16_sub_sat(self, a: V256, b: V256) -> V256

Source

fn i8x32_sub_sat(self, a: V256, b: V256) -> V256

Source

fn i16x16_sub_sat(self, a: V256, b: V256) -> V256

Source

fn i16x16_mul_lo(self, a: V256, b: V256) -> V256

Source

fn i32x8_mul_lo(self, a: V256, b: V256) -> V256

Source

fn u16x16_shl<const IMM8: i32>(self, a: V256) -> V256

Source

fn u32x8_shl<const IMM8: i32>(self, a: V256) -> V256

Source

fn u16x16_shr<const IMM8: i32>(self, a: V256) -> V256

Source

fn u32x8_shr<const IMM8: i32>(self, a: V256) -> V256

Source

fn u8x32_eq(self, a: V256, b: V256) -> V256

Source

fn u16x16_eq(self, a: V256, b: V256) -> V256

Source

fn u32x8_eq(self, a: V256, b: V256) -> V256

Source

fn u8x32_lt(self, a: V256, b: V256) -> V256

Source

fn u16x16_lt(self, a: V256, b: V256) -> V256

Source

fn u32x8_lt(self, a: V256, b: V256) -> V256

Source

fn i8x32_lt(self, a: V256, b: V256) -> V256

Source

fn i16x16_lt(self, a: V256, b: V256) -> V256

Source

fn i32x8_lt(self, a: V256, b: V256) -> V256

Source

fn u8x32_max(self, a: V256, b: V256) -> V256

Source

fn u16x16_max(self, a: V256, b: V256) -> V256

Source

fn u32x8_max(self, a: V256, b: V256) -> V256

Source

fn i8x32_max(self, a: V256, b: V256) -> V256

Source

fn i16x16_max(self, a: V256, b: V256) -> V256

Source

fn i32x8_max(self, a: V256, b: V256) -> V256

Source

fn u8x32_min(self, a: V256, b: V256) -> V256

Source

fn u16x16_min(self, a: V256, b: V256) -> V256

Source

fn u32x8_min(self, a: V256, b: V256) -> V256

Source

fn i8x32_min(self, a: V256, b: V256) -> V256

Source

fn i16x16_min(self, a: V256, b: V256) -> V256

Source

fn i32x8_min(self, a: V256, b: V256) -> V256

Source

fn u8x16x2_swizzle(self, a: V256, b: V256) -> V256

Source

fn u16x16_bswap(self, a: V256) -> V256

Source

fn u32x8_bswap(self, a: V256) -> V256

Source

fn u64x4_bswap(self, a: V256) -> V256

Source

fn u8x32_swizzle(self, a: V256, b: V256) -> V256

Source

fn u8x32_any_zero(self, a: V256) -> bool

Source

fn u8x32_bitmask(self, a: V256) -> u32

Source

fn u8x32_reduce_max(self, a: V256) -> u8

Source

fn u8x32_reduce_min(self, a: V256) -> u8

Source

fn v256_bsl(self, a: V256, b: V256, c: V256) -> V256

for each bit: if a == 1 { b } else { c }

ans = ((b ^ c) & a) ^ c

Source

fn u16x16_from_u8x16(self, a: V128) -> V256

Source

fn u8x16x2_zip_lo(self, a: V256, b: V256) -> V256

Source

fn u8x16x2_zip_hi(self, a: V256, b: V256) -> V256

Source

fn u16x8x2_zip_lo(self, a: V256, b: V256) -> V256

Source

fn u16x8x2_zip_hi(self, a: V256, b: V256) -> V256

Source

fn u32x4x2_zip_lo(self, a: V256, b: V256) -> V256

Source

fn u32x4x2_zip_hi(self, a: V256, b: V256) -> V256

Source

fn u64x2x2_zip_lo(self, a: V256, b: V256) -> V256

Source

fn u64x2x2_zip_hi(self, a: V256, b: V256) -> V256

Source

fn v128x2_zip_lo(self, a: V256, b: V256) -> V256

Source

fn v128x2_zip_hi(self, a: V256, b: V256) -> V256

Source

fn u64x4_permute<const IMM8: i32>(self, a: V256) -> V256

Source

fn u8x32_unzip_even(self, a: V256, b: V256) -> V256

Source

fn u8x32_unzip_odd(self, a: V256, b: V256) -> V256

Source

fn u64x4_unzip_even(self, a: V256, b: V256) -> V256

Source

fn u64x4_unzip_odd(self, a: V256, b: V256) -> V256

Source

fn u16x16_mul_hi(self, a: V256, b: V256) -> V256

Source

fn i16x16_mul_hi(self, a: V256, b: V256) -> V256

Source

fn i16x16_maddubs(self, a: V256, b: V256) -> V256

Source

fn u32x8_blend<const IMM8: i32>(self, a: V256, b: V256) -> V256

Source

fn u8x32_blendv(self, a: V256, b: V256, c: V256) -> V256

if highbit(c) { b } else { a }

Source

fn i16x16_madd(self, a: V256, b: V256) -> V256

Source

fn u8x32_avgr(self, a: V256, b: V256) -> V256

Source

fn i8x32_add_sat(self, a: V256, b: V256) -> V256

Source

fn u8x32_add_sat(self, a: V256, b: V256) -> V256

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§