Type Definition packed_simd::u8x32
source · pub type u8x32 = Simd<[u8; 32]>;Expand description
A 256-bit vector with 32 u8 lanes.
Implementations§
source§impl u8x32
impl u8x32
sourcepub const fn new(
x0: u8,
x1: u8,
x2: u8,
x3: u8,
x4: u8,
x5: u8,
x6: u8,
x7: u8,
x8: u8,
x9: u8,
x10: u8,
x11: u8,
x12: u8,
x13: u8,
x14: u8,
x15: u8,
x16: u8,
x17: u8,
x18: u8,
x19: u8,
x20: u8,
x21: u8,
x22: u8,
x23: u8,
x24: u8,
x25: u8,
x26: u8,
x27: u8,
x28: u8,
x29: u8,
x30: u8,
x31: u8
) -> Self
pub const fn new( x0: u8, x1: u8, x2: u8, x3: u8, x4: u8, x5: u8, x6: u8, x7: u8, x8: u8, x9: u8, x10: u8, x11: u8, x12: u8, x13: u8, x14: u8, x15: u8, x16: u8, x17: u8, x18: u8, x19: u8, x20: u8, x21: u8, x22: u8, x23: u8, x24: u8, x25: u8, x26: u8, x27: u8, x28: u8, x29: u8, x30: u8, x31: u8 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u8) -> Self
pub const fn splat(value: u8) -> Self
Constructs a new instance with each element initialized to
value.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u8
pub unsafe fn extract_unchecked(self, index: usize) -> u8
sourcepub fn replace(self, index: usize, new_value: u8) -> Self
pub fn replace(self, index: usize, new_value: u8) -> Self
Returns a new vector where the value at index is replaced by new_value.
Panics
If index >= Self::lanes().
sourcepub unsafe fn replace_unchecked(self, index: usize, new_value: u8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u8) -> Self
Returns a new vector where the value at index is replaced by new_value.
Safety
If index >= Self::lanes() the behavior is undefined.
source§impl u8x32
impl u8x32
sourcepub fn rotate_left(self, n: u8x32) -> u8x32
pub fn rotate_left(self, n: u8x32) -> u8x32
Shifts the bits of each lane to the left by the specified
amount in the corresponding lane of n, wrapping the
truncated bits to the end of the resulting integer.
Note: this is neither the same operation as << nor equivalent
to slice::rotate_left.
sourcepub fn rotate_right(self, n: u8x32) -> u8x32
pub fn rotate_right(self, n: u8x32) -> u8x32
Shifts the bits of each lane to the right by the specified
amount in the corresponding lane of n, wrapping the
truncated bits to the beginning of the resulting integer.
Note: this is neither the same operation as >> nor equivalent
to slice::rotate_right.
source§impl u8x32
impl u8x32
sourcepub fn wrapping_sum(self) -> u8
pub fn wrapping_sum(self) -> u8
Horizontal wrapping sum of the vector elements.
The intrinsic performs a tree-reduction of the vector elements. That is, for an 8 element vector:
((x0 + x1) + (x2 + x3)) + ((x4 + x5) + (x6 + x7))
If an operation overflows it returns the mathematical result
modulo 2^n where n is the number of times it overflows.
sourcepub fn wrapping_product(self) -> u8
pub fn wrapping_product(self) -> u8
Horizontal wrapping product of the vector elements.
The intrinsic performs a tree-reduction of the vector elements. That is, for an 8 element vector:
((x0 * x1) * (x2 * x3)) * ((x4 * x5) * (x6 * x7))
If an operation overflows it returns the mathematical result
modulo 2^n where n is the number of times it overflows.
source§impl u8x32
impl u8x32
sourcepub fn max_element(self) -> u8
pub fn max_element(self) -> u8
Largest vector element value.
sourcepub fn min_element(self) -> u8
pub fn min_element(self) -> u8
Smallest vector element value.
source§impl u8x32
impl u8x32
sourcepub fn and(self) -> u8
pub fn and(self) -> u8
Lane-wise bitwise and of the vector elements.
Note: if the vector has one lane, the first element of the vector is returned.
source§impl u8x32
impl u8x32
sourcepub fn from_slice_aligned(slice: &[u8]) -> Self
pub fn from_slice_aligned(slice: &[u8]) -> Self
Instantiates a new vector with the values of the slice.
Panics
If slice.len() < Self::lanes() or &slice[0] is not aligned
to an align_of::<Self>() boundary.
sourcepub fn from_slice_unaligned(slice: &[u8]) -> Self
pub fn from_slice_unaligned(slice: &[u8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u8]) -> Self
Instantiates a new vector with the values of the slice.
Safety
If slice.len() < Self::lanes() or &slice[0] is not aligned
to an align_of::<Self>() boundary, the behavior is undefined.
sourcepub unsafe fn from_slice_unaligned_unchecked(slice: &[u8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u8]) -> Self
Instantiates a new vector with the values of the slice.
Safety
If slice.len() < Self::lanes() the behavior is undefined.
source§impl u8x32
impl u8x32
sourcepub fn write_to_slice_aligned(self, slice: &mut [u8])
pub fn write_to_slice_aligned(self, slice: &mut [u8])
Writes the values of the vector to the slice.
Panics
If slice.len() < Self::lanes() or &slice[0] is not
aligned to an align_of::<Self>() boundary.
sourcepub fn write_to_slice_unaligned(self, slice: &mut [u8])
pub fn write_to_slice_unaligned(self, slice: &mut [u8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u8])
Writes the values of the vector to the slice.
Safety
If slice.len() < Self::lanes() or &slice[0] is not
aligned to an align_of::<Self>() boundary, the behavior is
undefined.
sourcepub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u8])
Writes the values of the vector to the slice.
Safety
If slice.len() < Self::lanes() the behavior is undefined.
source§impl u8x32
impl u8x32
sourcepub fn swap_bytes(self) -> Self
pub fn swap_bytes(self) -> Self
Reverses the byte order of the vector.
sourcepub fn to_le(self) -> Self
pub fn to_le(self) -> Self
Converts self to little endian from the target’s endianness.
On little endian this is a no-op. On big endian the bytes are swapped.
sourcepub fn to_be(self) -> Self
pub fn to_be(self) -> Self
Converts self to big endian from the target’s endianness.
On big endian this is a no-op. On little endian the bytes are swapped.
source§impl u8x32
impl u8x32
sourcepub fn count_ones(self) -> Self
pub fn count_ones(self) -> Self
Returns the number of ones in the binary representation of
the lanes of self.
sourcepub fn count_zeros(self) -> Self
pub fn count_zeros(self) -> Self
Returns the number of zeros in the binary representation of
the lanes of self.
sourcepub fn leading_zeros(self) -> Self
pub fn leading_zeros(self) -> Self
Returns the number of leading zeros in the binary
representation of the lanes of self.
sourcepub fn trailing_zeros(self) -> Self
pub fn trailing_zeros(self) -> Self
Returns the number of trailing zeros in the binary
representation of the lanes of self.
source§impl u8x32
impl u8x32
sourcepub fn shuffle1_dyn<I>(self, indices: I) -> Selfwhere
Self: Shuffle1Dyn<Indices = I>,
pub fn shuffle1_dyn<I>(self, indices: I) -> Selfwhere Self: Shuffle1Dyn<Indices = I>,
Shuffle vector elements according to indices.
source§impl u8x32
impl u8x32
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x32>
Returns a wrapper that implements PartialOrd.
Trait Implementations§
source§impl AddAssign<Simd<[u8; 32]>> for u8x32
impl AddAssign<Simd<[u8; 32]>> for u8x32
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moresource§impl AddAssign<u8> for u8x32
impl AddAssign<u8> for u8x32
source§fn add_assign(&mut self, other: u8)
fn add_assign(&mut self, other: u8)
+= operation. Read moresource§impl BitAndAssign<Simd<[u8; 32]>> for u8x32
impl BitAndAssign<Simd<[u8; 32]>> for u8x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&= operation. Read moresource§impl BitAndAssign<u8> for u8x32
impl BitAndAssign<u8> for u8x32
source§fn bitand_assign(&mut self, other: u8)
fn bitand_assign(&mut self, other: u8)
&= operation. Read moresource§impl BitOrAssign<Simd<[u8; 32]>> for u8x32
impl BitOrAssign<Simd<[u8; 32]>> for u8x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|= operation. Read moresource§impl BitOrAssign<u8> for u8x32
impl BitOrAssign<u8> for u8x32
source§fn bitor_assign(&mut self, other: u8)
fn bitor_assign(&mut self, other: u8)
|= operation. Read moresource§impl BitXorAssign<Simd<[u8; 32]>> for u8x32
impl BitXorAssign<Simd<[u8; 32]>> for u8x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^= operation. Read moresource§impl BitXorAssign<u8> for u8x32
impl BitXorAssign<u8> for u8x32
source§fn bitxor_assign(&mut self, other: u8)
fn bitxor_assign(&mut self, other: u8)
^= operation. Read moresource§impl DivAssign<Simd<[u8; 32]>> for u8x32
impl DivAssign<Simd<[u8; 32]>> for u8x32
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/= operation. Read moresource§impl DivAssign<u8> for u8x32
impl DivAssign<u8> for u8x32
source§fn div_assign(&mut self, other: u8)
fn div_assign(&mut self, other: u8)
/= operation. Read moresource§impl MulAssign<Simd<[u8; 32]>> for u8x32
impl MulAssign<Simd<[u8; 32]>> for u8x32
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*= operation. Read moresource§impl MulAssign<u8> for u8x32
impl MulAssign<u8> for u8x32
source§fn mul_assign(&mut self, other: u8)
fn mul_assign(&mut self, other: u8)
*= operation. Read moresource§impl RemAssign<Simd<[u8; 32]>> for u8x32
impl RemAssign<Simd<[u8; 32]>> for u8x32
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%= operation. Read moresource§impl RemAssign<u8> for u8x32
impl RemAssign<u8> for u8x32
source§fn rem_assign(&mut self, other: u8)
fn rem_assign(&mut self, other: u8)
%= operation. Read moresource§impl ShlAssign<Simd<[u8; 32]>> for u8x32
impl ShlAssign<Simd<[u8; 32]>> for u8x32
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<= operation. Read moresource§impl ShlAssign<u32> for u8x32
impl ShlAssign<u32> for u8x32
source§fn shl_assign(&mut self, other: u32)
fn shl_assign(&mut self, other: u32)
<<= operation. Read moresource§impl ShrAssign<Simd<[u8; 32]>> for u8x32
impl ShrAssign<Simd<[u8; 32]>> for u8x32
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>= operation. Read moresource§impl ShrAssign<u32> for u8x32
impl ShrAssign<u32> for u8x32
source§fn shr_assign(&mut self, other: u32)
fn shr_assign(&mut self, other: u32)
>>= operation. Read moresource§impl SubAssign<Simd<[u8; 32]>> for u8x32
impl SubAssign<Simd<[u8; 32]>> for u8x32
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read moresource§impl SubAssign<u8> for u8x32
impl SubAssign<u8> for u8x32
source§fn sub_assign(&mut self, other: u8)
fn sub_assign(&mut self, other: u8)
-= operation. Read more