Type Definition packed_simd_2::u16x16
source · [−]Expand description
A 256-bit vector with 16 u16
lanes.
Implementations
sourceimpl u16x16
impl u16x16
sourcepub const fn new(
x0: u16,
x1: u16,
x2: u16,
x3: u16,
x4: u16,
x5: u16,
x6: u16,
x7: u16,
x8: u16,
x9: u16,
x10: u16,
x11: u16,
x12: u16,
x13: u16,
x14: u16,
x15: u16
) -> Self
pub const fn new(
x0: u16,
x1: u16,
x2: u16,
x3: u16,
x4: u16,
x5: u16,
x6: u16,
x7: u16,
x8: u16,
x9: u16,
x10: u16,
x11: u16,
x12: u16,
x13: u16,
x14: u16,
x15: u16
) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u16) -> Self
pub const fn splat(value: u16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u16
pub unsafe fn extract_unchecked(self, index: usize) -> u16
sourcepub fn replace(self, index: usize, new_value: u16) -> Self
pub fn replace(self, index: usize, new_value: u16) -> 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: u16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u16) -> Self
Returns a new vector where the value at index
is replaced by new_value
.
Safety
If index >= Self::lanes()
the behavior is undefined.
sourceimpl u16x16
impl u16x16
sourcepub fn rotate_left(self, n: u16x16) -> u16x16
pub fn rotate_left(self, n: u16x16) -> u16x16
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: u16x16) -> u16x16
pub fn rotate_right(self, n: u16x16) -> u16x16
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_left
.
sourceimpl u16x16
impl u16x16
sourcepub fn wrapping_sum(self) -> u16
pub fn wrapping_sum(self) -> u16
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) -> u16
pub fn wrapping_product(self) -> u16
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.
sourceimpl u16x16
impl u16x16
sourcepub fn max_element(self) -> u16
pub fn max_element(self) -> u16
Largest vector element value.
sourcepub fn min_element(self) -> u16
pub fn min_element(self) -> u16
Smallest vector element value.
sourceimpl u16x16
impl u16x16
sourcepub fn and(self) -> u16
pub fn and(self) -> u16
Lane-wise bitwise and
of the vector elements.
Note: if the vector has one lane, the first element of the vector is returned.
sourceimpl u16x16
impl u16x16
sourcepub fn from_slice_aligned(slice: &[u16]) -> Self
pub fn from_slice_aligned(slice: &[u16]) -> 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: &[u16]) -> Self
pub fn from_slice_unaligned(slice: &[u16]) -> Self
sourceimpl u16x16
impl u16x16
sourcepub fn write_to_slice_aligned(self, slice: &mut [u16])
pub fn write_to_slice_aligned(self, slice: &mut [u16])
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 [u16])
pub fn write_to_slice_unaligned(self, slice: &mut [u16])
sourceimpl u16x16
impl u16x16
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.
sourceimpl u16x16
impl u16x16
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
.
sourceimpl u16x16
impl u16x16
sourcepub fn shuffle1_dyn<I>(self, indices: I) -> Self where
Self: Shuffle1Dyn<Indices = I>,
pub fn shuffle1_dyn<I>(self, indices: I) -> Self where
Self: Shuffle1Dyn<Indices = I>,
Shuffle vector elements according to indices
.
sourceimpl u16x16
impl u16x16
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x16>
Returns a wrapper that implements PartialOrd
.
Trait Implementations
sourceimpl AddAssign<Simd<[u16; 16]>> for u16x16
impl AddAssign<Simd<[u16; 16]>> for u16x16
sourcefn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
Performs the +=
operation. Read more
sourceimpl AddAssign<u16> for u16x16
impl AddAssign<u16> for u16x16
sourcefn add_assign(&mut self, other: u16)
fn add_assign(&mut self, other: u16)
Performs the +=
operation. Read more
sourceimpl BitAndAssign<Simd<[u16; 16]>> for u16x16
impl BitAndAssign<Simd<[u16; 16]>> for u16x16
sourcefn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Performs the &=
operation. Read more
sourceimpl BitAndAssign<u16> for u16x16
impl BitAndAssign<u16> for u16x16
sourcefn bitand_assign(&mut self, other: u16)
fn bitand_assign(&mut self, other: u16)
Performs the &=
operation. Read more
sourceimpl BitOrAssign<Simd<[u16; 16]>> for u16x16
impl BitOrAssign<Simd<[u16; 16]>> for u16x16
sourcefn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Performs the |=
operation. Read more
sourceimpl BitOrAssign<u16> for u16x16
impl BitOrAssign<u16> for u16x16
sourcefn bitor_assign(&mut self, other: u16)
fn bitor_assign(&mut self, other: u16)
Performs the |=
operation. Read more
sourceimpl BitXorAssign<Simd<[u16; 16]>> for u16x16
impl BitXorAssign<Simd<[u16; 16]>> for u16x16
sourcefn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Performs the ^=
operation. Read more
sourceimpl BitXorAssign<u16> for u16x16
impl BitXorAssign<u16> for u16x16
sourcefn bitxor_assign(&mut self, other: u16)
fn bitxor_assign(&mut self, other: u16)
Performs the ^=
operation. Read more
sourceimpl DivAssign<Simd<[u16; 16]>> for u16x16
impl DivAssign<Simd<[u16; 16]>> for u16x16
sourcefn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
Performs the /=
operation. Read more
sourceimpl DivAssign<u16> for u16x16
impl DivAssign<u16> for u16x16
sourcefn div_assign(&mut self, other: u16)
fn div_assign(&mut self, other: u16)
Performs the /=
operation. Read more
sourceimpl MulAssign<Simd<[u16; 16]>> for u16x16
impl MulAssign<Simd<[u16; 16]>> for u16x16
sourcefn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
Performs the *=
operation. Read more
sourceimpl MulAssign<u16> for u16x16
impl MulAssign<u16> for u16x16
sourcefn mul_assign(&mut self, other: u16)
fn mul_assign(&mut self, other: u16)
Performs the *=
operation. Read more
sourceimpl RemAssign<Simd<[u16; 16]>> for u16x16
impl RemAssign<Simd<[u16; 16]>> for u16x16
sourcefn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
Performs the %=
operation. Read more
sourceimpl RemAssign<u16> for u16x16
impl RemAssign<u16> for u16x16
sourcefn rem_assign(&mut self, other: u16)
fn rem_assign(&mut self, other: u16)
Performs the %=
operation. Read more
sourceimpl ShlAssign<Simd<[u16; 16]>> for u16x16
impl ShlAssign<Simd<[u16; 16]>> for u16x16
sourcefn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
Performs the <<=
operation. Read more
sourceimpl ShlAssign<u32> for u16x16
impl ShlAssign<u32> for u16x16
sourcefn shl_assign(&mut self, other: u32)
fn shl_assign(&mut self, other: u32)
Performs the <<=
operation. Read more
sourceimpl ShrAssign<Simd<[u16; 16]>> for u16x16
impl ShrAssign<Simd<[u16; 16]>> for u16x16
sourcefn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
Performs the >>=
operation. Read more
sourceimpl ShrAssign<u32> for u16x16
impl ShrAssign<u32> for u16x16
sourcefn shr_assign(&mut self, other: u32)
fn shr_assign(&mut self, other: u32)
Performs the >>=
operation. Read more
sourceimpl SubAssign<Simd<[u16; 16]>> for u16x16
impl SubAssign<Simd<[u16; 16]>> for u16x16
sourcefn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Performs the -=
operation. Read more
sourceimpl SubAssign<u16> for u16x16
impl SubAssign<u16> for u16x16
sourcefn sub_assign(&mut self, other: u16)
fn sub_assign(&mut self, other: u16)
Performs the -=
operation. Read more