Struct packed_simd::Simd
source · #[repr(transparent)]pub struct Simd<A: SimdArray>(_);
Expand description
Packed SIMD vector type.
Examples
let v = Simd::<[i32; 4]>::new(0, 1, 2, 3);
assert_eq!(v.extract(2), 2);
Implementations§
source§impl Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub const fn new(x0: i8, x1: i8) -> Self
pub const fn new(x0: i8, x1: i8) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn rotate_left(self, n: i8x2) -> i8x2
pub fn rotate_left(self, n: i8x2) -> i8x2
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: i8x2) -> i8x2
pub fn rotate_right(self, n: i8x2) -> i8x2
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 2]>
impl Simd<[i8; 2]>
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
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 Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 2]>
impl Simd<[i8; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 2]>
impl Simd<[u8; 2]>
sourcepub const fn new(x0: u8, x1: u8) -> Self
pub const fn new(x0: u8, x1: 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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
sourcepub fn rotate_left(self, n: u8x2) -> u8x2
pub fn rotate_left(self, n: u8x2) -> u8x2
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: u8x2) -> u8x2
pub fn rotate_right(self, n: u8x2) -> u8x2
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
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 Simd<[u8; 2]>
impl Simd<[u8; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 2]>
impl Simd<[u8; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 2]>
impl Simd<[m8; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 2]>
impl Simd<[m8; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 2]>
impl Simd<[m8; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 2]>
impl Simd<[m8; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 2]>
impl Simd<[m8; 2]>
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub const fn new(x0: i8, x1: i8, x2: i8, x3: i8) -> Self
pub const fn new(x0: i8, x1: i8, x2: i8, x3: i8) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn rotate_left(self, n: i8x4) -> i8x4
pub fn rotate_left(self, n: i8x4) -> i8x4
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: i8x4) -> i8x4
pub fn rotate_right(self, n: i8x4) -> i8x4
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 4]>
impl Simd<[i8; 4]>
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
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 Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 4]>
impl Simd<[i8; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 4]>
impl Simd<[u8; 4]>
sourcepub const fn new(x0: u8, x1: u8, x2: u8, x3: u8) -> Self
pub const fn new(x0: u8, x1: u8, x2: u8, x3: 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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
sourcepub fn rotate_left(self, n: u8x4) -> u8x4
pub fn rotate_left(self, n: u8x4) -> u8x4
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: u8x4) -> u8x4
pub fn rotate_right(self, n: u8x4) -> u8x4
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
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 Simd<[u8; 4]>
impl Simd<[u8; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 4]>
impl Simd<[u8; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 4]>
impl Simd<[m8; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 4]>
impl Simd<[m8; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 4]>
impl Simd<[m8; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 4]>
impl Simd<[m8; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 4]>
impl Simd<[m8; 4]>
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub const fn new(x0: i16, x1: i16) -> Self
pub const fn new(x0: i16, x1: i16) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i16) -> Self
pub const fn splat(value: i16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i16
pub unsafe fn extract_unchecked(self, index: usize) -> i16
sourcepub fn replace(self, index: usize, new_value: i16) -> Self
pub fn replace(self, index: usize, new_value: i16) -> 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: i16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i16) -> 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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn rotate_left(self, n: i16x2) -> i16x2
pub fn rotate_left(self, n: i16x2) -> i16x2
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: i16x2) -> i16x2
pub fn rotate_right(self, n: i16x2) -> i16x2
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn wrapping_sum(self) -> i16
pub fn wrapping_sum(self) -> i16
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) -> i16
pub fn wrapping_product(self) -> i16
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn max_element(self) -> i16
pub fn max_element(self) -> i16
Largest vector element value.
sourcepub fn min_element(self) -> i16
pub fn min_element(self) -> i16
Smallest vector element value.
source§impl Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn and(self) -> i16
pub fn and(self) -> i16
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn from_slice_aligned(slice: &[i16]) -> Self
pub fn from_slice_aligned(slice: &[i16]) -> 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: &[i16]) -> Self
pub fn from_slice_unaligned(slice: &[i16]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> 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: &[i16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i16])
pub fn write_to_slice_aligned(self, slice: &mut [i16])
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 [i16])
pub fn write_to_slice_unaligned(self, slice: &mut [i16])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
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 [i16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 2]>
impl Simd<[i16; 2]>
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
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 Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i16; 2]>
impl Simd<[i16; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i16x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i16x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
sourcepub const fn new(x0: u16, x1: u16) -> Self
pub const fn new(x0: u16, x1: 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.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
sourcepub fn rotate_left(self, n: u16x2) -> u16x2
pub fn rotate_left(self, n: u16x2) -> u16x2
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: u16x2) -> u16x2
pub fn rotate_right(self, n: u16x2) -> u16x2
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 Simd<[u16; 2]>
impl Simd<[u16; 2]>
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.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
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.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
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.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
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
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> 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: &[u16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
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])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
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 [u16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
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 Simd<[u16; 2]>
impl Simd<[u16; 2]>
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 Simd<[u16; 2]>
impl Simd<[u16; 2]>
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 Simd<[u16; 2]>
impl Simd<[u16; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u16; 2]>
impl Simd<[u16; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u16x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u16x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 2]>
impl Simd<[m16; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m16; 2]>
impl Simd<[m16; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m16; 2]>
impl Simd<[m16; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m16; 2]>
impl Simd<[m16; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m16x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m16x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 2]>
impl Simd<[m16; 2]>
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub const fn new(
x0: i8,
x1: i8,
x2: i8,
x3: i8,
x4: i8,
x5: i8,
x6: i8,
x7: i8
) -> Self
pub const fn new( x0: i8, x1: i8, x2: i8, x3: i8, x4: i8, x5: i8, x6: i8, x7: i8 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn rotate_left(self, n: i8x8) -> i8x8
pub fn rotate_left(self, n: i8x8) -> i8x8
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: i8x8) -> i8x8
pub fn rotate_right(self, n: i8x8) -> i8x8
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 8]>
impl Simd<[i8; 8]>
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
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 Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 8]>
impl Simd<[i8; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 8]>
impl Simd<[u8; 8]>
sourcepub const fn new(
x0: u8,
x1: u8,
x2: u8,
x3: u8,
x4: u8,
x5: u8,
x6: u8,
x7: u8
) -> Self
pub const fn new( x0: u8, x1: u8, x2: u8, x3: u8, x4: u8, x5: u8, x6: u8, x7: 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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
sourcepub fn rotate_left(self, n: u8x8) -> u8x8
pub fn rotate_left(self, n: u8x8) -> u8x8
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: u8x8) -> u8x8
pub fn rotate_right(self, n: u8x8) -> u8x8
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
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 Simd<[u8; 8]>
impl Simd<[u8; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 8]>
impl Simd<[u8; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 8]>
impl Simd<[m8; 8]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 8]>
impl Simd<[m8; 8]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 8]>
impl Simd<[m8; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 8]>
impl Simd<[m8; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 8]>
impl Simd<[m8; 8]>
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub const fn new(x0: i16, x1: i16, x2: i16, x3: i16) -> Self
pub const fn new(x0: i16, x1: i16, x2: i16, x3: i16) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i16) -> Self
pub const fn splat(value: i16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i16
pub unsafe fn extract_unchecked(self, index: usize) -> i16
sourcepub fn replace(self, index: usize, new_value: i16) -> Self
pub fn replace(self, index: usize, new_value: i16) -> 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: i16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i16) -> 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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn rotate_left(self, n: i16x4) -> i16x4
pub fn rotate_left(self, n: i16x4) -> i16x4
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: i16x4) -> i16x4
pub fn rotate_right(self, n: i16x4) -> i16x4
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn wrapping_sum(self) -> i16
pub fn wrapping_sum(self) -> i16
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) -> i16
pub fn wrapping_product(self) -> i16
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn max_element(self) -> i16
pub fn max_element(self) -> i16
Largest vector element value.
sourcepub fn min_element(self) -> i16
pub fn min_element(self) -> i16
Smallest vector element value.
source§impl Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn and(self) -> i16
pub fn and(self) -> i16
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn from_slice_aligned(slice: &[i16]) -> Self
pub fn from_slice_aligned(slice: &[i16]) -> 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: &[i16]) -> Self
pub fn from_slice_unaligned(slice: &[i16]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> 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: &[i16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i16])
pub fn write_to_slice_aligned(self, slice: &mut [i16])
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 [i16])
pub fn write_to_slice_unaligned(self, slice: &mut [i16])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
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 [i16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 4]>
impl Simd<[i16; 4]>
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
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 Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i16; 4]>
impl Simd<[i16; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i16x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i16x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
sourcepub const fn new(x0: u16, x1: u16, x2: u16, x3: u16) -> Self
pub const fn new(x0: u16, x1: u16, x2: u16, x3: 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.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
sourcepub fn rotate_left(self, n: u16x4) -> u16x4
pub fn rotate_left(self, n: u16x4) -> u16x4
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: u16x4) -> u16x4
pub fn rotate_right(self, n: u16x4) -> u16x4
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 Simd<[u16; 4]>
impl Simd<[u16; 4]>
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.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
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.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
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.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
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
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> 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: &[u16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
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])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
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 [u16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
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 Simd<[u16; 4]>
impl Simd<[u16; 4]>
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 Simd<[u16; 4]>
impl Simd<[u16; 4]>
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 Simd<[u16; 4]>
impl Simd<[u16; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u16; 4]>
impl Simd<[u16; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u16x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u16x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 4]>
impl Simd<[m16; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m16; 4]>
impl Simd<[m16; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m16; 4]>
impl Simd<[m16; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m16; 4]>
impl Simd<[m16; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m16x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m16x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 4]>
impl Simd<[m16; 4]>
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub const fn new(x0: i32, x1: i32) -> Self
pub const fn new(x0: i32, x1: i32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i32) -> Self
pub const fn splat(value: i32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i32
pub unsafe fn extract_unchecked(self, index: usize) -> i32
sourcepub fn replace(self, index: usize, new_value: i32) -> Self
pub fn replace(self, index: usize, new_value: i32) -> 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: i32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i32) -> 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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn rotate_left(self, n: i32x2) -> i32x2
pub fn rotate_left(self, n: i32x2) -> i32x2
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: i32x2) -> i32x2
pub fn rotate_right(self, n: i32x2) -> i32x2
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn wrapping_sum(self) -> i32
pub fn wrapping_sum(self) -> i32
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) -> i32
pub fn wrapping_product(self) -> i32
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn max_element(self) -> i32
pub fn max_element(self) -> i32
Largest vector element value.
sourcepub fn min_element(self) -> i32
pub fn min_element(self) -> i32
Smallest vector element value.
source§impl Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn and(self) -> i32
pub fn and(self) -> i32
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn from_slice_aligned(slice: &[i32]) -> Self
pub fn from_slice_aligned(slice: &[i32]) -> 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: &[i32]) -> Self
pub fn from_slice_unaligned(slice: &[i32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> 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: &[i32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i32])
pub fn write_to_slice_aligned(self, slice: &mut [i32])
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 [i32])
pub fn write_to_slice_unaligned(self, slice: &mut [i32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
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 [i32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 2]>
impl Simd<[i32; 2]>
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
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 Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i32; 2]>
impl Simd<[i32; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i32x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i32x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub const fn new(x0: u32, x1: u32) -> Self
pub const fn new(x0: u32, x1: u32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u32) -> Self
pub const fn splat(value: u32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u32
pub unsafe fn extract_unchecked(self, index: usize) -> u32
sourcepub fn replace(self, index: usize, new_value: u32) -> Self
pub fn replace(self, index: usize, new_value: u32) -> 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: u32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u32) -> 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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn rotate_left(self, n: u32x2) -> u32x2
pub fn rotate_left(self, n: u32x2) -> u32x2
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: u32x2) -> u32x2
pub fn rotate_right(self, n: u32x2) -> u32x2
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn wrapping_sum(self) -> u32
pub fn wrapping_sum(self) -> u32
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) -> u32
pub fn wrapping_product(self) -> u32
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn max_element(self) -> u32
pub fn max_element(self) -> u32
Largest vector element value.
sourcepub fn min_element(self) -> u32
pub fn min_element(self) -> u32
Smallest vector element value.
source§impl Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn and(self) -> u32
pub fn and(self) -> u32
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn from_slice_aligned(slice: &[u32]) -> Self
pub fn from_slice_aligned(slice: &[u32]) -> 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: &[u32]) -> Self
pub fn from_slice_unaligned(slice: &[u32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> 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: &[u32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u32])
pub fn write_to_slice_aligned(self, slice: &mut [u32])
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 [u32])
pub fn write_to_slice_unaligned(self, slice: &mut [u32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
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 [u32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 2]>
impl Simd<[u32; 2]>
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
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 Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u32; 2]>
impl Simd<[u32; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u32x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u32x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m32; 2]>
impl Simd<[m32; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m32; 2]>
impl Simd<[m32; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m32; 2]>
impl Simd<[m32; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m32; 2]>
impl Simd<[m32; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m32x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m32x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m32; 2]>
impl Simd<[m32; 2]>
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 Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub const fn new(x0: f32, x1: f32) -> Self
pub const fn new(x0: f32, x1: f32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f32) -> Self
pub const fn splat(value: f32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f32
pub unsafe fn extract_unchecked(self, index: usize) -> f32
sourcepub fn replace(self, index: usize, new_value: f32) -> Self
pub fn replace(self, index: usize, new_value: f32) -> 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: f32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f32) -> 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 Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn sum(self) -> f32
pub fn sum(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f32
pub fn product(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Largest vector element value.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Smallest vector element value.
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn from_slice_aligned(slice: &[f32]) -> Self
pub fn from_slice_aligned(slice: &[f32]) -> 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: &[f32]) -> Self
pub fn from_slice_unaligned(slice: &[f32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> 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: &[f32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f32])
pub fn write_to_slice_aligned(self, slice: &mut [f32])
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 [f32])
pub fn write_to_slice_unaligned(self, slice: &mut [f32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
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 [f32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
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 Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub const MIN_POSITIVE: f32x2 = _
pub const MIN_POSITIVE: f32x2 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f32x2 = _
pub const NEG_INFINITY: f32x2 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f32x2 = _
pub const FRAC_2_SQRT_PI: f32x2 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f32x2 = _
pub const FRAC_1_SQRT_2: f32x2 = _
1/sqrt(2)
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f32; 2]>
impl Simd<[f32; 2]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub const fn new(
x0: i8,
x1: i8,
x2: i8,
x3: i8,
x4: i8,
x5: i8,
x6: i8,
x7: i8,
x8: i8,
x9: i8,
x10: i8,
x11: i8,
x12: i8,
x13: i8,
x14: i8,
x15: i8
) -> Self
pub const fn new( x0: i8, x1: i8, x2: i8, x3: i8, x4: i8, x5: i8, x6: i8, x7: i8, x8: i8, x9: i8, x10: i8, x11: i8, x12: i8, x13: i8, x14: i8, x15: i8 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn rotate_left(self, n: i8x16) -> i8x16
pub fn rotate_left(self, n: i8x16) -> i8x16
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: i8x16) -> i8x16
pub fn rotate_right(self, n: i8x16) -> i8x16
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 16]>
impl Simd<[i8; 16]>
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
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 Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 16]>
impl Simd<[i8; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 16]>
impl Simd<[u8; 16]>
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
) -> 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 ) -> 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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
sourcepub fn rotate_left(self, n: u8x16) -> u8x16
pub fn rotate_left(self, n: u8x16) -> u8x16
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: u8x16) -> u8x16
pub fn rotate_right(self, n: u8x16) -> u8x16
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
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 Simd<[u8; 16]>
impl Simd<[u8; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 16]>
impl Simd<[u8; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 16]>
impl Simd<[m8; 16]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 16]>
impl Simd<[m8; 16]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 16]>
impl Simd<[m8; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 16]>
impl Simd<[m8; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 16]>
impl Simd<[m8; 16]>
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub const fn new(
x0: i16,
x1: i16,
x2: i16,
x3: i16,
x4: i16,
x5: i16,
x6: i16,
x7: i16
) -> Self
pub const fn new( x0: i16, x1: i16, x2: i16, x3: i16, x4: i16, x5: i16, x6: i16, x7: i16 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i16) -> Self
pub const fn splat(value: i16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i16
pub unsafe fn extract_unchecked(self, index: usize) -> i16
sourcepub fn replace(self, index: usize, new_value: i16) -> Self
pub fn replace(self, index: usize, new_value: i16) -> 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: i16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i16) -> 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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn rotate_left(self, n: i16x8) -> i16x8
pub fn rotate_left(self, n: i16x8) -> i16x8
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: i16x8) -> i16x8
pub fn rotate_right(self, n: i16x8) -> i16x8
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn wrapping_sum(self) -> i16
pub fn wrapping_sum(self) -> i16
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) -> i16
pub fn wrapping_product(self) -> i16
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn max_element(self) -> i16
pub fn max_element(self) -> i16
Largest vector element value.
sourcepub fn min_element(self) -> i16
pub fn min_element(self) -> i16
Smallest vector element value.
source§impl Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn and(self) -> i16
pub fn and(self) -> i16
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn from_slice_aligned(slice: &[i16]) -> Self
pub fn from_slice_aligned(slice: &[i16]) -> 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: &[i16]) -> Self
pub fn from_slice_unaligned(slice: &[i16]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> 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: &[i16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i16])
pub fn write_to_slice_aligned(self, slice: &mut [i16])
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 [i16])
pub fn write_to_slice_unaligned(self, slice: &mut [i16])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
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 [i16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 8]>
impl Simd<[i16; 8]>
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
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 Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i16; 8]>
impl Simd<[i16; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i16x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i16x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
sourcepub const fn new(
x0: u16,
x1: u16,
x2: u16,
x3: u16,
x4: u16,
x5: u16,
x6: u16,
x7: u16
) -> Self
pub const fn new( x0: u16, x1: u16, x2: u16, x3: u16, x4: u16, x5: u16, x6: u16, x7: 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.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
sourcepub fn rotate_left(self, n: u16x8) -> u16x8
pub fn rotate_left(self, n: u16x8) -> u16x8
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: u16x8) -> u16x8
pub fn rotate_right(self, n: u16x8) -> u16x8
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 Simd<[u16; 8]>
impl Simd<[u16; 8]>
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.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
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.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
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.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
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
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> 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: &[u16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
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])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
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 [u16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
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 Simd<[u16; 8]>
impl Simd<[u16; 8]>
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 Simd<[u16; 8]>
impl Simd<[u16; 8]>
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 Simd<[u16; 8]>
impl Simd<[u16; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u16; 8]>
impl Simd<[u16; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u16x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u16x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 8]>
impl Simd<[m16; 8]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m16; 8]>
impl Simd<[m16; 8]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m16; 8]>
impl Simd<[m16; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m16; 8]>
impl Simd<[m16; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m16x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m16x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 8]>
impl Simd<[m16; 8]>
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub const fn new(x0: i32, x1: i32, x2: i32, x3: i32) -> Self
pub const fn new(x0: i32, x1: i32, x2: i32, x3: i32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i32) -> Self
pub const fn splat(value: i32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i32
pub unsafe fn extract_unchecked(self, index: usize) -> i32
sourcepub fn replace(self, index: usize, new_value: i32) -> Self
pub fn replace(self, index: usize, new_value: i32) -> 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: i32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i32) -> 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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn rotate_left(self, n: i32x4) -> i32x4
pub fn rotate_left(self, n: i32x4) -> i32x4
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: i32x4) -> i32x4
pub fn rotate_right(self, n: i32x4) -> i32x4
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn wrapping_sum(self) -> i32
pub fn wrapping_sum(self) -> i32
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) -> i32
pub fn wrapping_product(self) -> i32
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn max_element(self) -> i32
pub fn max_element(self) -> i32
Largest vector element value.
sourcepub fn min_element(self) -> i32
pub fn min_element(self) -> i32
Smallest vector element value.
source§impl Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn and(self) -> i32
pub fn and(self) -> i32
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn from_slice_aligned(slice: &[i32]) -> Self
pub fn from_slice_aligned(slice: &[i32]) -> 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: &[i32]) -> Self
pub fn from_slice_unaligned(slice: &[i32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> 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: &[i32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i32])
pub fn write_to_slice_aligned(self, slice: &mut [i32])
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 [i32])
pub fn write_to_slice_unaligned(self, slice: &mut [i32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
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 [i32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 4]>
impl Simd<[i32; 4]>
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
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 Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i32; 4]>
impl Simd<[i32; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i32x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i32x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub const fn new(x0: u32, x1: u32, x2: u32, x3: u32) -> Self
pub const fn new(x0: u32, x1: u32, x2: u32, x3: u32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u32) -> Self
pub const fn splat(value: u32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u32
pub unsafe fn extract_unchecked(self, index: usize) -> u32
sourcepub fn replace(self, index: usize, new_value: u32) -> Self
pub fn replace(self, index: usize, new_value: u32) -> 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: u32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u32) -> 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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn rotate_left(self, n: u32x4) -> u32x4
pub fn rotate_left(self, n: u32x4) -> u32x4
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: u32x4) -> u32x4
pub fn rotate_right(self, n: u32x4) -> u32x4
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn wrapping_sum(self) -> u32
pub fn wrapping_sum(self) -> u32
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) -> u32
pub fn wrapping_product(self) -> u32
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn max_element(self) -> u32
pub fn max_element(self) -> u32
Largest vector element value.
sourcepub fn min_element(self) -> u32
pub fn min_element(self) -> u32
Smallest vector element value.
source§impl Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn and(self) -> u32
pub fn and(self) -> u32
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn from_slice_aligned(slice: &[u32]) -> Self
pub fn from_slice_aligned(slice: &[u32]) -> 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: &[u32]) -> Self
pub fn from_slice_unaligned(slice: &[u32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> 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: &[u32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u32])
pub fn write_to_slice_aligned(self, slice: &mut [u32])
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 [u32])
pub fn write_to_slice_unaligned(self, slice: &mut [u32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
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 [u32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 4]>
impl Simd<[u32; 4]>
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
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 Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u32; 4]>
impl Simd<[u32; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u32x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u32x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub const fn new(x0: f32, x1: f32, x2: f32, x3: f32) -> Self
pub const fn new(x0: f32, x1: f32, x2: f32, x3: f32) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f32) -> Self
pub const fn splat(value: f32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f32
pub unsafe fn extract_unchecked(self, index: usize) -> f32
sourcepub fn replace(self, index: usize, new_value: f32) -> Self
pub fn replace(self, index: usize, new_value: f32) -> 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: f32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f32) -> 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 Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn sum(self) -> f32
pub fn sum(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f32
pub fn product(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Largest vector element value.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Smallest vector element value.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn from_slice_aligned(slice: &[f32]) -> Self
pub fn from_slice_aligned(slice: &[f32]) -> 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: &[f32]) -> Self
pub fn from_slice_unaligned(slice: &[f32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> 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: &[f32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f32])
pub fn write_to_slice_aligned(self, slice: &mut [f32])
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 [f32])
pub fn write_to_slice_unaligned(self, slice: &mut [f32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
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 [f32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
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 Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub const MIN_POSITIVE: f32x4 = _
pub const MIN_POSITIVE: f32x4 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f32x4 = _
pub const NEG_INFINITY: f32x4 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f32x4 = _
pub const FRAC_2_SQRT_PI: f32x4 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f32x4 = _
pub const FRAC_1_SQRT_2: f32x4 = _
1/sqrt(2)
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f32; 4]>
impl Simd<[f32; 4]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m32; 4]>
impl Simd<[m32; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m32; 4]>
impl Simd<[m32; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m32; 4]>
impl Simd<[m32; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m32; 4]>
impl Simd<[m32; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m32x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m32x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m32; 4]>
impl Simd<[m32; 4]>
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub const fn new(x0: i64, x1: i64) -> Self
pub const fn new(x0: i64, x1: i64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i64) -> Self
pub const fn splat(value: i64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i64
pub unsafe fn extract_unchecked(self, index: usize) -> i64
sourcepub fn replace(self, index: usize, new_value: i64) -> Self
pub fn replace(self, index: usize, new_value: i64) -> 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: i64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i64) -> 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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn rotate_left(self, n: i64x2) -> i64x2
pub fn rotate_left(self, n: i64x2) -> i64x2
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: i64x2) -> i64x2
pub fn rotate_right(self, n: i64x2) -> i64x2
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn wrapping_sum(self) -> i64
pub fn wrapping_sum(self) -> i64
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) -> i64
pub fn wrapping_product(self) -> i64
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn max_element(self) -> i64
pub fn max_element(self) -> i64
Largest vector element value.
sourcepub fn min_element(self) -> i64
pub fn min_element(self) -> i64
Smallest vector element value.
source§impl Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn and(self) -> i64
pub fn and(self) -> i64
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn from_slice_aligned(slice: &[i64]) -> Self
pub fn from_slice_aligned(slice: &[i64]) -> 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: &[i64]) -> Self
pub fn from_slice_unaligned(slice: &[i64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> 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: &[i64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i64])
pub fn write_to_slice_aligned(self, slice: &mut [i64])
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 [i64])
pub fn write_to_slice_unaligned(self, slice: &mut [i64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
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 [i64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 2]>
impl Simd<[i64; 2]>
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
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 Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i64; 2]>
impl Simd<[i64; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i64x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i64x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub const fn new(x0: u64, x1: u64) -> Self
pub const fn new(x0: u64, x1: u64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u64) -> Self
pub const fn splat(value: u64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u64
pub unsafe fn extract_unchecked(self, index: usize) -> u64
sourcepub fn replace(self, index: usize, new_value: u64) -> Self
pub fn replace(self, index: usize, new_value: u64) -> 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: u64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u64) -> 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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn rotate_left(self, n: u64x2) -> u64x2
pub fn rotate_left(self, n: u64x2) -> u64x2
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: u64x2) -> u64x2
pub fn rotate_right(self, n: u64x2) -> u64x2
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn wrapping_sum(self) -> u64
pub fn wrapping_sum(self) -> u64
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) -> u64
pub fn wrapping_product(self) -> u64
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn max_element(self) -> u64
pub fn max_element(self) -> u64
Largest vector element value.
sourcepub fn min_element(self) -> u64
pub fn min_element(self) -> u64
Smallest vector element value.
source§impl Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn and(self) -> u64
pub fn and(self) -> u64
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn from_slice_aligned(slice: &[u64]) -> Self
pub fn from_slice_aligned(slice: &[u64]) -> 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: &[u64]) -> Self
pub fn from_slice_unaligned(slice: &[u64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> 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: &[u64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u64])
pub fn write_to_slice_aligned(self, slice: &mut [u64])
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 [u64])
pub fn write_to_slice_unaligned(self, slice: &mut [u64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
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 [u64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 2]>
impl Simd<[u64; 2]>
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
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 Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u64; 2]>
impl Simd<[u64; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u64x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u64x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub const fn new(x0: f64, x1: f64) -> Self
pub const fn new(x0: f64, x1: f64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f64) -> Self
pub const fn splat(value: f64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f64
pub unsafe fn extract_unchecked(self, index: usize) -> f64
sourcepub fn replace(self, index: usize, new_value: f64) -> Self
pub fn replace(self, index: usize, new_value: f64) -> 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: f64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f64) -> 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 Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn sum(self) -> f64
pub fn sum(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f64
pub fn product(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn max_element(self) -> f64
pub fn max_element(self) -> f64
Largest vector element value.
sourcepub fn min_element(self) -> f64
pub fn min_element(self) -> f64
Smallest vector element value.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn from_slice_aligned(slice: &[f64]) -> Self
pub fn from_slice_aligned(slice: &[f64]) -> 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: &[f64]) -> Self
pub fn from_slice_unaligned(slice: &[f64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> 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: &[f64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f64])
pub fn write_to_slice_aligned(self, slice: &mut [f64])
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 [f64])
pub fn write_to_slice_unaligned(self, slice: &mut [f64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
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 [f64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
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 Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub const MIN_POSITIVE: f64x2 = _
pub const MIN_POSITIVE: f64x2 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f64x2 = _
pub const NEG_INFINITY: f64x2 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f64x2 = _
pub const FRAC_2_SQRT_PI: f64x2 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f64x2 = _
pub const FRAC_1_SQRT_2: f64x2 = _
1/sqrt(2)
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f64; 2]>
impl Simd<[f64; 2]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m64; 2]>
impl Simd<[m64; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m64; 2]>
impl Simd<[m64; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m64; 2]>
impl Simd<[m64; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m64; 2]>
impl Simd<[m64; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m64x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m64x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m64; 2]>
impl Simd<[m64; 2]>
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub const fn new(x0: i128) -> Self
pub const fn new(x0: i128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i128) -> Self
pub const fn splat(value: i128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i128
pub unsafe fn extract_unchecked(self, index: usize) -> i128
sourcepub fn replace(self, index: usize, new_value: i128) -> Self
pub fn replace(self, index: usize, new_value: i128) -> 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: i128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i128) -> 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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn rotate_left(self, n: i128x1) -> i128x1
pub fn rotate_left(self, n: i128x1) -> i128x1
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: i128x1) -> i128x1
pub fn rotate_right(self, n: i128x1) -> i128x1
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn wrapping_sum(self) -> i128
pub fn wrapping_sum(self) -> i128
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) -> i128
pub fn wrapping_product(self) -> i128
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn max_element(self) -> i128
pub fn max_element(self) -> i128
Largest vector element value.
sourcepub fn min_element(self) -> i128
pub fn min_element(self) -> i128
Smallest vector element value.
source§impl Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn and(self) -> i128
pub fn and(self) -> i128
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn from_slice_aligned(slice: &[i128]) -> Self
pub fn from_slice_aligned(slice: &[i128]) -> 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: &[i128]) -> Self
pub fn from_slice_unaligned(slice: &[i128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> 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: &[i128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i128])
pub fn write_to_slice_aligned(self, slice: &mut [i128])
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 [i128])
pub fn write_to_slice_unaligned(self, slice: &mut [i128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
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 [i128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 1]>
impl Simd<[i128; 1]>
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
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 Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x1>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x1>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i128; 1]>
impl Simd<[i128; 1]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i128x1>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i128x1>
Returns a wrapper that implements Ord
.
source§impl Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub const fn new(x0: u128) -> Self
pub const fn new(x0: u128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u128) -> Self
pub const fn splat(value: u128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u128
pub unsafe fn extract_unchecked(self, index: usize) -> u128
sourcepub fn replace(self, index: usize, new_value: u128) -> Self
pub fn replace(self, index: usize, new_value: u128) -> 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: u128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u128) -> 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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn rotate_left(self, n: u128x1) -> u128x1
pub fn rotate_left(self, n: u128x1) -> u128x1
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: u128x1) -> u128x1
pub fn rotate_right(self, n: u128x1) -> u128x1
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn wrapping_sum(self) -> u128
pub fn wrapping_sum(self) -> u128
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) -> u128
pub fn wrapping_product(self) -> u128
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn max_element(self) -> u128
pub fn max_element(self) -> u128
Largest vector element value.
sourcepub fn min_element(self) -> u128
pub fn min_element(self) -> u128
Smallest vector element value.
source§impl Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn and(self) -> u128
pub fn and(self) -> u128
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn from_slice_aligned(slice: &[u128]) -> Self
pub fn from_slice_aligned(slice: &[u128]) -> 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: &[u128]) -> Self
pub fn from_slice_unaligned(slice: &[u128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> 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: &[u128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u128])
pub fn write_to_slice_aligned(self, slice: &mut [u128])
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 [u128])
pub fn write_to_slice_unaligned(self, slice: &mut [u128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
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 [u128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 1]>
impl Simd<[u128; 1]>
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
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 Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x1>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x1>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u128; 1]>
impl Simd<[u128; 1]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u128x1>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u128x1>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 1]>
impl Simd<[m128; 1]>
sourcepub const fn new(x0: bool) -> Self
pub const fn new(x0: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m128; 1]>
impl Simd<[m128; 1]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m128; 1]>
impl Simd<[m128; 1]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x1>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x1>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m128; 1]>
impl Simd<[m128; 1]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m128x1>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m128x1>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 1]>
impl Simd<[m128; 1]>
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub const fn new(
x0: i8,
x1: i8,
x2: i8,
x3: i8,
x4: i8,
x5: i8,
x6: i8,
x7: i8,
x8: i8,
x9: i8,
x10: i8,
x11: i8,
x12: i8,
x13: i8,
x14: i8,
x15: i8,
x16: i8,
x17: i8,
x18: i8,
x19: i8,
x20: i8,
x21: i8,
x22: i8,
x23: i8,
x24: i8,
x25: i8,
x26: i8,
x27: i8,
x28: i8,
x29: i8,
x30: i8,
x31: i8
) -> Self
pub const fn new( x0: i8, x1: i8, x2: i8, x3: i8, x4: i8, x5: i8, x6: i8, x7: i8, x8: i8, x9: i8, x10: i8, x11: i8, x12: i8, x13: i8, x14: i8, x15: i8, x16: i8, x17: i8, x18: i8, x19: i8, x20: i8, x21: i8, x22: i8, x23: i8, x24: i8, x25: i8, x26: i8, x27: i8, x28: i8, x29: i8, x30: i8, x31: i8 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn rotate_left(self, n: i8x32) -> i8x32
pub fn rotate_left(self, n: i8x32) -> i8x32
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: i8x32) -> i8x32
pub fn rotate_right(self, n: i8x32) -> i8x32
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 32]>
impl Simd<[i8; 32]>
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
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 Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 32]>
impl Simd<[i8; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
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 Simd<[u8; 32]>
impl Simd<[u8; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 32]>
impl Simd<[u8; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 32]>
impl Simd<[m8; 32]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool,
x16: bool,
x17: bool,
x18: bool,
x19: bool,
x20: bool,
x21: bool,
x22: bool,
x23: bool,
x24: bool,
x25: bool,
x26: bool,
x27: bool,
x28: bool,
x29: bool,
x30: bool,
x31: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool, x16: bool, x17: bool, x18: bool, x19: bool, x20: bool, x21: bool, x22: bool, x23: bool, x24: bool, x25: bool, x26: bool, x27: bool, x28: bool, x29: bool, x30: bool, x31: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 32]>
impl Simd<[m8; 32]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 32]>
impl Simd<[m8; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 32]>
impl Simd<[m8; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 32]>
impl Simd<[m8; 32]>
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub const fn new(
x0: i16,
x1: i16,
x2: i16,
x3: i16,
x4: i16,
x5: i16,
x6: i16,
x7: i16,
x8: i16,
x9: i16,
x10: i16,
x11: i16,
x12: i16,
x13: i16,
x14: i16,
x15: i16
) -> Self
pub const fn new( x0: i16, x1: i16, x2: i16, x3: i16, x4: i16, x5: i16, x6: i16, x7: i16, x8: i16, x9: i16, x10: i16, x11: i16, x12: i16, x13: i16, x14: i16, x15: i16 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i16) -> Self
pub const fn splat(value: i16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i16
pub unsafe fn extract_unchecked(self, index: usize) -> i16
sourcepub fn replace(self, index: usize, new_value: i16) -> Self
pub fn replace(self, index: usize, new_value: i16) -> 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: i16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i16) -> 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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn rotate_left(self, n: i16x16) -> i16x16
pub fn rotate_left(self, n: i16x16) -> i16x16
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: i16x16) -> i16x16
pub fn rotate_right(self, n: i16x16) -> i16x16
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn wrapping_sum(self) -> i16
pub fn wrapping_sum(self) -> i16
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) -> i16
pub fn wrapping_product(self) -> i16
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn max_element(self) -> i16
pub fn max_element(self) -> i16
Largest vector element value.
sourcepub fn min_element(self) -> i16
pub fn min_element(self) -> i16
Smallest vector element value.
source§impl Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn and(self) -> i16
pub fn and(self) -> i16
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn from_slice_aligned(slice: &[i16]) -> Self
pub fn from_slice_aligned(slice: &[i16]) -> 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: &[i16]) -> Self
pub fn from_slice_unaligned(slice: &[i16]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> 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: &[i16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i16])
pub fn write_to_slice_aligned(self, slice: &mut [i16])
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 [i16])
pub fn write_to_slice_unaligned(self, slice: &mut [i16])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
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 [i16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 16]>
impl Simd<[i16; 16]>
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
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 Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i16; 16]>
impl Simd<[i16; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i16x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i16x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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_right
.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> 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: &[u16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
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 [u16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
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 Simd<[u16; 16]>
impl Simd<[u16; 16]>
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 Simd<[u16; 16]>
impl Simd<[u16; 16]>
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 Simd<[u16; 16]>
impl Simd<[u16; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u16; 16]>
impl Simd<[u16; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u16x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u16x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 16]>
impl Simd<[m16; 16]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m16; 16]>
impl Simd<[m16; 16]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m16; 16]>
impl Simd<[m16; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m16; 16]>
impl Simd<[m16; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m16x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m16x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 16]>
impl Simd<[m16; 16]>
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub const fn new(
x0: i32,
x1: i32,
x2: i32,
x3: i32,
x4: i32,
x5: i32,
x6: i32,
x7: i32
) -> Self
pub const fn new( x0: i32, x1: i32, x2: i32, x3: i32, x4: i32, x5: i32, x6: i32, x7: i32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i32) -> Self
pub const fn splat(value: i32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i32
pub unsafe fn extract_unchecked(self, index: usize) -> i32
sourcepub fn replace(self, index: usize, new_value: i32) -> Self
pub fn replace(self, index: usize, new_value: i32) -> 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: i32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i32) -> 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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn rotate_left(self, n: i32x8) -> i32x8
pub fn rotate_left(self, n: i32x8) -> i32x8
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: i32x8) -> i32x8
pub fn rotate_right(self, n: i32x8) -> i32x8
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn wrapping_sum(self) -> i32
pub fn wrapping_sum(self) -> i32
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) -> i32
pub fn wrapping_product(self) -> i32
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn max_element(self) -> i32
pub fn max_element(self) -> i32
Largest vector element value.
sourcepub fn min_element(self) -> i32
pub fn min_element(self) -> i32
Smallest vector element value.
source§impl Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn and(self) -> i32
pub fn and(self) -> i32
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn from_slice_aligned(slice: &[i32]) -> Self
pub fn from_slice_aligned(slice: &[i32]) -> 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: &[i32]) -> Self
pub fn from_slice_unaligned(slice: &[i32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> 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: &[i32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i32])
pub fn write_to_slice_aligned(self, slice: &mut [i32])
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 [i32])
pub fn write_to_slice_unaligned(self, slice: &mut [i32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
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 [i32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 8]>
impl Simd<[i32; 8]>
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
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 Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i32; 8]>
impl Simd<[i32; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i32x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i32x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub const fn new(
x0: u32,
x1: u32,
x2: u32,
x3: u32,
x4: u32,
x5: u32,
x6: u32,
x7: u32
) -> Self
pub const fn new( x0: u32, x1: u32, x2: u32, x3: u32, x4: u32, x5: u32, x6: u32, x7: u32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u32) -> Self
pub const fn splat(value: u32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u32
pub unsafe fn extract_unchecked(self, index: usize) -> u32
sourcepub fn replace(self, index: usize, new_value: u32) -> Self
pub fn replace(self, index: usize, new_value: u32) -> 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: u32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u32) -> 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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn rotate_left(self, n: u32x8) -> u32x8
pub fn rotate_left(self, n: u32x8) -> u32x8
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: u32x8) -> u32x8
pub fn rotate_right(self, n: u32x8) -> u32x8
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn wrapping_sum(self) -> u32
pub fn wrapping_sum(self) -> u32
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) -> u32
pub fn wrapping_product(self) -> u32
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn max_element(self) -> u32
pub fn max_element(self) -> u32
Largest vector element value.
sourcepub fn min_element(self) -> u32
pub fn min_element(self) -> u32
Smallest vector element value.
source§impl Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn and(self) -> u32
pub fn and(self) -> u32
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn from_slice_aligned(slice: &[u32]) -> Self
pub fn from_slice_aligned(slice: &[u32]) -> 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: &[u32]) -> Self
pub fn from_slice_unaligned(slice: &[u32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> 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: &[u32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u32])
pub fn write_to_slice_aligned(self, slice: &mut [u32])
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 [u32])
pub fn write_to_slice_unaligned(self, slice: &mut [u32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
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 [u32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 8]>
impl Simd<[u32; 8]>
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
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 Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u32; 8]>
impl Simd<[u32; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u32x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u32x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub const fn new(
x0: f32,
x1: f32,
x2: f32,
x3: f32,
x4: f32,
x5: f32,
x6: f32,
x7: f32
) -> Self
pub const fn new( x0: f32, x1: f32, x2: f32, x3: f32, x4: f32, x5: f32, x6: f32, x7: f32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f32) -> Self
pub const fn splat(value: f32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f32
pub unsafe fn extract_unchecked(self, index: usize) -> f32
sourcepub fn replace(self, index: usize, new_value: f32) -> Self
pub fn replace(self, index: usize, new_value: f32) -> 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: f32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f32) -> 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 Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn sum(self) -> f32
pub fn sum(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f32
pub fn product(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Largest vector element value.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Smallest vector element value.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn from_slice_aligned(slice: &[f32]) -> Self
pub fn from_slice_aligned(slice: &[f32]) -> 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: &[f32]) -> Self
pub fn from_slice_unaligned(slice: &[f32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> 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: &[f32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f32])
pub fn write_to_slice_aligned(self, slice: &mut [f32])
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 [f32])
pub fn write_to_slice_unaligned(self, slice: &mut [f32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
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 [f32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
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 Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub const MIN_POSITIVE: f32x8 = _
pub const MIN_POSITIVE: f32x8 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f32x8 = _
pub const NEG_INFINITY: f32x8 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f32x8 = _
pub const FRAC_2_SQRT_PI: f32x8 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f32x8 = _
pub const FRAC_1_SQRT_2: f32x8 = _
1/sqrt(2)
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f32; 8]>
impl Simd<[f32; 8]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m32; 8]>
impl Simd<[m32; 8]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m32; 8]>
impl Simd<[m32; 8]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m32; 8]>
impl Simd<[m32; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m32; 8]>
impl Simd<[m32; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m32x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m32x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m32; 8]>
impl Simd<[m32; 8]>
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub const fn new(x0: i64, x1: i64, x2: i64, x3: i64) -> Self
pub const fn new(x0: i64, x1: i64, x2: i64, x3: i64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i64) -> Self
pub const fn splat(value: i64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i64
pub unsafe fn extract_unchecked(self, index: usize) -> i64
sourcepub fn replace(self, index: usize, new_value: i64) -> Self
pub fn replace(self, index: usize, new_value: i64) -> 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: i64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i64) -> 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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn rotate_left(self, n: i64x4) -> i64x4
pub fn rotate_left(self, n: i64x4) -> i64x4
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: i64x4) -> i64x4
pub fn rotate_right(self, n: i64x4) -> i64x4
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn wrapping_sum(self) -> i64
pub fn wrapping_sum(self) -> i64
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) -> i64
pub fn wrapping_product(self) -> i64
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn max_element(self) -> i64
pub fn max_element(self) -> i64
Largest vector element value.
sourcepub fn min_element(self) -> i64
pub fn min_element(self) -> i64
Smallest vector element value.
source§impl Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn and(self) -> i64
pub fn and(self) -> i64
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn from_slice_aligned(slice: &[i64]) -> Self
pub fn from_slice_aligned(slice: &[i64]) -> 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: &[i64]) -> Self
pub fn from_slice_unaligned(slice: &[i64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> 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: &[i64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i64])
pub fn write_to_slice_aligned(self, slice: &mut [i64])
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 [i64])
pub fn write_to_slice_unaligned(self, slice: &mut [i64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
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 [i64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 4]>
impl Simd<[i64; 4]>
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
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 Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i64; 4]>
impl Simd<[i64; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i64x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i64x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub const fn new(x0: u64, x1: u64, x2: u64, x3: u64) -> Self
pub const fn new(x0: u64, x1: u64, x2: u64, x3: u64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u64) -> Self
pub const fn splat(value: u64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u64
pub unsafe fn extract_unchecked(self, index: usize) -> u64
sourcepub fn replace(self, index: usize, new_value: u64) -> Self
pub fn replace(self, index: usize, new_value: u64) -> 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: u64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u64) -> 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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn rotate_left(self, n: u64x4) -> u64x4
pub fn rotate_left(self, n: u64x4) -> u64x4
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: u64x4) -> u64x4
pub fn rotate_right(self, n: u64x4) -> u64x4
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn wrapping_sum(self) -> u64
pub fn wrapping_sum(self) -> u64
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) -> u64
pub fn wrapping_product(self) -> u64
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn max_element(self) -> u64
pub fn max_element(self) -> u64
Largest vector element value.
sourcepub fn min_element(self) -> u64
pub fn min_element(self) -> u64
Smallest vector element value.
source§impl Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn and(self) -> u64
pub fn and(self) -> u64
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn from_slice_aligned(slice: &[u64]) -> Self
pub fn from_slice_aligned(slice: &[u64]) -> 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: &[u64]) -> Self
pub fn from_slice_unaligned(slice: &[u64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> 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: &[u64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u64])
pub fn write_to_slice_aligned(self, slice: &mut [u64])
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 [u64])
pub fn write_to_slice_unaligned(self, slice: &mut [u64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
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 [u64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 4]>
impl Simd<[u64; 4]>
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
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 Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u64; 4]>
impl Simd<[u64; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u64x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u64x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub const fn new(x0: f64, x1: f64, x2: f64, x3: f64) -> Self
pub const fn new(x0: f64, x1: f64, x2: f64, x3: f64) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f64) -> Self
pub const fn splat(value: f64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f64
pub unsafe fn extract_unchecked(self, index: usize) -> f64
sourcepub fn replace(self, index: usize, new_value: f64) -> Self
pub fn replace(self, index: usize, new_value: f64) -> 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: f64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f64) -> 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 Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn sum(self) -> f64
pub fn sum(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f64
pub fn product(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn max_element(self) -> f64
pub fn max_element(self) -> f64
Largest vector element value.
sourcepub fn min_element(self) -> f64
pub fn min_element(self) -> f64
Smallest vector element value.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn from_slice_aligned(slice: &[f64]) -> Self
pub fn from_slice_aligned(slice: &[f64]) -> 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: &[f64]) -> Self
pub fn from_slice_unaligned(slice: &[f64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> 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: &[f64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f64])
pub fn write_to_slice_aligned(self, slice: &mut [f64])
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 [f64])
pub fn write_to_slice_unaligned(self, slice: &mut [f64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
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 [f64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
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 Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub const MIN_POSITIVE: f64x4 = _
pub const MIN_POSITIVE: f64x4 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f64x4 = _
pub const NEG_INFINITY: f64x4 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f64x4 = _
pub const FRAC_2_SQRT_PI: f64x4 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f64x4 = _
pub const FRAC_1_SQRT_2: f64x4 = _
1/sqrt(2)
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f64; 4]>
impl Simd<[f64; 4]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m64; 4]>
impl Simd<[m64; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m64; 4]>
impl Simd<[m64; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m64; 4]>
impl Simd<[m64; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m64; 4]>
impl Simd<[m64; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m64x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m64x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m64; 4]>
impl Simd<[m64; 4]>
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub const fn new(x0: i128, x1: i128) -> Self
pub const fn new(x0: i128, x1: i128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i128) -> Self
pub const fn splat(value: i128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i128
pub unsafe fn extract_unchecked(self, index: usize) -> i128
sourcepub fn replace(self, index: usize, new_value: i128) -> Self
pub fn replace(self, index: usize, new_value: i128) -> 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: i128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i128) -> 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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn rotate_left(self, n: i128x2) -> i128x2
pub fn rotate_left(self, n: i128x2) -> i128x2
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: i128x2) -> i128x2
pub fn rotate_right(self, n: i128x2) -> i128x2
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn wrapping_sum(self) -> i128
pub fn wrapping_sum(self) -> i128
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) -> i128
pub fn wrapping_product(self) -> i128
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn max_element(self) -> i128
pub fn max_element(self) -> i128
Largest vector element value.
sourcepub fn min_element(self) -> i128
pub fn min_element(self) -> i128
Smallest vector element value.
source§impl Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn and(self) -> i128
pub fn and(self) -> i128
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn from_slice_aligned(slice: &[i128]) -> Self
pub fn from_slice_aligned(slice: &[i128]) -> 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: &[i128]) -> Self
pub fn from_slice_unaligned(slice: &[i128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> 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: &[i128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i128])
pub fn write_to_slice_aligned(self, slice: &mut [i128])
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 [i128])
pub fn write_to_slice_unaligned(self, slice: &mut [i128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
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 [i128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 2]>
impl Simd<[i128; 2]>
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
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 Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i128; 2]>
impl Simd<[i128; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i128x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i128x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub const fn new(x0: u128, x1: u128) -> Self
pub const fn new(x0: u128, x1: u128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u128) -> Self
pub const fn splat(value: u128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u128
pub unsafe fn extract_unchecked(self, index: usize) -> u128
sourcepub fn replace(self, index: usize, new_value: u128) -> Self
pub fn replace(self, index: usize, new_value: u128) -> 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: u128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u128) -> 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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn rotate_left(self, n: u128x2) -> u128x2
pub fn rotate_left(self, n: u128x2) -> u128x2
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: u128x2) -> u128x2
pub fn rotate_right(self, n: u128x2) -> u128x2
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn wrapping_sum(self) -> u128
pub fn wrapping_sum(self) -> u128
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) -> u128
pub fn wrapping_product(self) -> u128
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn max_element(self) -> u128
pub fn max_element(self) -> u128
Largest vector element value.
sourcepub fn min_element(self) -> u128
pub fn min_element(self) -> u128
Smallest vector element value.
source§impl Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn and(self) -> u128
pub fn and(self) -> u128
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn from_slice_aligned(slice: &[u128]) -> Self
pub fn from_slice_aligned(slice: &[u128]) -> 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: &[u128]) -> Self
pub fn from_slice_unaligned(slice: &[u128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> 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: &[u128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u128])
pub fn write_to_slice_aligned(self, slice: &mut [u128])
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 [u128])
pub fn write_to_slice_unaligned(self, slice: &mut [u128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
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 [u128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 2]>
impl Simd<[u128; 2]>
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
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 Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u128; 2]>
impl Simd<[u128; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u128x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u128x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 2]>
impl Simd<[m128; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m128; 2]>
impl Simd<[m128; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m128; 2]>
impl Simd<[m128; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m128; 2]>
impl Simd<[m128; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m128x2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m128x2>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 2]>
impl Simd<[m128; 2]>
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub const fn new(
x0: i8,
x1: i8,
x2: i8,
x3: i8,
x4: i8,
x5: i8,
x6: i8,
x7: i8,
x8: i8,
x9: i8,
x10: i8,
x11: i8,
x12: i8,
x13: i8,
x14: i8,
x15: i8,
x16: i8,
x17: i8,
x18: i8,
x19: i8,
x20: i8,
x21: i8,
x22: i8,
x23: i8,
x24: i8,
x25: i8,
x26: i8,
x27: i8,
x28: i8,
x29: i8,
x30: i8,
x31: i8,
x32: i8,
x33: i8,
x34: i8,
x35: i8,
x36: i8,
x37: i8,
x38: i8,
x39: i8,
x40: i8,
x41: i8,
x42: i8,
x43: i8,
x44: i8,
x45: i8,
x46: i8,
x47: i8,
x48: i8,
x49: i8,
x50: i8,
x51: i8,
x52: i8,
x53: i8,
x54: i8,
x55: i8,
x56: i8,
x57: i8,
x58: i8,
x59: i8,
x60: i8,
x61: i8,
x62: i8,
x63: i8
) -> Self
pub const fn new( x0: i8, x1: i8, x2: i8, x3: i8, x4: i8, x5: i8, x6: i8, x7: i8, x8: i8, x9: i8, x10: i8, x11: i8, x12: i8, x13: i8, x14: i8, x15: i8, x16: i8, x17: i8, x18: i8, x19: i8, x20: i8, x21: i8, x22: i8, x23: i8, x24: i8, x25: i8, x26: i8, x27: i8, x28: i8, x29: i8, x30: i8, x31: i8, x32: i8, x33: i8, x34: i8, x35: i8, x36: i8, x37: i8, x38: i8, x39: i8, x40: i8, x41: i8, x42: i8, x43: i8, x44: i8, x45: i8, x46: i8, x47: i8, x48: i8, x49: i8, x50: i8, x51: i8, x52: i8, x53: i8, x54: i8, x55: i8, x56: i8, x57: i8, x58: i8, x59: i8, x60: i8, x61: i8, x62: i8, x63: i8 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i8) -> Self
pub const fn splat(value: i8) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i8
pub unsafe fn extract_unchecked(self, index: usize) -> i8
sourcepub fn replace(self, index: usize, new_value: i8) -> Self
pub fn replace(self, index: usize, new_value: i8) -> 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: i8) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i8) -> 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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn rotate_left(self, n: i8x64) -> i8x64
pub fn rotate_left(self, n: i8x64) -> i8x64
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: i8x64) -> i8x64
pub fn rotate_right(self, n: i8x64) -> i8x64
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn wrapping_sum(self) -> i8
pub fn wrapping_sum(self) -> i8
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) -> i8
pub fn wrapping_product(self) -> i8
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn max_element(self) -> i8
pub fn max_element(self) -> i8
Largest vector element value.
sourcepub fn min_element(self) -> i8
pub fn min_element(self) -> i8
Smallest vector element value.
source§impl Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn and(self) -> i8
pub fn and(self) -> i8
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn from_slice_aligned(slice: &[i8]) -> Self
pub fn from_slice_aligned(slice: &[i8]) -> 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: &[i8]) -> Self
pub fn from_slice_unaligned(slice: &[i8]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i8]) -> 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: &[i8]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i8]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i8])
pub fn write_to_slice_aligned(self, slice: &mut [i8])
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 [i8])
pub fn write_to_slice_unaligned(self, slice: &mut [i8])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i8])
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 [i8])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i8])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i8; 64]>
impl Simd<[i8; 64]>
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
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 Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x64>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i8x64>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i8; 64]>
impl Simd<[i8; 64]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i8x64>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i8x64>
Returns a wrapper that implements Ord
.
source§impl Simd<[u8; 64]>
impl Simd<[u8; 64]>
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,
x32: u8,
x33: u8,
x34: u8,
x35: u8,
x36: u8,
x37: u8,
x38: u8,
x39: u8,
x40: u8,
x41: u8,
x42: u8,
x43: u8,
x44: u8,
x45: u8,
x46: u8,
x47: u8,
x48: u8,
x49: u8,
x50: u8,
x51: u8,
x52: u8,
x53: u8,
x54: u8,
x55: u8,
x56: u8,
x57: u8,
x58: u8,
x59: u8,
x60: u8,
x61: u8,
x62: u8,
x63: 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, x32: u8, x33: u8, x34: u8, x35: u8, x36: u8, x37: u8, x38: u8, x39: u8, x40: u8, x41: u8, x42: u8, x43: u8, x44: u8, x45: u8, x46: u8, x47: u8, x48: u8, x49: u8, x50: u8, x51: u8, x52: u8, x53: u8, x54: u8, x55: u8, x56: u8, x57: u8, x58: u8, x59: u8, x60: u8, x61: u8, x62: u8, x63: 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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
sourcepub fn rotate_left(self, n: u8x64) -> u8x64
pub fn rotate_left(self, n: u8x64) -> u8x64
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: u8x64) -> u8x64
pub fn rotate_right(self, n: u8x64) -> u8x64
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
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 Simd<[u8; 64]>
impl Simd<[u8; 64]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x64>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u8x64>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u8; 64]>
impl Simd<[u8; 64]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u8x64>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u8x64>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 64]>
impl Simd<[m8; 64]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool,
x16: bool,
x17: bool,
x18: bool,
x19: bool,
x20: bool,
x21: bool,
x22: bool,
x23: bool,
x24: bool,
x25: bool,
x26: bool,
x27: bool,
x28: bool,
x29: bool,
x30: bool,
x31: bool,
x32: bool,
x33: bool,
x34: bool,
x35: bool,
x36: bool,
x37: bool,
x38: bool,
x39: bool,
x40: bool,
x41: bool,
x42: bool,
x43: bool,
x44: bool,
x45: bool,
x46: bool,
x47: bool,
x48: bool,
x49: bool,
x50: bool,
x51: bool,
x52: bool,
x53: bool,
x54: bool,
x55: bool,
x56: bool,
x57: bool,
x58: bool,
x59: bool,
x60: bool,
x61: bool,
x62: bool,
x63: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool, x16: bool, x17: bool, x18: bool, x19: bool, x20: bool, x21: bool, x22: bool, x23: bool, x24: bool, x25: bool, x26: bool, x27: bool, x28: bool, x29: bool, x30: bool, x31: bool, x32: bool, x33: bool, x34: bool, x35: bool, x36: bool, x37: bool, x38: bool, x39: bool, x40: bool, x41: bool, x42: bool, x43: bool, x44: bool, x45: bool, x46: bool, x47: bool, x48: bool, x49: bool, x50: bool, x51: bool, x52: bool, x53: bool, x54: bool, x55: bool, x56: bool, x57: bool, x58: bool, x59: bool, x60: bool, x61: bool, x62: bool, x63: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m8; 64]>
impl Simd<[m8; 64]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m8; 64]>
impl Simd<[m8; 64]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x64>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m8x64>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m8; 64]>
impl Simd<[m8; 64]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m8x64>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m8x64>
Returns a wrapper that implements Ord
.
source§impl Simd<[m8; 64]>
impl Simd<[m8; 64]>
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub const fn new(
x0: i16,
x1: i16,
x2: i16,
x3: i16,
x4: i16,
x5: i16,
x6: i16,
x7: i16,
x8: i16,
x9: i16,
x10: i16,
x11: i16,
x12: i16,
x13: i16,
x14: i16,
x15: i16,
x16: i16,
x17: i16,
x18: i16,
x19: i16,
x20: i16,
x21: i16,
x22: i16,
x23: i16,
x24: i16,
x25: i16,
x26: i16,
x27: i16,
x28: i16,
x29: i16,
x30: i16,
x31: i16
) -> Self
pub const fn new( x0: i16, x1: i16, x2: i16, x3: i16, x4: i16, x5: i16, x6: i16, x7: i16, x8: i16, x9: i16, x10: i16, x11: i16, x12: i16, x13: i16, x14: i16, x15: i16, x16: i16, x17: i16, x18: i16, x19: i16, x20: i16, x21: i16, x22: i16, x23: i16, x24: i16, x25: i16, x26: i16, x27: i16, x28: i16, x29: i16, x30: i16, x31: i16 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i16) -> Self
pub const fn splat(value: i16) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i16
pub unsafe fn extract_unchecked(self, index: usize) -> i16
sourcepub fn replace(self, index: usize, new_value: i16) -> Self
pub fn replace(self, index: usize, new_value: i16) -> 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: i16) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i16) -> 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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn rotate_left(self, n: i16x32) -> i16x32
pub fn rotate_left(self, n: i16x32) -> i16x32
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: i16x32) -> i16x32
pub fn rotate_right(self, n: i16x32) -> i16x32
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn wrapping_sum(self) -> i16
pub fn wrapping_sum(self) -> i16
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) -> i16
pub fn wrapping_product(self) -> i16
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn max_element(self) -> i16
pub fn max_element(self) -> i16
Largest vector element value.
sourcepub fn min_element(self) -> i16
pub fn min_element(self) -> i16
Smallest vector element value.
source§impl Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn and(self) -> i16
pub fn and(self) -> i16
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn from_slice_aligned(slice: &[i16]) -> Self
pub fn from_slice_aligned(slice: &[i16]) -> 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: &[i16]) -> Self
pub fn from_slice_unaligned(slice: &[i16]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i16]) -> 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: &[i16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i16])
pub fn write_to_slice_aligned(self, slice: &mut [i16])
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 [i16])
pub fn write_to_slice_unaligned(self, slice: &mut [i16])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i16])
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 [i16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i16; 32]>
impl Simd<[i16; 32]>
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
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 Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i16x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i16; 32]>
impl Simd<[i16; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i16x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i16x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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,
x16: u16,
x17: u16,
x18: u16,
x19: u16,
x20: u16,
x21: u16,
x22: u16,
x23: u16,
x24: u16,
x25: u16,
x26: u16,
x27: u16,
x28: u16,
x29: u16,
x30: u16,
x31: 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, x16: u16, x17: u16, x18: u16, x19: u16, x20: u16, x21: u16, x22: u16, x23: u16, x24: u16, x25: u16, x26: u16, x27: u16, x28: u16, x29: u16, x30: u16, x31: 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.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
sourcepub fn rotate_left(self, n: u16x32) -> u16x32
pub fn rotate_left(self, n: u16x32) -> u16x32
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: u16x32) -> u16x32
pub fn rotate_right(self, n: u16x32) -> u16x32
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 Simd<[u16; 32]>
impl Simd<[u16; 32]>
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.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u16]) -> 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: &[u16]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u16]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u16])
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 [u16])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u16])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
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 Simd<[u16; 32]>
impl Simd<[u16; 32]>
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 Simd<[u16; 32]>
impl Simd<[u16; 32]>
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 Simd<[u16; 32]>
impl Simd<[u16; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u16x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u16; 32]>
impl Simd<[u16; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u16x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u16x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 32]>
impl Simd<[m16; 32]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool,
x16: bool,
x17: bool,
x18: bool,
x19: bool,
x20: bool,
x21: bool,
x22: bool,
x23: bool,
x24: bool,
x25: bool,
x26: bool,
x27: bool,
x28: bool,
x29: bool,
x30: bool,
x31: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool, x16: bool, x17: bool, x18: bool, x19: bool, x20: bool, x21: bool, x22: bool, x23: bool, x24: bool, x25: bool, x26: bool, x27: bool, x28: bool, x29: bool, x30: bool, x31: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m16; 32]>
impl Simd<[m16; 32]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m16; 32]>
impl Simd<[m16; 32]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x32>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m16x32>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m16; 32]>
impl Simd<[m16; 32]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m16x32>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m16x32>
Returns a wrapper that implements Ord
.
source§impl Simd<[m16; 32]>
impl Simd<[m16; 32]>
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub const fn new(
x0: i32,
x1: i32,
x2: i32,
x3: i32,
x4: i32,
x5: i32,
x6: i32,
x7: i32,
x8: i32,
x9: i32,
x10: i32,
x11: i32,
x12: i32,
x13: i32,
x14: i32,
x15: i32
) -> Self
pub const fn new( x0: i32, x1: i32, x2: i32, x3: i32, x4: i32, x5: i32, x6: i32, x7: i32, x8: i32, x9: i32, x10: i32, x11: i32, x12: i32, x13: i32, x14: i32, x15: i32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i32) -> Self
pub const fn splat(value: i32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i32
pub unsafe fn extract_unchecked(self, index: usize) -> i32
sourcepub fn replace(self, index: usize, new_value: i32) -> Self
pub fn replace(self, index: usize, new_value: i32) -> 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: i32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i32) -> 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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn rotate_left(self, n: i32x16) -> i32x16
pub fn rotate_left(self, n: i32x16) -> i32x16
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: i32x16) -> i32x16
pub fn rotate_right(self, n: i32x16) -> i32x16
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn wrapping_sum(self) -> i32
pub fn wrapping_sum(self) -> i32
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) -> i32
pub fn wrapping_product(self) -> i32
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn max_element(self) -> i32
pub fn max_element(self) -> i32
Largest vector element value.
sourcepub fn min_element(self) -> i32
pub fn min_element(self) -> i32
Smallest vector element value.
source§impl Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn and(self) -> i32
pub fn and(self) -> i32
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn from_slice_aligned(slice: &[i32]) -> Self
pub fn from_slice_aligned(slice: &[i32]) -> 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: &[i32]) -> Self
pub fn from_slice_unaligned(slice: &[i32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i32]) -> 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: &[i32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i32])
pub fn write_to_slice_aligned(self, slice: &mut [i32])
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 [i32])
pub fn write_to_slice_unaligned(self, slice: &mut [i32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i32])
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 [i32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i32; 16]>
impl Simd<[i32; 16]>
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
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 Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i32x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i32; 16]>
impl Simd<[i32; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i32x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i32x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub const fn new(
x0: u32,
x1: u32,
x2: u32,
x3: u32,
x4: u32,
x5: u32,
x6: u32,
x7: u32,
x8: u32,
x9: u32,
x10: u32,
x11: u32,
x12: u32,
x13: u32,
x14: u32,
x15: u32
) -> Self
pub const fn new( x0: u32, x1: u32, x2: u32, x3: u32, x4: u32, x5: u32, x6: u32, x7: u32, x8: u32, x9: u32, x10: u32, x11: u32, x12: u32, x13: u32, x14: u32, x15: u32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u32) -> Self
pub const fn splat(value: u32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u32
pub unsafe fn extract_unchecked(self, index: usize) -> u32
sourcepub fn replace(self, index: usize, new_value: u32) -> Self
pub fn replace(self, index: usize, new_value: u32) -> 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: u32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u32) -> 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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn rotate_left(self, n: u32x16) -> u32x16
pub fn rotate_left(self, n: u32x16) -> u32x16
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: u32x16) -> u32x16
pub fn rotate_right(self, n: u32x16) -> u32x16
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn wrapping_sum(self) -> u32
pub fn wrapping_sum(self) -> u32
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) -> u32
pub fn wrapping_product(self) -> u32
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn max_element(self) -> u32
pub fn max_element(self) -> u32
Largest vector element value.
sourcepub fn min_element(self) -> u32
pub fn min_element(self) -> u32
Smallest vector element value.
source§impl Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn and(self) -> u32
pub fn and(self) -> u32
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn from_slice_aligned(slice: &[u32]) -> Self
pub fn from_slice_aligned(slice: &[u32]) -> 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: &[u32]) -> Self
pub fn from_slice_unaligned(slice: &[u32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u32]) -> 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: &[u32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u32])
pub fn write_to_slice_aligned(self, slice: &mut [u32])
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 [u32])
pub fn write_to_slice_unaligned(self, slice: &mut [u32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u32])
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 [u32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u32; 16]>
impl Simd<[u32; 16]>
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
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 Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u32x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u32; 16]>
impl Simd<[u32; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u32x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u32x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub const fn new(
x0: f32,
x1: f32,
x2: f32,
x3: f32,
x4: f32,
x5: f32,
x6: f32,
x7: f32,
x8: f32,
x9: f32,
x10: f32,
x11: f32,
x12: f32,
x13: f32,
x14: f32,
x15: f32
) -> Self
pub const fn new( x0: f32, x1: f32, x2: f32, x3: f32, x4: f32, x5: f32, x6: f32, x7: f32, x8: f32, x9: f32, x10: f32, x11: f32, x12: f32, x13: f32, x14: f32, x15: f32 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f32) -> Self
pub const fn splat(value: f32) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f32
pub unsafe fn extract_unchecked(self, index: usize) -> f32
sourcepub fn replace(self, index: usize, new_value: f32) -> Self
pub fn replace(self, index: usize, new_value: f32) -> 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: f32) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f32) -> 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 Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn sum(self) -> f32
pub fn sum(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f32
pub fn product(self) -> f32
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Largest vector element value.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Smallest vector element value.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn from_slice_aligned(slice: &[f32]) -> Self
pub fn from_slice_aligned(slice: &[f32]) -> 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: &[f32]) -> Self
pub fn from_slice_unaligned(slice: &[f32]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f32]) -> 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: &[f32]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f32]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f32])
pub fn write_to_slice_aligned(self, slice: &mut [f32])
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 [f32])
pub fn write_to_slice_unaligned(self, slice: &mut [f32])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f32])
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 [f32])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f32])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
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 Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub const MIN_POSITIVE: f32x16 = _
pub const MIN_POSITIVE: f32x16 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f32x16 = _
pub const NEG_INFINITY: f32x16 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f32x16 = _
pub const FRAC_2_SQRT_PI: f32x16 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f32x16 = _
pub const FRAC_1_SQRT_2: f32x16 = _
1/sqrt(2)
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f32; 16]>
impl Simd<[f32; 16]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m32; 16]>
impl Simd<[m32; 16]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool,
x8: bool,
x9: bool,
x10: bool,
x11: bool,
x12: bool,
x13: bool,
x14: bool,
x15: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool, x8: bool, x9: bool, x10: bool, x11: bool, x12: bool, x13: bool, x14: bool, x15: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m32; 16]>
impl Simd<[m32; 16]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m32; 16]>
impl Simd<[m32; 16]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x16>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m32x16>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m32; 16]>
impl Simd<[m32; 16]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m32x16>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m32x16>
Returns a wrapper that implements Ord
.
source§impl Simd<[m32; 16]>
impl Simd<[m32; 16]>
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub const fn new(
x0: i64,
x1: i64,
x2: i64,
x3: i64,
x4: i64,
x5: i64,
x6: i64,
x7: i64
) -> Self
pub const fn new( x0: i64, x1: i64, x2: i64, x3: i64, x4: i64, x5: i64, x6: i64, x7: i64 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i64) -> Self
pub const fn splat(value: i64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i64
pub unsafe fn extract_unchecked(self, index: usize) -> i64
sourcepub fn replace(self, index: usize, new_value: i64) -> Self
pub fn replace(self, index: usize, new_value: i64) -> 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: i64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i64) -> 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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn rotate_left(self, n: i64x8) -> i64x8
pub fn rotate_left(self, n: i64x8) -> i64x8
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: i64x8) -> i64x8
pub fn rotate_right(self, n: i64x8) -> i64x8
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn wrapping_sum(self) -> i64
pub fn wrapping_sum(self) -> i64
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) -> i64
pub fn wrapping_product(self) -> i64
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn max_element(self) -> i64
pub fn max_element(self) -> i64
Largest vector element value.
sourcepub fn min_element(self) -> i64
pub fn min_element(self) -> i64
Smallest vector element value.
source§impl Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn and(self) -> i64
pub fn and(self) -> i64
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn from_slice_aligned(slice: &[i64]) -> Self
pub fn from_slice_aligned(slice: &[i64]) -> 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: &[i64]) -> Self
pub fn from_slice_unaligned(slice: &[i64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> 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: &[i64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i64])
pub fn write_to_slice_aligned(self, slice: &mut [i64])
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 [i64])
pub fn write_to_slice_unaligned(self, slice: &mut [i64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
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 [i64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i64; 8]>
impl Simd<[i64; 8]>
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
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 Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i64; 8]>
impl Simd<[i64; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i64x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i64x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub const fn new(
x0: u64,
x1: u64,
x2: u64,
x3: u64,
x4: u64,
x5: u64,
x6: u64,
x7: u64
) -> Self
pub const fn new( x0: u64, x1: u64, x2: u64, x3: u64, x4: u64, x5: u64, x6: u64, x7: u64 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u64) -> Self
pub const fn splat(value: u64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u64
pub unsafe fn extract_unchecked(self, index: usize) -> u64
sourcepub fn replace(self, index: usize, new_value: u64) -> Self
pub fn replace(self, index: usize, new_value: u64) -> 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: u64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u64) -> 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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn rotate_left(self, n: u64x8) -> u64x8
pub fn rotate_left(self, n: u64x8) -> u64x8
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: u64x8) -> u64x8
pub fn rotate_right(self, n: u64x8) -> u64x8
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn wrapping_sum(self) -> u64
pub fn wrapping_sum(self) -> u64
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) -> u64
pub fn wrapping_product(self) -> u64
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn max_element(self) -> u64
pub fn max_element(self) -> u64
Largest vector element value.
sourcepub fn min_element(self) -> u64
pub fn min_element(self) -> u64
Smallest vector element value.
source§impl Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn and(self) -> u64
pub fn and(self) -> u64
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn from_slice_aligned(slice: &[u64]) -> Self
pub fn from_slice_aligned(slice: &[u64]) -> 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: &[u64]) -> Self
pub fn from_slice_unaligned(slice: &[u64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u64]) -> 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: &[u64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u64])
pub fn write_to_slice_aligned(self, slice: &mut [u64])
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 [u64])
pub fn write_to_slice_unaligned(self, slice: &mut [u64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u64])
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 [u64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u64; 8]>
impl Simd<[u64; 8]>
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
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 Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u64x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u64; 8]>
impl Simd<[u64; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u64x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u64x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub const fn new(
x0: f64,
x1: f64,
x2: f64,
x3: f64,
x4: f64,
x5: f64,
x6: f64,
x7: f64
) -> Self
pub const fn new( x0: f64, x1: f64, x2: f64, x3: f64, x4: f64, x5: f64, x6: f64, x7: f64 ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: f64) -> Self
pub const fn splat(value: f64) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> f64
pub unsafe fn extract_unchecked(self, index: usize) -> f64
sourcepub fn replace(self, index: usize, new_value: f64) -> Self
pub fn replace(self, index: usize, new_value: f64) -> 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: f64) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: f64) -> 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 Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn sum(self) -> f64
pub fn sum(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
sourcepub fn product(self) -> f64
pub fn product(self) -> f64
Horizontal 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 one of the vector element is NaN
the reduction returns
NaN
. The resulting NaN
is not required to be equal to any
of the NaN
s in the vector.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn max_element(self) -> f64
pub fn max_element(self) -> f64
Largest vector element value.
sourcepub fn min_element(self) -> f64
pub fn min_element(self) -> f64
Smallest vector element value.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn from_slice_aligned(slice: &[f64]) -> Self
pub fn from_slice_aligned(slice: &[f64]) -> 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: &[f64]) -> Self
pub fn from_slice_unaligned(slice: &[f64]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[f64]) -> 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: &[f64]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[f64]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [f64])
pub fn write_to_slice_aligned(self, slice: &mut [f64])
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 [f64])
pub fn write_to_slice_unaligned(self, slice: &mut [f64])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [f64])
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 [f64])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [f64])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
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 Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub const MIN_POSITIVE: f64x8 = _
pub const MIN_POSITIVE: f64x8 = _
Smallest positive normal value.
sourcepub const NEG_INFINITY: f64x8 = _
pub const NEG_INFINITY: f64x8 = _
Negative infinity (-∞).
sourcepub const FRAC_2_SQRT_PI: f64x8 = _
pub const FRAC_2_SQRT_PI: f64x8 = _
2/sqrt(π)
sourcepub const FRAC_1_SQRT_2: f64x8 = _
pub const FRAC_1_SQRT_2: f64x8 = _
1/sqrt(2)
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn mul_adde(self, y: Self, z: Self) -> Self
pub fn mul_adde(self, y: Self, z: Self) -> Self
Fused multiply add estimate: ~= self * y + z
While fused multiply-add (fma
) has infinite precision,
mul_adde
has at worst the same precision of a multiply followed by an add.
This might be more efficient on architectures that do not have an fma
instruction.
source§impl Simd<[f64; 8]>
impl Simd<[f64; 8]>
sourcepub fn sin_cos_pi(self) -> (Self, Self)
pub fn sin_cos_pi(self) -> (Self, Self)
Sine and cosine of self * PI
.
source§impl Simd<[m64; 8]>
impl Simd<[m64; 8]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m64; 8]>
impl Simd<[m64; 8]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m64; 8]>
impl Simd<[m64; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m64x8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m64; 8]>
impl Simd<[m64; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m64x8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m64x8>
Returns a wrapper that implements Ord
.
source§impl Simd<[m64; 8]>
impl Simd<[m64; 8]>
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub const fn new(x0: i128, x1: i128, x2: i128, x3: i128) -> Self
pub const fn new(x0: i128, x1: i128, x2: i128, x3: i128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: i128) -> Self
pub const fn splat(value: i128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> i128
pub unsafe fn extract_unchecked(self, index: usize) -> i128
sourcepub fn replace(self, index: usize, new_value: i128) -> Self
pub fn replace(self, index: usize, new_value: i128) -> 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: i128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: i128) -> 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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn rotate_left(self, n: i128x4) -> i128x4
pub fn rotate_left(self, n: i128x4) -> i128x4
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: i128x4) -> i128x4
pub fn rotate_right(self, n: i128x4) -> i128x4
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn wrapping_sum(self) -> i128
pub fn wrapping_sum(self) -> i128
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) -> i128
pub fn wrapping_product(self) -> i128
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn max_element(self) -> i128
pub fn max_element(self) -> i128
Largest vector element value.
sourcepub fn min_element(self) -> i128
pub fn min_element(self) -> i128
Smallest vector element value.
source§impl Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn and(self) -> i128
pub fn and(self) -> i128
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn from_slice_aligned(slice: &[i128]) -> Self
pub fn from_slice_aligned(slice: &[i128]) -> 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: &[i128]) -> Self
pub fn from_slice_unaligned(slice: &[i128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[i128]) -> 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: &[i128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [i128])
pub fn write_to_slice_aligned(self, slice: &mut [i128])
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 [i128])
pub fn write_to_slice_unaligned(self, slice: &mut [i128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i128])
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 [i128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[i128; 4]>
impl Simd<[i128; 4]>
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
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 Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i128x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[i128; 4]>
impl Simd<[i128; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<i128x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<i128x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub const fn new(x0: u128, x1: u128, x2: u128, x3: u128) -> Self
pub const fn new(x0: u128, x1: u128, x2: u128, x3: u128) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: u128) -> Self
pub const fn splat(value: u128) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> u128
pub unsafe fn extract_unchecked(self, index: usize) -> u128
sourcepub fn replace(self, index: usize, new_value: u128) -> Self
pub fn replace(self, index: usize, new_value: u128) -> 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: u128) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: u128) -> 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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn rotate_left(self, n: u128x4) -> u128x4
pub fn rotate_left(self, n: u128x4) -> u128x4
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: u128x4) -> u128x4
pub fn rotate_right(self, n: u128x4) -> u128x4
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn wrapping_sum(self) -> u128
pub fn wrapping_sum(self) -> u128
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) -> u128
pub fn wrapping_product(self) -> u128
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn max_element(self) -> u128
pub fn max_element(self) -> u128
Largest vector element value.
sourcepub fn min_element(self) -> u128
pub fn min_element(self) -> u128
Smallest vector element value.
source§impl Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn and(self) -> u128
pub fn and(self) -> u128
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn from_slice_aligned(slice: &[u128]) -> Self
pub fn from_slice_aligned(slice: &[u128]) -> 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: &[u128]) -> Self
pub fn from_slice_unaligned(slice: &[u128]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[u128]) -> 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: &[u128]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[u128]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [u128])
pub fn write_to_slice_aligned(self, slice: &mut [u128])
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 [u128])
pub fn write_to_slice_unaligned(self, slice: &mut [u128])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [u128])
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 [u128])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [u128])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[u128; 4]>
impl Simd<[u128; 4]>
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
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 Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<u128x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[u128; 4]>
impl Simd<[u128; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<u128x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<u128x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 4]>
impl Simd<[m128; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[m128; 4]>
impl Simd<[m128; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[m128; 4]>
impl Simd<[m128; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<m128x4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[m128; 4]>
impl Simd<[m128; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<m128x4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<m128x4>
Returns a wrapper that implements Ord
.
source§impl Simd<[m128; 4]>
impl Simd<[m128; 4]>
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub const fn new(x0: isize, x1: isize) -> Self
pub const fn new(x0: isize, x1: isize) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: isize) -> Self
pub const fn splat(value: isize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> isize
pub unsafe fn extract_unchecked(self, index: usize) -> isize
sourcepub fn replace(self, index: usize, new_value: isize) -> Self
pub fn replace(self, index: usize, new_value: isize) -> 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: isize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: isize) -> 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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn rotate_left(self, n: isizex2) -> isizex2
pub fn rotate_left(self, n: isizex2) -> isizex2
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: isizex2) -> isizex2
pub fn rotate_right(self, n: isizex2) -> isizex2
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn wrapping_sum(self) -> isize
pub fn wrapping_sum(self) -> isize
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) -> isize
pub fn wrapping_product(self) -> isize
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn max_element(self) -> isize
pub fn max_element(self) -> isize
Largest vector element value.
sourcepub fn min_element(self) -> isize
pub fn min_element(self) -> isize
Smallest vector element value.
source§impl Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn and(self) -> isize
pub fn and(self) -> isize
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn from_slice_aligned(slice: &[isize]) -> Self
pub fn from_slice_aligned(slice: &[isize]) -> 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: &[isize]) -> Self
pub fn from_slice_unaligned(slice: &[isize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> 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: &[isize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[isize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [isize])
pub fn write_to_slice_aligned(self, slice: &mut [isize])
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 [isize])
pub fn write_to_slice_unaligned(self, slice: &mut [isize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
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 [isize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [isize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 2]>
impl Simd<[isize; 2]>
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
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 Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[isize; 2]>
impl Simd<[isize; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<isizex2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<isizex2>
Returns a wrapper that implements Ord
.
source§impl Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub const fn new(x0: usize, x1: usize) -> Self
pub const fn new(x0: usize, x1: usize) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: usize) -> Self
pub const fn splat(value: usize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> usize
pub unsafe fn extract_unchecked(self, index: usize) -> usize
sourcepub fn replace(self, index: usize, new_value: usize) -> Self
pub fn replace(self, index: usize, new_value: usize) -> 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: usize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: usize) -> 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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn rotate_left(self, n: usizex2) -> usizex2
pub fn rotate_left(self, n: usizex2) -> usizex2
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: usizex2) -> usizex2
pub fn rotate_right(self, n: usizex2) -> usizex2
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn wrapping_sum(self) -> usize
pub fn wrapping_sum(self) -> usize
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) -> usize
pub fn wrapping_product(self) -> usize
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn max_element(self) -> usize
pub fn max_element(self) -> usize
Largest vector element value.
sourcepub fn min_element(self) -> usize
pub fn min_element(self) -> usize
Smallest vector element value.
source§impl Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn and(self) -> usize
pub fn and(self) -> usize
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn from_slice_aligned(slice: &[usize]) -> Self
pub fn from_slice_aligned(slice: &[usize]) -> 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: &[usize]) -> Self
pub fn from_slice_unaligned(slice: &[usize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> 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: &[usize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[usize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [usize])
pub fn write_to_slice_aligned(self, slice: &mut [usize])
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 [usize])
pub fn write_to_slice_unaligned(self, slice: &mut [usize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
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 [usize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [usize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 2]>
impl Simd<[usize; 2]>
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
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 Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[usize; 2]>
impl Simd<[usize; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<usizex2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<usizex2>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 2]>
impl Simd<[msize; 2]>
sourcepub const fn new(x0: bool, x1: bool) -> Self
pub const fn new(x0: bool, x1: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[msize; 2]>
impl Simd<[msize; 2]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[msize; 2]>
impl Simd<[msize; 2]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex2>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex2>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[msize; 2]>
impl Simd<[msize; 2]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<msizex2>
pub fn lex_ord(&self) -> LexicographicallyOrdered<msizex2>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 2]>
impl Simd<[msize; 2]>
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub const fn new(x0: isize, x1: isize, x2: isize, x3: isize) -> Self
pub const fn new(x0: isize, x1: isize, x2: isize, x3: isize) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: isize) -> Self
pub const fn splat(value: isize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> isize
pub unsafe fn extract_unchecked(self, index: usize) -> isize
sourcepub fn replace(self, index: usize, new_value: isize) -> Self
pub fn replace(self, index: usize, new_value: isize) -> 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: isize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: isize) -> 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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn rotate_left(self, n: isizex4) -> isizex4
pub fn rotate_left(self, n: isizex4) -> isizex4
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: isizex4) -> isizex4
pub fn rotate_right(self, n: isizex4) -> isizex4
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn wrapping_sum(self) -> isize
pub fn wrapping_sum(self) -> isize
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) -> isize
pub fn wrapping_product(self) -> isize
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn max_element(self) -> isize
pub fn max_element(self) -> isize
Largest vector element value.
sourcepub fn min_element(self) -> isize
pub fn min_element(self) -> isize
Smallest vector element value.
source§impl Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn and(self) -> isize
pub fn and(self) -> isize
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn from_slice_aligned(slice: &[isize]) -> Self
pub fn from_slice_aligned(slice: &[isize]) -> 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: &[isize]) -> Self
pub fn from_slice_unaligned(slice: &[isize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> 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: &[isize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[isize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [isize])
pub fn write_to_slice_aligned(self, slice: &mut [isize])
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 [isize])
pub fn write_to_slice_unaligned(self, slice: &mut [isize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
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 [isize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [isize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 4]>
impl Simd<[isize; 4]>
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
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 Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[isize; 4]>
impl Simd<[isize; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<isizex4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<isizex4>
Returns a wrapper that implements Ord
.
source§impl Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub const fn new(x0: usize, x1: usize, x2: usize, x3: usize) -> Self
pub const fn new(x0: usize, x1: usize, x2: usize, x3: usize) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: usize) -> Self
pub const fn splat(value: usize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> usize
pub unsafe fn extract_unchecked(self, index: usize) -> usize
sourcepub fn replace(self, index: usize, new_value: usize) -> Self
pub fn replace(self, index: usize, new_value: usize) -> 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: usize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: usize) -> 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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn rotate_left(self, n: usizex4) -> usizex4
pub fn rotate_left(self, n: usizex4) -> usizex4
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: usizex4) -> usizex4
pub fn rotate_right(self, n: usizex4) -> usizex4
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn wrapping_sum(self) -> usize
pub fn wrapping_sum(self) -> usize
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) -> usize
pub fn wrapping_product(self) -> usize
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn max_element(self) -> usize
pub fn max_element(self) -> usize
Largest vector element value.
sourcepub fn min_element(self) -> usize
pub fn min_element(self) -> usize
Smallest vector element value.
source§impl Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn and(self) -> usize
pub fn and(self) -> usize
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn from_slice_aligned(slice: &[usize]) -> Self
pub fn from_slice_aligned(slice: &[usize]) -> 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: &[usize]) -> Self
pub fn from_slice_unaligned(slice: &[usize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> 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: &[usize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[usize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [usize])
pub fn write_to_slice_aligned(self, slice: &mut [usize])
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 [usize])
pub fn write_to_slice_unaligned(self, slice: &mut [usize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
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 [usize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [usize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 4]>
impl Simd<[usize; 4]>
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
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 Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[usize; 4]>
impl Simd<[usize; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<usizex4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<usizex4>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 4]>
impl Simd<[msize; 4]>
sourcepub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
pub const fn new(x0: bool, x1: bool, x2: bool, x3: bool) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[msize; 4]>
impl Simd<[msize; 4]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[msize; 4]>
impl Simd<[msize; 4]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex4>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex4>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[msize; 4]>
impl Simd<[msize; 4]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<msizex4>
pub fn lex_ord(&self) -> LexicographicallyOrdered<msizex4>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 4]>
impl Simd<[msize; 4]>
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub const fn new(
x0: isize,
x1: isize,
x2: isize,
x3: isize,
x4: isize,
x5: isize,
x6: isize,
x7: isize
) -> Self
pub const fn new( x0: isize, x1: isize, x2: isize, x3: isize, x4: isize, x5: isize, x6: isize, x7: isize ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: isize) -> Self
pub const fn splat(value: isize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> isize
pub unsafe fn extract_unchecked(self, index: usize) -> isize
sourcepub fn replace(self, index: usize, new_value: isize) -> Self
pub fn replace(self, index: usize, new_value: isize) -> 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: isize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: isize) -> 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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn rotate_left(self, n: isizex8) -> isizex8
pub fn rotate_left(self, n: isizex8) -> isizex8
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: isizex8) -> isizex8
pub fn rotate_right(self, n: isizex8) -> isizex8
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn wrapping_sum(self) -> isize
pub fn wrapping_sum(self) -> isize
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) -> isize
pub fn wrapping_product(self) -> isize
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn max_element(self) -> isize
pub fn max_element(self) -> isize
Largest vector element value.
sourcepub fn min_element(self) -> isize
pub fn min_element(self) -> isize
Smallest vector element value.
source§impl Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn and(self) -> isize
pub fn and(self) -> isize
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn from_slice_aligned(slice: &[isize]) -> Self
pub fn from_slice_aligned(slice: &[isize]) -> 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: &[isize]) -> Self
pub fn from_slice_unaligned(slice: &[isize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[isize]) -> 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: &[isize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[isize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [isize])
pub fn write_to_slice_aligned(self, slice: &mut [isize])
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 [isize])
pub fn write_to_slice_unaligned(self, slice: &mut [isize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [isize])
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 [isize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [isize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[isize; 8]>
impl Simd<[isize; 8]>
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
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 Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<isizex8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[isize; 8]>
impl Simd<[isize; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<isizex8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<isizex8>
Returns a wrapper that implements Ord
.
source§impl Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub const fn new(
x0: usize,
x1: usize,
x2: usize,
x3: usize,
x4: usize,
x5: usize,
x6: usize,
x7: usize
) -> Self
pub const fn new( x0: usize, x1: usize, x2: usize, x3: usize, x4: usize, x5: usize, x6: usize, x7: usize ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: usize) -> Self
pub const fn splat(value: usize) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> usize
pub unsafe fn extract_unchecked(self, index: usize) -> usize
sourcepub fn replace(self, index: usize, new_value: usize) -> Self
pub fn replace(self, index: usize, new_value: usize) -> 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: usize) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: usize) -> 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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn rotate_left(self, n: usizex8) -> usizex8
pub fn rotate_left(self, n: usizex8) -> usizex8
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: usizex8) -> usizex8
pub fn rotate_right(self, n: usizex8) -> usizex8
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn wrapping_sum(self) -> usize
pub fn wrapping_sum(self) -> usize
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) -> usize
pub fn wrapping_product(self) -> usize
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn max_element(self) -> usize
pub fn max_element(self) -> usize
Largest vector element value.
sourcepub fn min_element(self) -> usize
pub fn min_element(self) -> usize
Smallest vector element value.
source§impl Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn and(self) -> usize
pub fn and(self) -> usize
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn from_slice_aligned(slice: &[usize]) -> Self
pub fn from_slice_aligned(slice: &[usize]) -> 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: &[usize]) -> Self
pub fn from_slice_unaligned(slice: &[usize]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[usize]) -> 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: &[usize]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[usize]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [usize])
pub fn write_to_slice_aligned(self, slice: &mut [usize])
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 [usize])
pub fn write_to_slice_unaligned(self, slice: &mut [usize])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [usize])
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 [usize])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [usize])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl Simd<[usize; 8]>
impl Simd<[usize; 8]>
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
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 Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<usizex8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[usize; 8]>
impl Simd<[usize; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<usizex8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<usizex8>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 8]>
impl Simd<[msize; 8]>
sourcepub const fn new(
x0: bool,
x1: bool,
x2: bool,
x3: bool,
x4: bool,
x5: bool,
x6: bool,
x7: bool
) -> Self
pub const fn new( x0: bool, x1: bool, x2: bool, x3: bool, x4: bool, x5: bool, x6: bool, x7: bool ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: bool) -> Self
pub const fn splat(value: bool) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> bool
pub unsafe fn extract_unchecked(self, index: usize) -> bool
sourcepub fn replace(self, index: usize, new_value: bool) -> Self
pub fn replace(self, index: usize, new_value: bool) -> 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: bool) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: bool) -> 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 Simd<[msize; 8]>
impl Simd<[msize; 8]>
sourcepub fn and(self) -> bool
pub fn and(self) -> bool
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 Simd<[msize; 8]>
impl Simd<[msize; 8]>
sourcepub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex8>
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<msizex8>
Returns a wrapper that implements PartialOrd
.
source§impl Simd<[msize; 8]>
impl Simd<[msize; 8]>
sourcepub fn lex_ord(&self) -> LexicographicallyOrdered<msizex8>
pub fn lex_ord(&self) -> LexicographicallyOrdered<msizex8>
Returns a wrapper that implements Ord
.
source§impl Simd<[msize; 8]>
impl Simd<[msize; 8]>
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<T> Simd<[*const T; 2]>
impl<T> Simd<[*const T; 2]>
sourcepub const fn new(x0: *const T, x1: *const T) -> Self
pub const fn new(x0: *const T, x1: *const T) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *const T) -> Self
pub const fn splat(value: *const T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex2
pub fn is_null(self) -> msizex2
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *const T
pub unsafe fn extract_unchecked(self, index: usize) -> *const T
sourcepub fn replace(self, index: usize, new_value: *const T) -> Self
pub fn replace(self, index: usize, new_value: *const T) -> 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: *const T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *const T) -> 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<T> Simd<[*const T; 2]>
impl<T> Simd<[*const T; 2]>
sourcepub fn from_slice_aligned(slice: &[*const T]) -> Self
pub fn from_slice_aligned(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub fn from_slice_unaligned(slice: &[*const T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*const T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 2]>
impl<T> Simd<[*const T; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*const T])
pub fn write_to_slice_aligned(self, slice: &mut [*const T])
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 [*const T])
pub fn write_to_slice_unaligned(self, slice: &mut [*const T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
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 [*const T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*const T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 2]>
impl<T> Simd<[*const T; 2]>
sourcepub unsafe fn offset(self, count: isizex2) -> Self
pub unsafe fn offset(self, count: isizex2) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex2) -> Self
pub fn wrapping_offset(self, count: isizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex2
pub unsafe fn offset_from(self, origin: Self) -> isizex2
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex2
pub fn wrapping_offset_from(self, origin: Self) -> isizex2
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex2) -> Self
pub unsafe fn add(self, count: usizex2) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex2) -> Self
pub unsafe fn sub(self, count: usizex2) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex2) -> Self
pub fn wrapping_add(self, count: usizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex2) -> Self
pub fn wrapping_sub(self, count: usizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*const T; 2]>
impl<T> Simd<[*const T; 2]>
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<T> Simd<[*const T; 2]>where
[T; 2]: SimdArray,
impl<T> Simd<[*const T; 2]>where [T; 2]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 2]>,
value: Simd<[T; 2]>
) -> Simd<[T; 2]>where
M: Mask,
[M; 2]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 2]>, value: Simd<[T; 2]> ) -> Simd<[T; 2]>where M: Mask, [M; 2]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 2]>
impl<T> Simd<[*mut T; 2]>
sourcepub const fn new(x0: *mut T, x1: *mut T) -> Self
pub const fn new(x0: *mut T, x1: *mut T) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *mut T) -> Self
pub const fn splat(value: *mut T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex2
pub fn is_null(self) -> msizex2
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *mut T
pub unsafe fn extract_unchecked(self, index: usize) -> *mut T
sourcepub fn replace(self, index: usize, new_value: *mut T) -> Self
pub fn replace(self, index: usize, new_value: *mut T) -> 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: *mut T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *mut T) -> 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<T> Simd<[*mut T; 2]>
impl<T> Simd<[*mut T; 2]>
sourcepub fn from_slice_aligned(slice: &[*mut T]) -> Self
pub fn from_slice_aligned(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub fn from_slice_unaligned(slice: &[*mut T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*mut T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 2]>
impl<T> Simd<[*mut T; 2]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*mut T])
pub fn write_to_slice_aligned(self, slice: &mut [*mut T])
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 [*mut T])
pub fn write_to_slice_unaligned(self, slice: &mut [*mut T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
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 [*mut T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*mut T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 2]>
impl<T> Simd<[*mut T; 2]>
sourcepub unsafe fn offset(self, count: isizex2) -> Self
pub unsafe fn offset(self, count: isizex2) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex2) -> Self
pub fn wrapping_offset(self, count: isizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex2
pub unsafe fn offset_from(self, origin: Self) -> isizex2
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex2
pub fn wrapping_offset_from(self, origin: Self) -> isizex2
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex2) -> Self
pub unsafe fn add(self, count: usizex2) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex2) -> Self
pub unsafe fn sub(self, count: usizex2) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex2) -> Self
pub fn wrapping_add(self, count: usizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex2) -> Self
pub fn wrapping_sub(self, count: usizex2) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*mut T; 2]>
impl<T> Simd<[*mut T; 2]>
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<T> Simd<[*mut T; 2]>where
[T; 2]: SimdArray,
impl<T> Simd<[*mut T; 2]>where [T; 2]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 2]>,
value: Simd<[T; 2]>
) -> Simd<[T; 2]>where
M: Mask,
[M; 2]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 2]>, value: Simd<[T; 2]> ) -> Simd<[T; 2]>where M: Mask, [M; 2]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 2]>where
[T; 2]: SimdArray,
impl<T> Simd<[*mut T; 2]>where [T; 2]: SimdArray,
sourcepub unsafe fn write<M>(self, mask: Simd<[M; 2]>, value: Simd<[T; 2]>)where
M: Mask,
[M; 2]: SimdArray,
pub unsafe fn write<M>(self, mask: Simd<[M; 2]>, value: Simd<[T; 2]>)where M: Mask, [M; 2]: SimdArray,
Writes selected vector elements to memory.
Writes the lanes of values
for which the mask is true
to
their corresponding memory addresses in self
.
No memory is accessed for those lanes of self
whose mask
is
false
.
Overlapping memory addresses of self
are written to in order
from the lest-significant to the most-significant element.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*const T; 4]>
impl<T> Simd<[*const T; 4]>
sourcepub const fn new(x0: *const T, x1: *const T, x2: *const T, x3: *const T) -> Self
pub const fn new(x0: *const T, x1: *const T, x2: *const T, x3: *const T) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *const T) -> Self
pub const fn splat(value: *const T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex4
pub fn is_null(self) -> msizex4
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *const T
pub unsafe fn extract_unchecked(self, index: usize) -> *const T
sourcepub fn replace(self, index: usize, new_value: *const T) -> Self
pub fn replace(self, index: usize, new_value: *const T) -> 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: *const T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *const T) -> 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<T> Simd<[*const T; 4]>
impl<T> Simd<[*const T; 4]>
sourcepub fn from_slice_aligned(slice: &[*const T]) -> Self
pub fn from_slice_aligned(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub fn from_slice_unaligned(slice: &[*const T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*const T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 4]>
impl<T> Simd<[*const T; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*const T])
pub fn write_to_slice_aligned(self, slice: &mut [*const T])
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 [*const T])
pub fn write_to_slice_unaligned(self, slice: &mut [*const T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
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 [*const T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*const T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 4]>
impl<T> Simd<[*const T; 4]>
sourcepub unsafe fn offset(self, count: isizex4) -> Self
pub unsafe fn offset(self, count: isizex4) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex4) -> Self
pub fn wrapping_offset(self, count: isizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex4
pub unsafe fn offset_from(self, origin: Self) -> isizex4
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex4
pub fn wrapping_offset_from(self, origin: Self) -> isizex4
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex4) -> Self
pub unsafe fn add(self, count: usizex4) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex4) -> Self
pub unsafe fn sub(self, count: usizex4) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex4) -> Self
pub fn wrapping_add(self, count: usizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex4) -> Self
pub fn wrapping_sub(self, count: usizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*const T; 4]>
impl<T> Simd<[*const T; 4]>
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<T> Simd<[*const T; 4]>where
[T; 4]: SimdArray,
impl<T> Simd<[*const T; 4]>where [T; 4]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 4]>,
value: Simd<[T; 4]>
) -> Simd<[T; 4]>where
M: Mask,
[M; 4]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 4]>, value: Simd<[T; 4]> ) -> Simd<[T; 4]>where M: Mask, [M; 4]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 4]>
impl<T> Simd<[*mut T; 4]>
sourcepub const fn new(x0: *mut T, x1: *mut T, x2: *mut T, x3: *mut T) -> Self
pub const fn new(x0: *mut T, x1: *mut T, x2: *mut T, x3: *mut T) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *mut T) -> Self
pub const fn splat(value: *mut T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex4
pub fn is_null(self) -> msizex4
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *mut T
pub unsafe fn extract_unchecked(self, index: usize) -> *mut T
sourcepub fn replace(self, index: usize, new_value: *mut T) -> Self
pub fn replace(self, index: usize, new_value: *mut T) -> 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: *mut T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *mut T) -> 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<T> Simd<[*mut T; 4]>
impl<T> Simd<[*mut T; 4]>
sourcepub fn from_slice_aligned(slice: &[*mut T]) -> Self
pub fn from_slice_aligned(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub fn from_slice_unaligned(slice: &[*mut T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*mut T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 4]>
impl<T> Simd<[*mut T; 4]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*mut T])
pub fn write_to_slice_aligned(self, slice: &mut [*mut T])
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 [*mut T])
pub fn write_to_slice_unaligned(self, slice: &mut [*mut T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
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 [*mut T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*mut T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 4]>
impl<T> Simd<[*mut T; 4]>
sourcepub unsafe fn offset(self, count: isizex4) -> Self
pub unsafe fn offset(self, count: isizex4) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex4) -> Self
pub fn wrapping_offset(self, count: isizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex4
pub unsafe fn offset_from(self, origin: Self) -> isizex4
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex4
pub fn wrapping_offset_from(self, origin: Self) -> isizex4
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex4) -> Self
pub unsafe fn add(self, count: usizex4) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex4) -> Self
pub unsafe fn sub(self, count: usizex4) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex4) -> Self
pub fn wrapping_add(self, count: usizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex4) -> Self
pub fn wrapping_sub(self, count: usizex4) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*mut T; 4]>
impl<T> Simd<[*mut T; 4]>
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<T> Simd<[*mut T; 4]>where
[T; 4]: SimdArray,
impl<T> Simd<[*mut T; 4]>where [T; 4]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 4]>,
value: Simd<[T; 4]>
) -> Simd<[T; 4]>where
M: Mask,
[M; 4]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 4]>, value: Simd<[T; 4]> ) -> Simd<[T; 4]>where M: Mask, [M; 4]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 4]>where
[T; 4]: SimdArray,
impl<T> Simd<[*mut T; 4]>where [T; 4]: SimdArray,
sourcepub unsafe fn write<M>(self, mask: Simd<[M; 4]>, value: Simd<[T; 4]>)where
M: Mask,
[M; 4]: SimdArray,
pub unsafe fn write<M>(self, mask: Simd<[M; 4]>, value: Simd<[T; 4]>)where M: Mask, [M; 4]: SimdArray,
Writes selected vector elements to memory.
Writes the lanes of values
for which the mask is true
to
their corresponding memory addresses in self
.
No memory is accessed for those lanes of self
whose mask
is
false
.
Overlapping memory addresses of self
are written to in order
from the lest-significant to the most-significant element.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*const T; 8]>
impl<T> Simd<[*const T; 8]>
sourcepub const fn new(
x0: *const T,
x1: *const T,
x2: *const T,
x3: *const T,
x4: *const T,
x5: *const T,
x6: *const T,
x7: *const T
) -> Self
pub const fn new( x0: *const T, x1: *const T, x2: *const T, x3: *const T, x4: *const T, x5: *const T, x6: *const T, x7: *const T ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *const T) -> Self
pub const fn splat(value: *const T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex8
pub fn is_null(self) -> msizex8
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *const T
pub unsafe fn extract_unchecked(self, index: usize) -> *const T
sourcepub fn replace(self, index: usize, new_value: *const T) -> Self
pub fn replace(self, index: usize, new_value: *const T) -> 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: *const T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *const T) -> 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<T> Simd<[*const T; 8]>
impl<T> Simd<[*const T; 8]>
sourcepub fn from_slice_aligned(slice: &[*const T]) -> Self
pub fn from_slice_aligned(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub fn from_slice_unaligned(slice: &[*const T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*const T]) -> 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: &[*const T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*const T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 8]>
impl<T> Simd<[*const T; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*const T])
pub fn write_to_slice_aligned(self, slice: &mut [*const T])
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 [*const T])
pub fn write_to_slice_unaligned(self, slice: &mut [*const T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*const T])
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 [*const T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*const T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*const T; 8]>
impl<T> Simd<[*const T; 8]>
sourcepub unsafe fn offset(self, count: isizex8) -> Self
pub unsafe fn offset(self, count: isizex8) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex8) -> Self
pub fn wrapping_offset(self, count: isizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex8
pub unsafe fn offset_from(self, origin: Self) -> isizex8
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex8
pub fn wrapping_offset_from(self, origin: Self) -> isizex8
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex8) -> Self
pub unsafe fn add(self, count: usizex8) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex8) -> Self
pub unsafe fn sub(self, count: usizex8) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex8) -> Self
pub fn wrapping_add(self, count: usizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex8) -> Self
pub fn wrapping_sub(self, count: usizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*const T; 8]>
impl<T> Simd<[*const T; 8]>
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<T> Simd<[*const T; 8]>where
[T; 8]: SimdArray,
impl<T> Simd<[*const T; 8]>where [T; 8]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 8]>,
value: Simd<[T; 8]>
) -> Simd<[T; 8]>where
M: Mask,
[M; 8]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 8]>, value: Simd<[T; 8]> ) -> Simd<[T; 8]>where M: Mask, [M; 8]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 8]>
impl<T> Simd<[*mut T; 8]>
sourcepub const fn new(
x0: *mut T,
x1: *mut T,
x2: *mut T,
x3: *mut T,
x4: *mut T,
x5: *mut T,
x6: *mut T,
x7: *mut T
) -> Self
pub const fn new( x0: *mut T, x1: *mut T, x2: *mut T, x3: *mut T, x4: *mut T, x5: *mut T, x6: *mut T, x7: *mut T ) -> Self
Creates a new instance with each vector elements initialized with the provided values.
sourcepub const fn splat(value: *mut T) -> Self
pub const fn splat(value: *mut T) -> Self
Constructs a new instance with each element initialized to
value
.
sourcepub fn is_null(self) -> msizex8
pub fn is_null(self) -> msizex8
Returns a mask that selects those lanes that contain null
pointers.
sourcepub unsafe fn extract_unchecked(self, index: usize) -> *mut T
pub unsafe fn extract_unchecked(self, index: usize) -> *mut T
sourcepub fn replace(self, index: usize, new_value: *mut T) -> Self
pub fn replace(self, index: usize, new_value: *mut T) -> 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: *mut T) -> Self
pub unsafe fn replace_unchecked(self, index: usize, new_value: *mut T) -> 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<T> Simd<[*mut T; 8]>
impl<T> Simd<[*mut T; 8]>
sourcepub fn from_slice_aligned(slice: &[*mut T]) -> Self
pub fn from_slice_aligned(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub fn from_slice_unaligned(slice: &[*mut T]) -> Self
sourcepub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> Self
pub unsafe fn from_slice_aligned_unchecked(slice: &[*mut T]) -> 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: &[*mut T]) -> Self
pub unsafe fn from_slice_unaligned_unchecked(slice: &[*mut T]) -> Self
Instantiates a new vector with the values of the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 8]>
impl<T> Simd<[*mut T; 8]>
sourcepub fn write_to_slice_aligned(self, slice: &mut [*mut T])
pub fn write_to_slice_aligned(self, slice: &mut [*mut T])
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 [*mut T])
pub fn write_to_slice_unaligned(self, slice: &mut [*mut T])
sourcepub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [*mut T])
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 [*mut T])
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [*mut T])
Writes the values of the vector to the slice
.
Safety
If slice.len() < Self::lanes()
the behavior is undefined.
source§impl<T> Simd<[*mut T; 8]>
impl<T> Simd<[*mut T; 8]>
sourcepub unsafe fn offset(self, count: isizex8) -> Self
pub unsafe fn offset(self, count: isizex8) -> Self
Calculates the offset from a pointer.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().offset(vec.len() as isize)
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset(self, count: isizex8) -> Self
pub fn wrapping_offset(self, count: isizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
count
is in units of T
; e.g. a count of 3
represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is potentially hazardous to dereference (which requires unsafe).
Always use .offset(count)
instead when possible, because
offset allows the compiler to optimize better.
sourcepub unsafe fn offset_from(self, origin: Self) -> isizex8
pub unsafe fn offset_from(self, origin: Self) -> isizex8
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
This function is the inverse of offset.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and other pointer must be either in bounds or one byte past the end of the same allocated object.
-
The distance between the pointers, in bytes, cannot overflow an
isize
. -
The distance between the pointers, in bytes, must be an exact multiple of the size of
T
. -
The distance being in bounds cannot rely on “wrapping around” the address space.
The compiler and standard library generally try to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so ptr_into_vec.offset_from(vec.as_ptr())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset_from
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_offset_from(self, origin: Self) -> isizex8
pub fn wrapping_offset_from(self, origin: Self) -> isizex8
Calculates the distance between two pointers.
The returned value is in units of T
: the distance in bytes is
divided by mem::size_of::<T>()
.
If the address different between the two pointers is not a
multiple of mem::size_of::<T>()
then the result of the
division is rounded towards zero.
Though this method is safe for any two pointers, note that its result will be mostly useless if the two pointers aren’t into the same allocated object, for example if they point to two different local variables.
sourcepub unsafe fn add(self, count: usizex8) -> Self
pub unsafe fn add(self, count: usizex8) -> Self
Calculates the offset from a pointer (convenience for
.offset(count as isize)
).
count
is in units of T
; e.g. a count of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset, in bytes, cannot overflow an
isize
. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a
usize
.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so vec.as_ptr().add(vec.len())
is always
safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table limitations or
splitting the address space. However, some 32-bit and 16-bit
platforms may successfully serve a request for more than
isize::MAX
bytes with things like Physical Address Extension.
As such, memory acquired directly from allocators or memory
mapped files may be too large to handle with this function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub unsafe fn sub(self, count: usizex8) -> Self
pub unsafe fn sub(self, count: usizex8) -> Self
Calculates the offset from a pointer (convenience for
.offset((count as isize).wrapping_neg())
).
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
If any of the following conditions are violated, the result is Undefined Behavior:
-
Both the starting and resulting pointer must be either in bounds or one byte past the end of an allocated object.
-
The computed offset cannot exceed
isize::MAX
bytes. -
The offset being in bounds cannot rely on “wrapping around” the address space. That is, the infinite-precision sum must fit in a usize.
The compiler and standard library generally tries to ensure
allocations never reach a size where an offset is a concern. For
instance, Vec
and Box
ensure they never allocate more than
isize::MAX
bytes, so
vec.as_ptr().add(vec.len()).sub(vec.len())
is always safe.
Most platforms fundamentally can’t even construct such an
allocation. For instance, no known 64-bit platform can ever
serve a request for 263 bytes due to page-table
limitations or splitting the address space. However, some 32-bit
and 16-bit platforms may successfully serve a request for more
than isize::MAX
bytes with things like Physical Address
Extension. As such, memory acquired directly from allocators or
memory mapped files may be too large to handle with this
function.
Consider using wrapping_offset
instead if these constraints
are difficult to satisfy. The only advantage of this method is
that it enables more aggressive compiler optimizations.
sourcepub fn wrapping_add(self, count: usizex8) -> Self
pub fn wrapping_add(self, count: usizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset(count as isize)
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .add(count)
instead when possible, because add
allows the compiler to optimize better.
sourcepub fn wrapping_sub(self, count: usizex8) -> Self
pub fn wrapping_sub(self, count: usizex8) -> Self
Calculates the offset from a pointer using wrapping arithmetic.
(convenience for .wrapping_offset((count as isize).wrapping_sub())
)
count
is in units of T; e.g. a count
of 3 represents a
pointer offset of 3 * size_of::<T>()
bytes.
Safety
The resulting pointer does not need to be in bounds, but it is
potentially hazardous to dereference (which requires unsafe
).
Always use .sub(count)
instead when possible, because sub
allows the compiler to optimize better.
source§impl<T> Simd<[*mut T; 8]>
impl<T> Simd<[*mut T; 8]>
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<T> Simd<[*mut T; 8]>where
[T; 8]: SimdArray,
impl<T> Simd<[*mut T; 8]>where [T; 8]: SimdArray,
sourcepub unsafe fn read<M>(
self,
mask: Simd<[M; 8]>,
value: Simd<[T; 8]>
) -> Simd<[T; 8]>where
M: Mask,
[M; 8]: SimdArray,
pub unsafe fn read<M>( self, mask: Simd<[M; 8]>, value: Simd<[T; 8]> ) -> Simd<[T; 8]>where M: Mask, [M; 8]: SimdArray,
Reads selected vector elements from memory.
Instantiates a new vector by reading the values from self
for
those lanes whose mask
is true
, and using the elements of
value
otherwise.
No memory is accessed for those lanes of self
whose mask
is
false
.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
source§impl<T> Simd<[*mut T; 8]>where
[T; 8]: SimdArray,
impl<T> Simd<[*mut T; 8]>where [T; 8]: SimdArray,
sourcepub unsafe fn write<M>(self, mask: Simd<[M; 8]>, value: Simd<[T; 8]>)where
M: Mask,
[M; 8]: SimdArray,
pub unsafe fn write<M>(self, mask: Simd<[M; 8]>, value: Simd<[T; 8]>)where M: Mask, [M; 8]: SimdArray,
Writes selected vector elements to memory.
Writes the lanes of values
for which the mask is true
to
their corresponding memory addresses in self
.
No memory is accessed for those lanes of self
whose mask
is
false
.
Overlapping memory addresses of self
are written to in order
from the lest-significant to the most-significant element.
Safety
This method is unsafe because it dereferences raw pointers. The
pointers must be aligned to mem::align_of::<T>()
.
Trait Implementations§
source§impl AddAssign<Simd<[f32; 16]>> for f32x16
impl AddAssign<Simd<[f32; 16]>> for f32x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f32; 2]>> for f32x2
impl AddAssign<Simd<[f32; 2]>> for f32x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f32; 4]>> for f32x4
impl AddAssign<Simd<[f32; 4]>> for f32x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f32; 8]>> for f32x8
impl AddAssign<Simd<[f32; 8]>> for f32x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f64; 2]>> for f64x2
impl AddAssign<Simd<[f64; 2]>> for f64x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f64; 4]>> for f64x4
impl AddAssign<Simd<[f64; 4]>> for f64x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[f64; 8]>> for f64x8
impl AddAssign<Simd<[f64; 8]>> for f64x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i128; 1]>> for i128x1
impl AddAssign<Simd<[i128; 1]>> for i128x1
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i128; 2]>> for i128x2
impl AddAssign<Simd<[i128; 2]>> for i128x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i128; 4]>> for i128x4
impl AddAssign<Simd<[i128; 4]>> for i128x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i16; 16]>> for i16x16
impl AddAssign<Simd<[i16; 16]>> for i16x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i16; 2]>> for i16x2
impl AddAssign<Simd<[i16; 2]>> for i16x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i16; 32]>> for i16x32
impl AddAssign<Simd<[i16; 32]>> for i16x32
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i16; 4]>> for i16x4
impl AddAssign<Simd<[i16; 4]>> for i16x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i16; 8]>> for i16x8
impl AddAssign<Simd<[i16; 8]>> for i16x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i32; 16]>> for i32x16
impl AddAssign<Simd<[i32; 16]>> for i32x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i32; 2]>> for i32x2
impl AddAssign<Simd<[i32; 2]>> for i32x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i32; 4]>> for i32x4
impl AddAssign<Simd<[i32; 4]>> for i32x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i32; 8]>> for i32x8
impl AddAssign<Simd<[i32; 8]>> for i32x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i64; 2]>> for i64x2
impl AddAssign<Simd<[i64; 2]>> for i64x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i64; 4]>> for i64x4
impl AddAssign<Simd<[i64; 4]>> for i64x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i64; 8]>> for i64x8
impl AddAssign<Simd<[i64; 8]>> for i64x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 16]>> for i8x16
impl AddAssign<Simd<[i8; 16]>> for i8x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 2]>> for i8x2
impl AddAssign<Simd<[i8; 2]>> for i8x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 32]>> for i8x32
impl AddAssign<Simd<[i8; 32]>> for i8x32
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 4]>> for i8x4
impl AddAssign<Simd<[i8; 4]>> for i8x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 64]>> for i8x64
impl AddAssign<Simd<[i8; 64]>> for i8x64
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[i8; 8]>> for i8x8
impl AddAssign<Simd<[i8; 8]>> for i8x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[isize; 2]>> for isizex2
impl AddAssign<Simd<[isize; 2]>> for isizex2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[isize; 4]>> for isizex4
impl AddAssign<Simd<[isize; 4]>> for isizex4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[isize; 8]>> for isizex8
impl AddAssign<Simd<[isize; 8]>> for isizex8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u128; 1]>> for u128x1
impl AddAssign<Simd<[u128; 1]>> for u128x1
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u128; 2]>> for u128x2
impl AddAssign<Simd<[u128; 2]>> for u128x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u128; 4]>> for u128x4
impl AddAssign<Simd<[u128; 4]>> for u128x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u16; 16]>> for u16x16
impl AddAssign<Simd<[u16; 16]>> for u16x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u16; 2]>> for u16x2
impl AddAssign<Simd<[u16; 2]>> for u16x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u16; 32]>> for u16x32
impl AddAssign<Simd<[u16; 32]>> for u16x32
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u16; 4]>> for u16x4
impl AddAssign<Simd<[u16; 4]>> for u16x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u16; 8]>> for u16x8
impl AddAssign<Simd<[u16; 8]>> for u16x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u32; 16]>> for u32x16
impl AddAssign<Simd<[u32; 16]>> for u32x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u32; 2]>> for u32x2
impl AddAssign<Simd<[u32; 2]>> for u32x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u32; 4]>> for u32x4
impl AddAssign<Simd<[u32; 4]>> for u32x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u32; 8]>> for u32x8
impl AddAssign<Simd<[u32; 8]>> for u32x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u64; 2]>> for u64x2
impl AddAssign<Simd<[u64; 2]>> for u64x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u64; 4]>> for u64x4
impl AddAssign<Simd<[u64; 4]>> for u64x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u64; 8]>> for u64x8
impl AddAssign<Simd<[u64; 8]>> for u64x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u8; 16]>> for u8x16
impl AddAssign<Simd<[u8; 16]>> for u8x16
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u8; 2]>> for u8x2
impl AddAssign<Simd<[u8; 2]>> for u8x2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§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<Simd<[u8; 4]>> for u8x4
impl AddAssign<Simd<[u8; 4]>> for u8x4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u8; 64]>> for u8x64
impl AddAssign<Simd<[u8; 64]>> for u8x64
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[u8; 8]>> for u8x8
impl AddAssign<Simd<[u8; 8]>> for u8x8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[usize; 2]>> for usizex2
impl AddAssign<Simd<[usize; 2]>> for usizex2
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[usize; 4]>> for usizex4
impl AddAssign<Simd<[usize; 4]>> for usizex4
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl AddAssign<Simd<[usize; 8]>> for usizex8
impl AddAssign<Simd<[usize; 8]>> for usizex8
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moresource§impl BitAndAssign<Simd<[i128; 1]>> for i128x1
impl BitAndAssign<Simd<[i128; 1]>> for i128x1
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i128; 2]>> for i128x2
impl BitAndAssign<Simd<[i128; 2]>> for i128x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i128; 4]>> for i128x4
impl BitAndAssign<Simd<[i128; 4]>> for i128x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i16; 16]>> for i16x16
impl BitAndAssign<Simd<[i16; 16]>> for i16x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i16; 2]>> for i16x2
impl BitAndAssign<Simd<[i16; 2]>> for i16x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i16; 32]>> for i16x32
impl BitAndAssign<Simd<[i16; 32]>> for i16x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i16; 4]>> for i16x4
impl BitAndAssign<Simd<[i16; 4]>> for i16x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i16; 8]>> for i16x8
impl BitAndAssign<Simd<[i16; 8]>> for i16x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i32; 16]>> for i32x16
impl BitAndAssign<Simd<[i32; 16]>> for i32x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i32; 2]>> for i32x2
impl BitAndAssign<Simd<[i32; 2]>> for i32x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i32; 4]>> for i32x4
impl BitAndAssign<Simd<[i32; 4]>> for i32x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i32; 8]>> for i32x8
impl BitAndAssign<Simd<[i32; 8]>> for i32x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i64; 2]>> for i64x2
impl BitAndAssign<Simd<[i64; 2]>> for i64x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i64; 4]>> for i64x4
impl BitAndAssign<Simd<[i64; 4]>> for i64x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i64; 8]>> for i64x8
impl BitAndAssign<Simd<[i64; 8]>> for i64x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 16]>> for i8x16
impl BitAndAssign<Simd<[i8; 16]>> for i8x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 2]>> for i8x2
impl BitAndAssign<Simd<[i8; 2]>> for i8x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 32]>> for i8x32
impl BitAndAssign<Simd<[i8; 32]>> for i8x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 4]>> for i8x4
impl BitAndAssign<Simd<[i8; 4]>> for i8x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 64]>> for i8x64
impl BitAndAssign<Simd<[i8; 64]>> for i8x64
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[i8; 8]>> for i8x8
impl BitAndAssign<Simd<[i8; 8]>> for i8x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[isize; 2]>> for isizex2
impl BitAndAssign<Simd<[isize; 2]>> for isizex2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[isize; 4]>> for isizex4
impl BitAndAssign<Simd<[isize; 4]>> for isizex4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[isize; 8]>> for isizex8
impl BitAndAssign<Simd<[isize; 8]>> for isizex8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m128; 1]>> for m128x1
impl BitAndAssign<Simd<[m128; 1]>> for m128x1
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m128; 2]>> for m128x2
impl BitAndAssign<Simd<[m128; 2]>> for m128x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m128; 4]>> for m128x4
impl BitAndAssign<Simd<[m128; 4]>> for m128x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m16; 16]>> for m16x16
impl BitAndAssign<Simd<[m16; 16]>> for m16x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m16; 2]>> for m16x2
impl BitAndAssign<Simd<[m16; 2]>> for m16x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m16; 32]>> for m16x32
impl BitAndAssign<Simd<[m16; 32]>> for m16x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m16; 4]>> for m16x4
impl BitAndAssign<Simd<[m16; 4]>> for m16x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m16; 8]>> for m16x8
impl BitAndAssign<Simd<[m16; 8]>> for m16x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m32; 16]>> for m32x16
impl BitAndAssign<Simd<[m32; 16]>> for m32x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m32; 2]>> for m32x2
impl BitAndAssign<Simd<[m32; 2]>> for m32x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m32; 4]>> for m32x4
impl BitAndAssign<Simd<[m32; 4]>> for m32x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m32; 8]>> for m32x8
impl BitAndAssign<Simd<[m32; 8]>> for m32x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m64; 2]>> for m64x2
impl BitAndAssign<Simd<[m64; 2]>> for m64x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m64; 4]>> for m64x4
impl BitAndAssign<Simd<[m64; 4]>> for m64x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m64; 8]>> for m64x8
impl BitAndAssign<Simd<[m64; 8]>> for m64x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 16]>> for m8x16
impl BitAndAssign<Simd<[m8; 16]>> for m8x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 2]>> for m8x2
impl BitAndAssign<Simd<[m8; 2]>> for m8x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 32]>> for m8x32
impl BitAndAssign<Simd<[m8; 32]>> for m8x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 4]>> for m8x4
impl BitAndAssign<Simd<[m8; 4]>> for m8x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 64]>> for m8x64
impl BitAndAssign<Simd<[m8; 64]>> for m8x64
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[m8; 8]>> for m8x8
impl BitAndAssign<Simd<[m8; 8]>> for m8x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[msize; 2]>> for msizex2
impl BitAndAssign<Simd<[msize; 2]>> for msizex2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[msize; 4]>> for msizex4
impl BitAndAssign<Simd<[msize; 4]>> for msizex4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[msize; 8]>> for msizex8
impl BitAndAssign<Simd<[msize; 8]>> for msizex8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u128; 1]>> for u128x1
impl BitAndAssign<Simd<[u128; 1]>> for u128x1
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u128; 2]>> for u128x2
impl BitAndAssign<Simd<[u128; 2]>> for u128x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u128; 4]>> for u128x4
impl BitAndAssign<Simd<[u128; 4]>> for u128x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u16; 16]>> for u16x16
impl BitAndAssign<Simd<[u16; 16]>> for u16x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u16; 2]>> for u16x2
impl BitAndAssign<Simd<[u16; 2]>> for u16x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u16; 32]>> for u16x32
impl BitAndAssign<Simd<[u16; 32]>> for u16x32
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u16; 4]>> for u16x4
impl BitAndAssign<Simd<[u16; 4]>> for u16x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u16; 8]>> for u16x8
impl BitAndAssign<Simd<[u16; 8]>> for u16x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u32; 16]>> for u32x16
impl BitAndAssign<Simd<[u32; 16]>> for u32x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u32; 2]>> for u32x2
impl BitAndAssign<Simd<[u32; 2]>> for u32x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u32; 4]>> for u32x4
impl BitAndAssign<Simd<[u32; 4]>> for u32x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u32; 8]>> for u32x8
impl BitAndAssign<Simd<[u32; 8]>> for u32x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u64; 2]>> for u64x2
impl BitAndAssign<Simd<[u64; 2]>> for u64x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u64; 4]>> for u64x4
impl BitAndAssign<Simd<[u64; 4]>> for u64x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u64; 8]>> for u64x8
impl BitAndAssign<Simd<[u64; 8]>> for u64x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u8; 16]>> for u8x16
impl BitAndAssign<Simd<[u8; 16]>> for u8x16
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u8; 2]>> for u8x2
impl BitAndAssign<Simd<[u8; 2]>> for u8x2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
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<Simd<[u8; 4]>> for u8x4
impl BitAndAssign<Simd<[u8; 4]>> for u8x4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u8; 64]>> for u8x64
impl BitAndAssign<Simd<[u8; 64]>> for u8x64
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[u8; 8]>> for u8x8
impl BitAndAssign<Simd<[u8; 8]>> for u8x8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[usize; 2]>> for usizex2
impl BitAndAssign<Simd<[usize; 2]>> for usizex2
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[usize; 4]>> for usizex4
impl BitAndAssign<Simd<[usize; 4]>> for usizex4
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitAndAssign<Simd<[usize; 8]>> for usizex8
impl BitAndAssign<Simd<[usize; 8]>> for usizex8
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
&=
operation. Read moresource§impl BitOrAssign<Simd<[i128; 1]>> for i128x1
impl BitOrAssign<Simd<[i128; 1]>> for i128x1
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i128; 2]>> for i128x2
impl BitOrAssign<Simd<[i128; 2]>> for i128x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i128; 4]>> for i128x4
impl BitOrAssign<Simd<[i128; 4]>> for i128x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i16; 16]>> for i16x16
impl BitOrAssign<Simd<[i16; 16]>> for i16x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i16; 2]>> for i16x2
impl BitOrAssign<Simd<[i16; 2]>> for i16x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i16; 32]>> for i16x32
impl BitOrAssign<Simd<[i16; 32]>> for i16x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i16; 4]>> for i16x4
impl BitOrAssign<Simd<[i16; 4]>> for i16x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i16; 8]>> for i16x8
impl BitOrAssign<Simd<[i16; 8]>> for i16x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i32; 16]>> for i32x16
impl BitOrAssign<Simd<[i32; 16]>> for i32x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i32; 2]>> for i32x2
impl BitOrAssign<Simd<[i32; 2]>> for i32x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i32; 4]>> for i32x4
impl BitOrAssign<Simd<[i32; 4]>> for i32x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i32; 8]>> for i32x8
impl BitOrAssign<Simd<[i32; 8]>> for i32x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i64; 2]>> for i64x2
impl BitOrAssign<Simd<[i64; 2]>> for i64x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i64; 4]>> for i64x4
impl BitOrAssign<Simd<[i64; 4]>> for i64x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i64; 8]>> for i64x8
impl BitOrAssign<Simd<[i64; 8]>> for i64x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 16]>> for i8x16
impl BitOrAssign<Simd<[i8; 16]>> for i8x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 2]>> for i8x2
impl BitOrAssign<Simd<[i8; 2]>> for i8x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 32]>> for i8x32
impl BitOrAssign<Simd<[i8; 32]>> for i8x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 4]>> for i8x4
impl BitOrAssign<Simd<[i8; 4]>> for i8x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 64]>> for i8x64
impl BitOrAssign<Simd<[i8; 64]>> for i8x64
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[i8; 8]>> for i8x8
impl BitOrAssign<Simd<[i8; 8]>> for i8x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[isize; 2]>> for isizex2
impl BitOrAssign<Simd<[isize; 2]>> for isizex2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[isize; 4]>> for isizex4
impl BitOrAssign<Simd<[isize; 4]>> for isizex4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[isize; 8]>> for isizex8
impl BitOrAssign<Simd<[isize; 8]>> for isizex8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m128; 1]>> for m128x1
impl BitOrAssign<Simd<[m128; 1]>> for m128x1
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m128; 2]>> for m128x2
impl BitOrAssign<Simd<[m128; 2]>> for m128x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m128; 4]>> for m128x4
impl BitOrAssign<Simd<[m128; 4]>> for m128x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m16; 16]>> for m16x16
impl BitOrAssign<Simd<[m16; 16]>> for m16x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m16; 2]>> for m16x2
impl BitOrAssign<Simd<[m16; 2]>> for m16x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m16; 32]>> for m16x32
impl BitOrAssign<Simd<[m16; 32]>> for m16x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m16; 4]>> for m16x4
impl BitOrAssign<Simd<[m16; 4]>> for m16x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m16; 8]>> for m16x8
impl BitOrAssign<Simd<[m16; 8]>> for m16x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m32; 16]>> for m32x16
impl BitOrAssign<Simd<[m32; 16]>> for m32x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m32; 2]>> for m32x2
impl BitOrAssign<Simd<[m32; 2]>> for m32x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m32; 4]>> for m32x4
impl BitOrAssign<Simd<[m32; 4]>> for m32x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m32; 8]>> for m32x8
impl BitOrAssign<Simd<[m32; 8]>> for m32x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m64; 2]>> for m64x2
impl BitOrAssign<Simd<[m64; 2]>> for m64x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m64; 4]>> for m64x4
impl BitOrAssign<Simd<[m64; 4]>> for m64x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m64; 8]>> for m64x8
impl BitOrAssign<Simd<[m64; 8]>> for m64x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 16]>> for m8x16
impl BitOrAssign<Simd<[m8; 16]>> for m8x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 2]>> for m8x2
impl BitOrAssign<Simd<[m8; 2]>> for m8x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 32]>> for m8x32
impl BitOrAssign<Simd<[m8; 32]>> for m8x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 4]>> for m8x4
impl BitOrAssign<Simd<[m8; 4]>> for m8x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 64]>> for m8x64
impl BitOrAssign<Simd<[m8; 64]>> for m8x64
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[m8; 8]>> for m8x8
impl BitOrAssign<Simd<[m8; 8]>> for m8x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[msize; 2]>> for msizex2
impl BitOrAssign<Simd<[msize; 2]>> for msizex2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[msize; 4]>> for msizex4
impl BitOrAssign<Simd<[msize; 4]>> for msizex4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[msize; 8]>> for msizex8
impl BitOrAssign<Simd<[msize; 8]>> for msizex8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u128; 1]>> for u128x1
impl BitOrAssign<Simd<[u128; 1]>> for u128x1
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u128; 2]>> for u128x2
impl BitOrAssign<Simd<[u128; 2]>> for u128x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u128; 4]>> for u128x4
impl BitOrAssign<Simd<[u128; 4]>> for u128x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u16; 16]>> for u16x16
impl BitOrAssign<Simd<[u16; 16]>> for u16x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u16; 2]>> for u16x2
impl BitOrAssign<Simd<[u16; 2]>> for u16x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u16; 32]>> for u16x32
impl BitOrAssign<Simd<[u16; 32]>> for u16x32
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u16; 4]>> for u16x4
impl BitOrAssign<Simd<[u16; 4]>> for u16x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u16; 8]>> for u16x8
impl BitOrAssign<Simd<[u16; 8]>> for u16x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u32; 16]>> for u32x16
impl BitOrAssign<Simd<[u32; 16]>> for u32x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u32; 2]>> for u32x2
impl BitOrAssign<Simd<[u32; 2]>> for u32x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u32; 4]>> for u32x4
impl BitOrAssign<Simd<[u32; 4]>> for u32x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u32; 8]>> for u32x8
impl BitOrAssign<Simd<[u32; 8]>> for u32x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u64; 2]>> for u64x2
impl BitOrAssign<Simd<[u64; 2]>> for u64x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u64; 4]>> for u64x4
impl BitOrAssign<Simd<[u64; 4]>> for u64x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u64; 8]>> for u64x8
impl BitOrAssign<Simd<[u64; 8]>> for u64x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u8; 16]>> for u8x16
impl BitOrAssign<Simd<[u8; 16]>> for u8x16
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u8; 2]>> for u8x2
impl BitOrAssign<Simd<[u8; 2]>> for u8x2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
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<Simd<[u8; 4]>> for u8x4
impl BitOrAssign<Simd<[u8; 4]>> for u8x4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u8; 64]>> for u8x64
impl BitOrAssign<Simd<[u8; 64]>> for u8x64
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[u8; 8]>> for u8x8
impl BitOrAssign<Simd<[u8; 8]>> for u8x8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[usize; 2]>> for usizex2
impl BitOrAssign<Simd<[usize; 2]>> for usizex2
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[usize; 4]>> for usizex4
impl BitOrAssign<Simd<[usize; 4]>> for usizex4
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitOrAssign<Simd<[usize; 8]>> for usizex8
impl BitOrAssign<Simd<[usize; 8]>> for usizex8
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
|=
operation. Read moresource§impl BitXorAssign<Simd<[i128; 1]>> for i128x1
impl BitXorAssign<Simd<[i128; 1]>> for i128x1
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i128; 2]>> for i128x2
impl BitXorAssign<Simd<[i128; 2]>> for i128x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i128; 4]>> for i128x4
impl BitXorAssign<Simd<[i128; 4]>> for i128x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i16; 16]>> for i16x16
impl BitXorAssign<Simd<[i16; 16]>> for i16x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i16; 2]>> for i16x2
impl BitXorAssign<Simd<[i16; 2]>> for i16x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i16; 32]>> for i16x32
impl BitXorAssign<Simd<[i16; 32]>> for i16x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i16; 4]>> for i16x4
impl BitXorAssign<Simd<[i16; 4]>> for i16x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i16; 8]>> for i16x8
impl BitXorAssign<Simd<[i16; 8]>> for i16x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i32; 16]>> for i32x16
impl BitXorAssign<Simd<[i32; 16]>> for i32x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i32; 2]>> for i32x2
impl BitXorAssign<Simd<[i32; 2]>> for i32x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i32; 4]>> for i32x4
impl BitXorAssign<Simd<[i32; 4]>> for i32x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i32; 8]>> for i32x8
impl BitXorAssign<Simd<[i32; 8]>> for i32x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i64; 2]>> for i64x2
impl BitXorAssign<Simd<[i64; 2]>> for i64x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i64; 4]>> for i64x4
impl BitXorAssign<Simd<[i64; 4]>> for i64x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i64; 8]>> for i64x8
impl BitXorAssign<Simd<[i64; 8]>> for i64x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 16]>> for i8x16
impl BitXorAssign<Simd<[i8; 16]>> for i8x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 2]>> for i8x2
impl BitXorAssign<Simd<[i8; 2]>> for i8x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 32]>> for i8x32
impl BitXorAssign<Simd<[i8; 32]>> for i8x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 4]>> for i8x4
impl BitXorAssign<Simd<[i8; 4]>> for i8x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 64]>> for i8x64
impl BitXorAssign<Simd<[i8; 64]>> for i8x64
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[i8; 8]>> for i8x8
impl BitXorAssign<Simd<[i8; 8]>> for i8x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[isize; 2]>> for isizex2
impl BitXorAssign<Simd<[isize; 2]>> for isizex2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[isize; 4]>> for isizex4
impl BitXorAssign<Simd<[isize; 4]>> for isizex4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[isize; 8]>> for isizex8
impl BitXorAssign<Simd<[isize; 8]>> for isizex8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m128; 1]>> for m128x1
impl BitXorAssign<Simd<[m128; 1]>> for m128x1
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m128; 2]>> for m128x2
impl BitXorAssign<Simd<[m128; 2]>> for m128x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m128; 4]>> for m128x4
impl BitXorAssign<Simd<[m128; 4]>> for m128x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m16; 16]>> for m16x16
impl BitXorAssign<Simd<[m16; 16]>> for m16x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m16; 2]>> for m16x2
impl BitXorAssign<Simd<[m16; 2]>> for m16x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m16; 32]>> for m16x32
impl BitXorAssign<Simd<[m16; 32]>> for m16x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m16; 4]>> for m16x4
impl BitXorAssign<Simd<[m16; 4]>> for m16x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m16; 8]>> for m16x8
impl BitXorAssign<Simd<[m16; 8]>> for m16x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m32; 16]>> for m32x16
impl BitXorAssign<Simd<[m32; 16]>> for m32x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m32; 2]>> for m32x2
impl BitXorAssign<Simd<[m32; 2]>> for m32x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m32; 4]>> for m32x4
impl BitXorAssign<Simd<[m32; 4]>> for m32x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m32; 8]>> for m32x8
impl BitXorAssign<Simd<[m32; 8]>> for m32x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m64; 2]>> for m64x2
impl BitXorAssign<Simd<[m64; 2]>> for m64x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m64; 4]>> for m64x4
impl BitXorAssign<Simd<[m64; 4]>> for m64x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m64; 8]>> for m64x8
impl BitXorAssign<Simd<[m64; 8]>> for m64x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 16]>> for m8x16
impl BitXorAssign<Simd<[m8; 16]>> for m8x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 2]>> for m8x2
impl BitXorAssign<Simd<[m8; 2]>> for m8x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 32]>> for m8x32
impl BitXorAssign<Simd<[m8; 32]>> for m8x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 4]>> for m8x4
impl BitXorAssign<Simd<[m8; 4]>> for m8x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 64]>> for m8x64
impl BitXorAssign<Simd<[m8; 64]>> for m8x64
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[m8; 8]>> for m8x8
impl BitXorAssign<Simd<[m8; 8]>> for m8x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[msize; 2]>> for msizex2
impl BitXorAssign<Simd<[msize; 2]>> for msizex2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[msize; 4]>> for msizex4
impl BitXorAssign<Simd<[msize; 4]>> for msizex4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[msize; 8]>> for msizex8
impl BitXorAssign<Simd<[msize; 8]>> for msizex8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u128; 1]>> for u128x1
impl BitXorAssign<Simd<[u128; 1]>> for u128x1
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u128; 2]>> for u128x2
impl BitXorAssign<Simd<[u128; 2]>> for u128x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u128; 4]>> for u128x4
impl BitXorAssign<Simd<[u128; 4]>> for u128x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u16; 16]>> for u16x16
impl BitXorAssign<Simd<[u16; 16]>> for u16x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u16; 2]>> for u16x2
impl BitXorAssign<Simd<[u16; 2]>> for u16x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u16; 32]>> for u16x32
impl BitXorAssign<Simd<[u16; 32]>> for u16x32
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u16; 4]>> for u16x4
impl BitXorAssign<Simd<[u16; 4]>> for u16x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u16; 8]>> for u16x8
impl BitXorAssign<Simd<[u16; 8]>> for u16x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u32; 16]>> for u32x16
impl BitXorAssign<Simd<[u32; 16]>> for u32x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u32; 2]>> for u32x2
impl BitXorAssign<Simd<[u32; 2]>> for u32x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u32; 4]>> for u32x4
impl BitXorAssign<Simd<[u32; 4]>> for u32x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u32; 8]>> for u32x8
impl BitXorAssign<Simd<[u32; 8]>> for u32x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u64; 2]>> for u64x2
impl BitXorAssign<Simd<[u64; 2]>> for u64x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u64; 4]>> for u64x4
impl BitXorAssign<Simd<[u64; 4]>> for u64x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u64; 8]>> for u64x8
impl BitXorAssign<Simd<[u64; 8]>> for u64x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u8; 16]>> for u8x16
impl BitXorAssign<Simd<[u8; 16]>> for u8x16
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u8; 2]>> for u8x2
impl BitXorAssign<Simd<[u8; 2]>> for u8x2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
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<Simd<[u8; 4]>> for u8x4
impl BitXorAssign<Simd<[u8; 4]>> for u8x4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u8; 64]>> for u8x64
impl BitXorAssign<Simd<[u8; 64]>> for u8x64
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[u8; 8]>> for u8x8
impl BitXorAssign<Simd<[u8; 8]>> for u8x8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[usize; 2]>> for usizex2
impl BitXorAssign<Simd<[usize; 2]>> for usizex2
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[usize; 4]>> for usizex4
impl BitXorAssign<Simd<[usize; 4]>> for usizex4
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl BitXorAssign<Simd<[usize; 8]>> for usizex8
impl BitXorAssign<Simd<[usize; 8]>> for usizex8
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
^=
operation. Read moresource§impl DivAssign<Simd<[f32; 16]>> for f32x16
impl DivAssign<Simd<[f32; 16]>> for f32x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f32; 2]>> for f32x2
impl DivAssign<Simd<[f32; 2]>> for f32x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f32; 4]>> for f32x4
impl DivAssign<Simd<[f32; 4]>> for f32x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f32; 8]>> for f32x8
impl DivAssign<Simd<[f32; 8]>> for f32x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f64; 2]>> for f64x2
impl DivAssign<Simd<[f64; 2]>> for f64x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f64; 4]>> for f64x4
impl DivAssign<Simd<[f64; 4]>> for f64x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[f64; 8]>> for f64x8
impl DivAssign<Simd<[f64; 8]>> for f64x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i128; 1]>> for i128x1
impl DivAssign<Simd<[i128; 1]>> for i128x1
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i128; 2]>> for i128x2
impl DivAssign<Simd<[i128; 2]>> for i128x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i128; 4]>> for i128x4
impl DivAssign<Simd<[i128; 4]>> for i128x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i16; 16]>> for i16x16
impl DivAssign<Simd<[i16; 16]>> for i16x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i16; 2]>> for i16x2
impl DivAssign<Simd<[i16; 2]>> for i16x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i16; 32]>> for i16x32
impl DivAssign<Simd<[i16; 32]>> for i16x32
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i16; 4]>> for i16x4
impl DivAssign<Simd<[i16; 4]>> for i16x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i16; 8]>> for i16x8
impl DivAssign<Simd<[i16; 8]>> for i16x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i32; 16]>> for i32x16
impl DivAssign<Simd<[i32; 16]>> for i32x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i32; 2]>> for i32x2
impl DivAssign<Simd<[i32; 2]>> for i32x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i32; 4]>> for i32x4
impl DivAssign<Simd<[i32; 4]>> for i32x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i32; 8]>> for i32x8
impl DivAssign<Simd<[i32; 8]>> for i32x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i64; 2]>> for i64x2
impl DivAssign<Simd<[i64; 2]>> for i64x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i64; 4]>> for i64x4
impl DivAssign<Simd<[i64; 4]>> for i64x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i64; 8]>> for i64x8
impl DivAssign<Simd<[i64; 8]>> for i64x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 16]>> for i8x16
impl DivAssign<Simd<[i8; 16]>> for i8x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 2]>> for i8x2
impl DivAssign<Simd<[i8; 2]>> for i8x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 32]>> for i8x32
impl DivAssign<Simd<[i8; 32]>> for i8x32
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 4]>> for i8x4
impl DivAssign<Simd<[i8; 4]>> for i8x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 64]>> for i8x64
impl DivAssign<Simd<[i8; 64]>> for i8x64
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[i8; 8]>> for i8x8
impl DivAssign<Simd<[i8; 8]>> for i8x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[isize; 2]>> for isizex2
impl DivAssign<Simd<[isize; 2]>> for isizex2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[isize; 4]>> for isizex4
impl DivAssign<Simd<[isize; 4]>> for isizex4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[isize; 8]>> for isizex8
impl DivAssign<Simd<[isize; 8]>> for isizex8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u128; 1]>> for u128x1
impl DivAssign<Simd<[u128; 1]>> for u128x1
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u128; 2]>> for u128x2
impl DivAssign<Simd<[u128; 2]>> for u128x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u128; 4]>> for u128x4
impl DivAssign<Simd<[u128; 4]>> for u128x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u16; 16]>> for u16x16
impl DivAssign<Simd<[u16; 16]>> for u16x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u16; 2]>> for u16x2
impl DivAssign<Simd<[u16; 2]>> for u16x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u16; 32]>> for u16x32
impl DivAssign<Simd<[u16; 32]>> for u16x32
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u16; 4]>> for u16x4
impl DivAssign<Simd<[u16; 4]>> for u16x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u16; 8]>> for u16x8
impl DivAssign<Simd<[u16; 8]>> for u16x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u32; 16]>> for u32x16
impl DivAssign<Simd<[u32; 16]>> for u32x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u32; 2]>> for u32x2
impl DivAssign<Simd<[u32; 2]>> for u32x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u32; 4]>> for u32x4
impl DivAssign<Simd<[u32; 4]>> for u32x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u32; 8]>> for u32x8
impl DivAssign<Simd<[u32; 8]>> for u32x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u64; 2]>> for u64x2
impl DivAssign<Simd<[u64; 2]>> for u64x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u64; 4]>> for u64x4
impl DivAssign<Simd<[u64; 4]>> for u64x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u64; 8]>> for u64x8
impl DivAssign<Simd<[u64; 8]>> for u64x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u8; 16]>> for u8x16
impl DivAssign<Simd<[u8; 16]>> for u8x16
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u8; 2]>> for u8x2
impl DivAssign<Simd<[u8; 2]>> for u8x2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
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<Simd<[u8; 4]>> for u8x4
impl DivAssign<Simd<[u8; 4]>> for u8x4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u8; 64]>> for u8x64
impl DivAssign<Simd<[u8; 64]>> for u8x64
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[u8; 8]>> for u8x8
impl DivAssign<Simd<[u8; 8]>> for u8x8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[usize; 2]>> for usizex2
impl DivAssign<Simd<[usize; 2]>> for usizex2
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[usize; 4]>> for usizex4
impl DivAssign<Simd<[usize; 4]>> for usizex4
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl DivAssign<Simd<[usize; 8]>> for usizex8
impl DivAssign<Simd<[usize; 8]>> for usizex8
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moresource§impl MulAssign<Simd<[f32; 16]>> for f32x16
impl MulAssign<Simd<[f32; 16]>> for f32x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f32; 2]>> for f32x2
impl MulAssign<Simd<[f32; 2]>> for f32x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f32; 4]>> for f32x4
impl MulAssign<Simd<[f32; 4]>> for f32x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f32; 8]>> for f32x8
impl MulAssign<Simd<[f32; 8]>> for f32x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f64; 2]>> for f64x2
impl MulAssign<Simd<[f64; 2]>> for f64x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f64; 4]>> for f64x4
impl MulAssign<Simd<[f64; 4]>> for f64x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[f64; 8]>> for f64x8
impl MulAssign<Simd<[f64; 8]>> for f64x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i128; 1]>> for i128x1
impl MulAssign<Simd<[i128; 1]>> for i128x1
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i128; 2]>> for i128x2
impl MulAssign<Simd<[i128; 2]>> for i128x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i128; 4]>> for i128x4
impl MulAssign<Simd<[i128; 4]>> for i128x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i16; 16]>> for i16x16
impl MulAssign<Simd<[i16; 16]>> for i16x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i16; 2]>> for i16x2
impl MulAssign<Simd<[i16; 2]>> for i16x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i16; 32]>> for i16x32
impl MulAssign<Simd<[i16; 32]>> for i16x32
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i16; 4]>> for i16x4
impl MulAssign<Simd<[i16; 4]>> for i16x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i16; 8]>> for i16x8
impl MulAssign<Simd<[i16; 8]>> for i16x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i32; 16]>> for i32x16
impl MulAssign<Simd<[i32; 16]>> for i32x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i32; 2]>> for i32x2
impl MulAssign<Simd<[i32; 2]>> for i32x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i32; 4]>> for i32x4
impl MulAssign<Simd<[i32; 4]>> for i32x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i32; 8]>> for i32x8
impl MulAssign<Simd<[i32; 8]>> for i32x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i64; 2]>> for i64x2
impl MulAssign<Simd<[i64; 2]>> for i64x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i64; 4]>> for i64x4
impl MulAssign<Simd<[i64; 4]>> for i64x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i64; 8]>> for i64x8
impl MulAssign<Simd<[i64; 8]>> for i64x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 16]>> for i8x16
impl MulAssign<Simd<[i8; 16]>> for i8x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 2]>> for i8x2
impl MulAssign<Simd<[i8; 2]>> for i8x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 32]>> for i8x32
impl MulAssign<Simd<[i8; 32]>> for i8x32
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 4]>> for i8x4
impl MulAssign<Simd<[i8; 4]>> for i8x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 64]>> for i8x64
impl MulAssign<Simd<[i8; 64]>> for i8x64
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[i8; 8]>> for i8x8
impl MulAssign<Simd<[i8; 8]>> for i8x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[isize; 2]>> for isizex2
impl MulAssign<Simd<[isize; 2]>> for isizex2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[isize; 4]>> for isizex4
impl MulAssign<Simd<[isize; 4]>> for isizex4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[isize; 8]>> for isizex8
impl MulAssign<Simd<[isize; 8]>> for isizex8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u128; 1]>> for u128x1
impl MulAssign<Simd<[u128; 1]>> for u128x1
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u128; 2]>> for u128x2
impl MulAssign<Simd<[u128; 2]>> for u128x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u128; 4]>> for u128x4
impl MulAssign<Simd<[u128; 4]>> for u128x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u16; 16]>> for u16x16
impl MulAssign<Simd<[u16; 16]>> for u16x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u16; 2]>> for u16x2
impl MulAssign<Simd<[u16; 2]>> for u16x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u16; 32]>> for u16x32
impl MulAssign<Simd<[u16; 32]>> for u16x32
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u16; 4]>> for u16x4
impl MulAssign<Simd<[u16; 4]>> for u16x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u16; 8]>> for u16x8
impl MulAssign<Simd<[u16; 8]>> for u16x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u32; 16]>> for u32x16
impl MulAssign<Simd<[u32; 16]>> for u32x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u32; 2]>> for u32x2
impl MulAssign<Simd<[u32; 2]>> for u32x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u32; 4]>> for u32x4
impl MulAssign<Simd<[u32; 4]>> for u32x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u32; 8]>> for u32x8
impl MulAssign<Simd<[u32; 8]>> for u32x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u64; 2]>> for u64x2
impl MulAssign<Simd<[u64; 2]>> for u64x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u64; 4]>> for u64x4
impl MulAssign<Simd<[u64; 4]>> for u64x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u64; 8]>> for u64x8
impl MulAssign<Simd<[u64; 8]>> for u64x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u8; 16]>> for u8x16
impl MulAssign<Simd<[u8; 16]>> for u8x16
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u8; 2]>> for u8x2
impl MulAssign<Simd<[u8; 2]>> for u8x2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
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<Simd<[u8; 4]>> for u8x4
impl MulAssign<Simd<[u8; 4]>> for u8x4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u8; 64]>> for u8x64
impl MulAssign<Simd<[u8; 64]>> for u8x64
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[u8; 8]>> for u8x8
impl MulAssign<Simd<[u8; 8]>> for u8x8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[usize; 2]>> for usizex2
impl MulAssign<Simd<[usize; 2]>> for usizex2
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[usize; 4]>> for usizex4
impl MulAssign<Simd<[usize; 4]>> for usizex4
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl MulAssign<Simd<[usize; 8]>> for usizex8
impl MulAssign<Simd<[usize; 8]>> for usizex8
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moresource§impl RemAssign<Simd<[f32; 16]>> for f32x16
impl RemAssign<Simd<[f32; 16]>> for f32x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f32; 2]>> for f32x2
impl RemAssign<Simd<[f32; 2]>> for f32x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f32; 4]>> for f32x4
impl RemAssign<Simd<[f32; 4]>> for f32x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f32; 8]>> for f32x8
impl RemAssign<Simd<[f32; 8]>> for f32x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f64; 2]>> for f64x2
impl RemAssign<Simd<[f64; 2]>> for f64x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f64; 4]>> for f64x4
impl RemAssign<Simd<[f64; 4]>> for f64x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[f64; 8]>> for f64x8
impl RemAssign<Simd<[f64; 8]>> for f64x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i128; 1]>> for i128x1
impl RemAssign<Simd<[i128; 1]>> for i128x1
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i128; 2]>> for i128x2
impl RemAssign<Simd<[i128; 2]>> for i128x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i128; 4]>> for i128x4
impl RemAssign<Simd<[i128; 4]>> for i128x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i16; 16]>> for i16x16
impl RemAssign<Simd<[i16; 16]>> for i16x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i16; 2]>> for i16x2
impl RemAssign<Simd<[i16; 2]>> for i16x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i16; 32]>> for i16x32
impl RemAssign<Simd<[i16; 32]>> for i16x32
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i16; 4]>> for i16x4
impl RemAssign<Simd<[i16; 4]>> for i16x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i16; 8]>> for i16x8
impl RemAssign<Simd<[i16; 8]>> for i16x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i32; 16]>> for i32x16
impl RemAssign<Simd<[i32; 16]>> for i32x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i32; 2]>> for i32x2
impl RemAssign<Simd<[i32; 2]>> for i32x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i32; 4]>> for i32x4
impl RemAssign<Simd<[i32; 4]>> for i32x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i32; 8]>> for i32x8
impl RemAssign<Simd<[i32; 8]>> for i32x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i64; 2]>> for i64x2
impl RemAssign<Simd<[i64; 2]>> for i64x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i64; 4]>> for i64x4
impl RemAssign<Simd<[i64; 4]>> for i64x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i64; 8]>> for i64x8
impl RemAssign<Simd<[i64; 8]>> for i64x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 16]>> for i8x16
impl RemAssign<Simd<[i8; 16]>> for i8x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 2]>> for i8x2
impl RemAssign<Simd<[i8; 2]>> for i8x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 32]>> for i8x32
impl RemAssign<Simd<[i8; 32]>> for i8x32
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 4]>> for i8x4
impl RemAssign<Simd<[i8; 4]>> for i8x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 64]>> for i8x64
impl RemAssign<Simd<[i8; 64]>> for i8x64
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[i8; 8]>> for i8x8
impl RemAssign<Simd<[i8; 8]>> for i8x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[isize; 2]>> for isizex2
impl RemAssign<Simd<[isize; 2]>> for isizex2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[isize; 4]>> for isizex4
impl RemAssign<Simd<[isize; 4]>> for isizex4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[isize; 8]>> for isizex8
impl RemAssign<Simd<[isize; 8]>> for isizex8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u128; 1]>> for u128x1
impl RemAssign<Simd<[u128; 1]>> for u128x1
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u128; 2]>> for u128x2
impl RemAssign<Simd<[u128; 2]>> for u128x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u128; 4]>> for u128x4
impl RemAssign<Simd<[u128; 4]>> for u128x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u16; 16]>> for u16x16
impl RemAssign<Simd<[u16; 16]>> for u16x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u16; 2]>> for u16x2
impl RemAssign<Simd<[u16; 2]>> for u16x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u16; 32]>> for u16x32
impl RemAssign<Simd<[u16; 32]>> for u16x32
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u16; 4]>> for u16x4
impl RemAssign<Simd<[u16; 4]>> for u16x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u16; 8]>> for u16x8
impl RemAssign<Simd<[u16; 8]>> for u16x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u32; 16]>> for u32x16
impl RemAssign<Simd<[u32; 16]>> for u32x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u32; 2]>> for u32x2
impl RemAssign<Simd<[u32; 2]>> for u32x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u32; 4]>> for u32x4
impl RemAssign<Simd<[u32; 4]>> for u32x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u32; 8]>> for u32x8
impl RemAssign<Simd<[u32; 8]>> for u32x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u64; 2]>> for u64x2
impl RemAssign<Simd<[u64; 2]>> for u64x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u64; 4]>> for u64x4
impl RemAssign<Simd<[u64; 4]>> for u64x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u64; 8]>> for u64x8
impl RemAssign<Simd<[u64; 8]>> for u64x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u8; 16]>> for u8x16
impl RemAssign<Simd<[u8; 16]>> for u8x16
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u8; 2]>> for u8x2
impl RemAssign<Simd<[u8; 2]>> for u8x2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
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<Simd<[u8; 4]>> for u8x4
impl RemAssign<Simd<[u8; 4]>> for u8x4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u8; 64]>> for u8x64
impl RemAssign<Simd<[u8; 64]>> for u8x64
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[u8; 8]>> for u8x8
impl RemAssign<Simd<[u8; 8]>> for u8x8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[usize; 2]>> for usizex2
impl RemAssign<Simd<[usize; 2]>> for usizex2
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[usize; 4]>> for usizex4
impl RemAssign<Simd<[usize; 4]>> for usizex4
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl RemAssign<Simd<[usize; 8]>> for usizex8
impl RemAssign<Simd<[usize; 8]>> for usizex8
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%=
operation. Read moresource§impl ShlAssign<Simd<[i128; 1]>> for i128x1
impl ShlAssign<Simd<[i128; 1]>> for i128x1
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i128; 2]>> for i128x2
impl ShlAssign<Simd<[i128; 2]>> for i128x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i128; 4]>> for i128x4
impl ShlAssign<Simd<[i128; 4]>> for i128x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i16; 16]>> for i16x16
impl ShlAssign<Simd<[i16; 16]>> for i16x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i16; 2]>> for i16x2
impl ShlAssign<Simd<[i16; 2]>> for i16x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i16; 32]>> for i16x32
impl ShlAssign<Simd<[i16; 32]>> for i16x32
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i16; 4]>> for i16x4
impl ShlAssign<Simd<[i16; 4]>> for i16x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i16; 8]>> for i16x8
impl ShlAssign<Simd<[i16; 8]>> for i16x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i32; 16]>> for i32x16
impl ShlAssign<Simd<[i32; 16]>> for i32x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i32; 2]>> for i32x2
impl ShlAssign<Simd<[i32; 2]>> for i32x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i32; 4]>> for i32x4
impl ShlAssign<Simd<[i32; 4]>> for i32x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i32; 8]>> for i32x8
impl ShlAssign<Simd<[i32; 8]>> for i32x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i64; 2]>> for i64x2
impl ShlAssign<Simd<[i64; 2]>> for i64x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i64; 4]>> for i64x4
impl ShlAssign<Simd<[i64; 4]>> for i64x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i64; 8]>> for i64x8
impl ShlAssign<Simd<[i64; 8]>> for i64x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 16]>> for i8x16
impl ShlAssign<Simd<[i8; 16]>> for i8x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 2]>> for i8x2
impl ShlAssign<Simd<[i8; 2]>> for i8x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 32]>> for i8x32
impl ShlAssign<Simd<[i8; 32]>> for i8x32
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 4]>> for i8x4
impl ShlAssign<Simd<[i8; 4]>> for i8x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 64]>> for i8x64
impl ShlAssign<Simd<[i8; 64]>> for i8x64
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[i8; 8]>> for i8x8
impl ShlAssign<Simd<[i8; 8]>> for i8x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[isize; 2]>> for isizex2
impl ShlAssign<Simd<[isize; 2]>> for isizex2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[isize; 4]>> for isizex4
impl ShlAssign<Simd<[isize; 4]>> for isizex4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[isize; 8]>> for isizex8
impl ShlAssign<Simd<[isize; 8]>> for isizex8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u128; 1]>> for u128x1
impl ShlAssign<Simd<[u128; 1]>> for u128x1
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u128; 2]>> for u128x2
impl ShlAssign<Simd<[u128; 2]>> for u128x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u128; 4]>> for u128x4
impl ShlAssign<Simd<[u128; 4]>> for u128x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u16; 16]>> for u16x16
impl ShlAssign<Simd<[u16; 16]>> for u16x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u16; 2]>> for u16x2
impl ShlAssign<Simd<[u16; 2]>> for u16x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u16; 32]>> for u16x32
impl ShlAssign<Simd<[u16; 32]>> for u16x32
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u16; 4]>> for u16x4
impl ShlAssign<Simd<[u16; 4]>> for u16x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u16; 8]>> for u16x8
impl ShlAssign<Simd<[u16; 8]>> for u16x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u32; 16]>> for u32x16
impl ShlAssign<Simd<[u32; 16]>> for u32x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u32; 2]>> for u32x2
impl ShlAssign<Simd<[u32; 2]>> for u32x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u32; 4]>> for u32x4
impl ShlAssign<Simd<[u32; 4]>> for u32x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u32; 8]>> for u32x8
impl ShlAssign<Simd<[u32; 8]>> for u32x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u64; 2]>> for u64x2
impl ShlAssign<Simd<[u64; 2]>> for u64x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u64; 4]>> for u64x4
impl ShlAssign<Simd<[u64; 4]>> for u64x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u64; 8]>> for u64x8
impl ShlAssign<Simd<[u64; 8]>> for u64x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u8; 16]>> for u8x16
impl ShlAssign<Simd<[u8; 16]>> for u8x16
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u8; 2]>> for u8x2
impl ShlAssign<Simd<[u8; 2]>> for u8x2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
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<Simd<[u8; 4]>> for u8x4
impl ShlAssign<Simd<[u8; 4]>> for u8x4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u8; 64]>> for u8x64
impl ShlAssign<Simd<[u8; 64]>> for u8x64
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[u8; 8]>> for u8x8
impl ShlAssign<Simd<[u8; 8]>> for u8x8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[usize; 2]>> for usizex2
impl ShlAssign<Simd<[usize; 2]>> for usizex2
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[usize; 4]>> for usizex4
impl ShlAssign<Simd<[usize; 4]>> for usizex4
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShlAssign<Simd<[usize; 8]>> for usizex8
impl ShlAssign<Simd<[usize; 8]>> for usizex8
source§fn shl_assign(&mut self, other: Self)
fn shl_assign(&mut self, other: Self)
<<=
operation. Read moresource§impl ShrAssign<Simd<[i128; 1]>> for i128x1
impl ShrAssign<Simd<[i128; 1]>> for i128x1
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i128; 2]>> for i128x2
impl ShrAssign<Simd<[i128; 2]>> for i128x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i128; 4]>> for i128x4
impl ShrAssign<Simd<[i128; 4]>> for i128x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i16; 16]>> for i16x16
impl ShrAssign<Simd<[i16; 16]>> for i16x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i16; 2]>> for i16x2
impl ShrAssign<Simd<[i16; 2]>> for i16x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i16; 32]>> for i16x32
impl ShrAssign<Simd<[i16; 32]>> for i16x32
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i16; 4]>> for i16x4
impl ShrAssign<Simd<[i16; 4]>> for i16x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i16; 8]>> for i16x8
impl ShrAssign<Simd<[i16; 8]>> for i16x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i32; 16]>> for i32x16
impl ShrAssign<Simd<[i32; 16]>> for i32x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i32; 2]>> for i32x2
impl ShrAssign<Simd<[i32; 2]>> for i32x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i32; 4]>> for i32x4
impl ShrAssign<Simd<[i32; 4]>> for i32x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i32; 8]>> for i32x8
impl ShrAssign<Simd<[i32; 8]>> for i32x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i64; 2]>> for i64x2
impl ShrAssign<Simd<[i64; 2]>> for i64x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i64; 4]>> for i64x4
impl ShrAssign<Simd<[i64; 4]>> for i64x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i64; 8]>> for i64x8
impl ShrAssign<Simd<[i64; 8]>> for i64x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 16]>> for i8x16
impl ShrAssign<Simd<[i8; 16]>> for i8x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 2]>> for i8x2
impl ShrAssign<Simd<[i8; 2]>> for i8x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 32]>> for i8x32
impl ShrAssign<Simd<[i8; 32]>> for i8x32
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 4]>> for i8x4
impl ShrAssign<Simd<[i8; 4]>> for i8x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 64]>> for i8x64
impl ShrAssign<Simd<[i8; 64]>> for i8x64
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[i8; 8]>> for i8x8
impl ShrAssign<Simd<[i8; 8]>> for i8x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[isize; 2]>> for isizex2
impl ShrAssign<Simd<[isize; 2]>> for isizex2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[isize; 4]>> for isizex4
impl ShrAssign<Simd<[isize; 4]>> for isizex4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[isize; 8]>> for isizex8
impl ShrAssign<Simd<[isize; 8]>> for isizex8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u128; 1]>> for u128x1
impl ShrAssign<Simd<[u128; 1]>> for u128x1
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u128; 2]>> for u128x2
impl ShrAssign<Simd<[u128; 2]>> for u128x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u128; 4]>> for u128x4
impl ShrAssign<Simd<[u128; 4]>> for u128x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u16; 16]>> for u16x16
impl ShrAssign<Simd<[u16; 16]>> for u16x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u16; 2]>> for u16x2
impl ShrAssign<Simd<[u16; 2]>> for u16x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u16; 32]>> for u16x32
impl ShrAssign<Simd<[u16; 32]>> for u16x32
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u16; 4]>> for u16x4
impl ShrAssign<Simd<[u16; 4]>> for u16x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u16; 8]>> for u16x8
impl ShrAssign<Simd<[u16; 8]>> for u16x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u32; 16]>> for u32x16
impl ShrAssign<Simd<[u32; 16]>> for u32x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u32; 2]>> for u32x2
impl ShrAssign<Simd<[u32; 2]>> for u32x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u32; 4]>> for u32x4
impl ShrAssign<Simd<[u32; 4]>> for u32x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u32; 8]>> for u32x8
impl ShrAssign<Simd<[u32; 8]>> for u32x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u64; 2]>> for u64x2
impl ShrAssign<Simd<[u64; 2]>> for u64x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u64; 4]>> for u64x4
impl ShrAssign<Simd<[u64; 4]>> for u64x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u64; 8]>> for u64x8
impl ShrAssign<Simd<[u64; 8]>> for u64x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u8; 16]>> for u8x16
impl ShrAssign<Simd<[u8; 16]>> for u8x16
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u8; 2]>> for u8x2
impl ShrAssign<Simd<[u8; 2]>> for u8x2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
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<Simd<[u8; 4]>> for u8x4
impl ShrAssign<Simd<[u8; 4]>> for u8x4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u8; 64]>> for u8x64
impl ShrAssign<Simd<[u8; 64]>> for u8x64
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[u8; 8]>> for u8x8
impl ShrAssign<Simd<[u8; 8]>> for u8x8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[usize; 2]>> for usizex2
impl ShrAssign<Simd<[usize; 2]>> for usizex2
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[usize; 4]>> for usizex4
impl ShrAssign<Simd<[usize; 4]>> for usizex4
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl ShrAssign<Simd<[usize; 8]>> for usizex8
impl ShrAssign<Simd<[usize; 8]>> for usizex8
source§fn shr_assign(&mut self, other: Self)
fn shr_assign(&mut self, other: Self)
>>=
operation. Read moresource§impl SubAssign<Simd<[f32; 16]>> for f32x16
impl SubAssign<Simd<[f32; 16]>> for f32x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f32; 2]>> for f32x2
impl SubAssign<Simd<[f32; 2]>> for f32x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f32; 4]>> for f32x4
impl SubAssign<Simd<[f32; 4]>> for f32x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f32; 8]>> for f32x8
impl SubAssign<Simd<[f32; 8]>> for f32x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f64; 2]>> for f64x2
impl SubAssign<Simd<[f64; 2]>> for f64x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f64; 4]>> for f64x4
impl SubAssign<Simd<[f64; 4]>> for f64x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[f64; 8]>> for f64x8
impl SubAssign<Simd<[f64; 8]>> for f64x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i128; 1]>> for i128x1
impl SubAssign<Simd<[i128; 1]>> for i128x1
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i128; 2]>> for i128x2
impl SubAssign<Simd<[i128; 2]>> for i128x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i128; 4]>> for i128x4
impl SubAssign<Simd<[i128; 4]>> for i128x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i16; 16]>> for i16x16
impl SubAssign<Simd<[i16; 16]>> for i16x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i16; 2]>> for i16x2
impl SubAssign<Simd<[i16; 2]>> for i16x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i16; 32]>> for i16x32
impl SubAssign<Simd<[i16; 32]>> for i16x32
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i16; 4]>> for i16x4
impl SubAssign<Simd<[i16; 4]>> for i16x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i16; 8]>> for i16x8
impl SubAssign<Simd<[i16; 8]>> for i16x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i32; 16]>> for i32x16
impl SubAssign<Simd<[i32; 16]>> for i32x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i32; 2]>> for i32x2
impl SubAssign<Simd<[i32; 2]>> for i32x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i32; 4]>> for i32x4
impl SubAssign<Simd<[i32; 4]>> for i32x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i32; 8]>> for i32x8
impl SubAssign<Simd<[i32; 8]>> for i32x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i64; 2]>> for i64x2
impl SubAssign<Simd<[i64; 2]>> for i64x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i64; 4]>> for i64x4
impl SubAssign<Simd<[i64; 4]>> for i64x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i64; 8]>> for i64x8
impl SubAssign<Simd<[i64; 8]>> for i64x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 16]>> for i8x16
impl SubAssign<Simd<[i8; 16]>> for i8x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 2]>> for i8x2
impl SubAssign<Simd<[i8; 2]>> for i8x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 32]>> for i8x32
impl SubAssign<Simd<[i8; 32]>> for i8x32
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 4]>> for i8x4
impl SubAssign<Simd<[i8; 4]>> for i8x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 64]>> for i8x64
impl SubAssign<Simd<[i8; 64]>> for i8x64
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[i8; 8]>> for i8x8
impl SubAssign<Simd<[i8; 8]>> for i8x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[isize; 2]>> for isizex2
impl SubAssign<Simd<[isize; 2]>> for isizex2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[isize; 4]>> for isizex4
impl SubAssign<Simd<[isize; 4]>> for isizex4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[isize; 8]>> for isizex8
impl SubAssign<Simd<[isize; 8]>> for isizex8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u128; 1]>> for u128x1
impl SubAssign<Simd<[u128; 1]>> for u128x1
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u128; 2]>> for u128x2
impl SubAssign<Simd<[u128; 2]>> for u128x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u128; 4]>> for u128x4
impl SubAssign<Simd<[u128; 4]>> for u128x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u16; 16]>> for u16x16
impl SubAssign<Simd<[u16; 16]>> for u16x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u16; 2]>> for u16x2
impl SubAssign<Simd<[u16; 2]>> for u16x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u16; 32]>> for u16x32
impl SubAssign<Simd<[u16; 32]>> for u16x32
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u16; 4]>> for u16x4
impl SubAssign<Simd<[u16; 4]>> for u16x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u16; 8]>> for u16x8
impl SubAssign<Simd<[u16; 8]>> for u16x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u32; 16]>> for u32x16
impl SubAssign<Simd<[u32; 16]>> for u32x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u32; 2]>> for u32x2
impl SubAssign<Simd<[u32; 2]>> for u32x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u32; 4]>> for u32x4
impl SubAssign<Simd<[u32; 4]>> for u32x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u32; 8]>> for u32x8
impl SubAssign<Simd<[u32; 8]>> for u32x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u64; 2]>> for u64x2
impl SubAssign<Simd<[u64; 2]>> for u64x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u64; 4]>> for u64x4
impl SubAssign<Simd<[u64; 4]>> for u64x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u64; 8]>> for u64x8
impl SubAssign<Simd<[u64; 8]>> for u64x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u8; 16]>> for u8x16
impl SubAssign<Simd<[u8; 16]>> for u8x16
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u8; 2]>> for u8x2
impl SubAssign<Simd<[u8; 2]>> for u8x2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
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<Simd<[u8; 4]>> for u8x4
impl SubAssign<Simd<[u8; 4]>> for u8x4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u8; 64]>> for u8x64
impl SubAssign<Simd<[u8; 64]>> for u8x64
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[u8; 8]>> for u8x8
impl SubAssign<Simd<[u8; 8]>> for u8x8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[usize; 2]>> for usizex2
impl SubAssign<Simd<[usize; 2]>> for usizex2
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[usize; 4]>> for usizex4
impl SubAssign<Simd<[usize; 4]>> for usizex4
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moresource§impl SubAssign<Simd<[usize; 8]>> for usizex8
impl SubAssign<Simd<[usize; 8]>> for usizex8
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read more