[−][src]Type Definition packed_simd::i64x2
type i64x2 = Simd<[i64; 2]>;
A 128-bit vector with 2 i64
lanes.
Methods
impl i64x2
[src]
pub const fn new(x0: i64, x1: i64) -> Self
[src]
Creates a new instance with each vector elements initialized with the provided values.
pub const fn lanes() -> usize
[src]
Returns the number of vector lanes.
pub const fn splat(value: i64) -> Self
[src]
Constructs a new instance with each element initialized to
value
.
pub fn extract(self, index: usize) -> i64
[src]
pub unsafe fn extract_unchecked(self, index: usize) -> i64
[src]
#[must_use = "replace does not modify the original value - it returns a new vector with the value at `index` replaced by `new_value`d"]
pub fn replace(self, index: usize, new_value: i64) -> Self
[src]
Returns a new vector where the value at index
is replaced by new_value
.
Panics
If index >= Self::lanes()
.
#[must_use = "replace_unchecked does not modify the original value - it returns a new vector with the value at `index` replaced by `new_value`d"]
pub unsafe fn replace_unchecked(self, index: usize, new_value: i64) -> Self
[src]
Returns a new vector where the value at index
is replaced by new_value
.
Precondition
If index >= Self::lanes()
the behavior is undefined.
impl i64x2
[src]
pub fn rotate_left(self, n: i64x2) -> i64x2
[src]
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
.
pub fn rotate_right(self, n: i64x2) -> i64x2
[src]
Shifts the bits of each lane to the right by the specified
amount in the corresponding lane of n
, wrapping the
truncated bits to the beginning of the resulting integer.
Note: this is neither the same operation as <<
nor equivalent
to slice::rotate_left
.
impl i64x2
[src]
pub fn min(self, x: Self) -> Self
[src]
Minimum of two vectors.
Returns a new vector containing the minimum value of each of the input vector lanes.
pub fn max(self, x: Self) -> Self
[src]
Maximum of two vectors.
Returns a new vector containing the maximum value of each of the input vector lanes.
impl i64x2
[src]
pub fn wrapping_sum(self) -> i64
[src]
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.
pub fn wrapping_product(self) -> i64
[src]
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.
impl i64x2
[src]
pub fn max_element(self) -> i64
[src]
Largest vector element value.
pub fn min_element(self) -> i64
[src]
Smallest vector element value.
impl i64x2
[src]
pub fn and(self) -> i64
[src]
Lane-wise bitwise and
of the vector elements.
Note: if the vector has one lane, the first element of the vector is returned.
pub fn or(self) -> i64
[src]
Lane-wise bitwise or
of the vector elements.
Note: if the vector has one lane, the first element of the vector is returned.
pub fn xor(self) -> i64
[src]
Lane-wise bitwise xor
of the vector elements.
Note: if the vector has one lane, the first element of the vector is returned.
impl i64x2
[src]
pub fn from_slice_aligned(slice: &[i64]) -> Self
[src]
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.
pub fn from_slice_unaligned(slice: &[i64]) -> Self
[src]
pub unsafe fn from_slice_aligned_unchecked(slice: &[i64]) -> Self
[src]
Instantiates a new vector with the values of the slice
.
Precondition
If slice.len() < Self::lanes()
or &slice[0]
is not aligned
to an align_of::<Self>()
boundary, the behavior is undefined.
pub unsafe fn from_slice_unaligned_unchecked(slice: &[i64]) -> Self
[src]
Instantiates a new vector with the values of the slice
.
Precondition
If slice.len() < Self::lanes()
the behavior is undefined.
impl i64x2
[src]
pub fn write_to_slice_aligned(self, slice: &mut [i64])
[src]
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.
pub fn write_to_slice_unaligned(self, slice: &mut [i64])
[src]
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [i64])
[src]
Writes the values of the vector to the slice
.
Precondition
If slice.len() < Self::lanes()
or &slice[0]
is not
aligned to an align_of::<Self>()
boundary, the behavior is
undefined.
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [i64])
[src]
Writes the values of the vector to the slice
.
Precondition
If slice.len() < Self::lanes()
the behavior is undefined.
impl i64x2
[src]
pub fn swap_bytes(self) -> Self
[src]
Reverses the byte order of the vector.
pub fn to_le(self) -> Self
[src]
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.
pub fn to_be(self) -> Self
[src]
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.
pub fn from_le(x: Self) -> Self
[src]
Converts a vector from little endian to the target's endianness.
On little endian this is a no-op. On big endian the bytes are swapped.
pub fn from_be(x: Self) -> Self
[src]
Converts a vector from big endian to the target's endianness.
On big endian this is a no-op. On little endian the bytes are swapped.
impl i64x2
[src]
pub fn count_ones(self) -> Self
[src]
Returns the number of ones in the binary representation of
the lanes of self
.
pub fn count_zeros(self) -> Self
[src]
Returns the number of zeros in the binary representation of
the lanes of self
.
pub fn leading_zeros(self) -> Self
[src]
Returns the number of leading zeros in the binary
representation of the lanes of self
.
pub fn trailing_zeros(self) -> Self
[src]
Returns the number of trailing zeros in the binary
representation of the lanes of self
.
impl i64x2
[src]
pub fn shuffle1_dyn<I>(self, indices: I) -> Self where
Self: Shuffle1Dyn<Indices = I>,
[src]
Self: Shuffle1Dyn<Indices = I>,
Shuffle vector elements according to indices
.
impl i64x2
[src]
pub fn eq(self, other: Self) -> m64x2
[src]
Lane-wise equality comparison.
pub fn ne(self, other: Self) -> m64x2
[src]
Lane-wise inequality comparison.
pub fn lt(self, other: Self) -> m64x2
[src]
Lane-wise less-than comparison.
pub fn le(self, other: Self) -> m64x2
[src]
Lane-wise less-than-or-equals comparison.
pub fn gt(self, other: Self) -> m64x2
[src]
Lane-wise greater-than comparison.
pub fn ge(self, other: Self) -> m64x2
[src]
Lane-wise greater-than-or-equals comparison.
impl i64x2
[src]
pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x2>
[src]
Returns a wrapper that implements PartialOrd
.
impl i64x2
[src]
pub fn lex_ord(&self) -> LexicographicallyOrdered<i64x2>
[src]
Returns a wrapper that implements Ord
.
impl i64x2
[src]
pub fn bitmask(self) -> u8
[src]
Creates a bitmask with the MSB of each vector lane.
If the vector has less than 8 lanes, the bits that do not correspond to any vector lanes are cleared.
Trait Implementations
impl FromCast<Simd<[i8; 2]>> for i64x2
[src]
impl FromCast<Simd<[u8; 2]>> for i64x2
[src]
impl FromCast<Simd<[m8; 2]>> for i64x2
[src]
impl FromCast<Simd<[i16; 2]>> for i64x2
[src]
impl FromCast<Simd<[u16; 2]>> for i64x2
[src]
impl FromCast<Simd<[m16; 2]>> for i64x2
[src]
impl FromCast<Simd<[i32; 2]>> for i64x2
[src]
impl FromCast<Simd<[u32; 2]>> for i64x2
[src]
impl FromCast<Simd<[f32; 2]>> for i64x2
[src]
impl FromCast<Simd<[m32; 2]>> for i64x2
[src]
impl FromCast<Simd<[u64; 2]>> for i64x2
[src]
impl FromCast<Simd<[f64; 2]>> for i64x2
[src]
impl FromCast<Simd<[m64; 2]>> for i64x2
[src]
impl FromCast<Simd<[i128; 2]>> for i64x2
[src]
impl FromCast<Simd<[u128; 2]>> for i64x2
[src]
impl FromCast<Simd<[m128; 2]>> for i64x2
[src]
impl FromCast<Simd<[isize; 2]>> for i64x2
[src]
impl FromCast<Simd<[usize; 2]>> for i64x2
[src]
impl FromCast<Simd<[msize; 2]>> for i64x2
[src]
impl PartialEq<Simd<[i64; 2]>> for i64x2
[src]
impl Eq for i64x2
[src]
impl From<[i64; 2]> for i64x2
[src]
impl From<Simd<[i8; 2]>> for i64x2
[src]
impl From<Simd<[u8; 2]>> for i64x2
[src]
impl From<Simd<[i16; 2]>> for i64x2
[src]
impl From<Simd<[u16; 2]>> for i64x2
[src]
impl From<Simd<[i32; 2]>> for i64x2
[src]
impl From<Simd<[u32; 2]>> for i64x2
[src]
impl Debug for i64x2
[src]
impl Div<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the /
operator.
fn div(self, other: Self) -> Self
[src]
impl Div<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the /
operator.
fn div(self, other: i64) -> Self
[src]
impl Sub<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, other: Self) -> Self
[src]
impl Sub<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, other: i64) -> Self
[src]
impl Add<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, other: Self) -> Self
[src]
impl Add<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, other: i64) -> Self
[src]
impl Mul<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the *
operator.
fn mul(self, other: Self) -> Self
[src]
impl Mul<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the *
operator.
fn mul(self, other: i64) -> Self
[src]
impl Rem<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the %
operator.
fn rem(self, other: Self) -> Self
[src]
impl Rem<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the %
operator.
fn rem(self, other: i64) -> Self
[src]
impl Neg for i64x2
[src]
impl AddAssign<Simd<[i64; 2]>> for i64x2
[src]
fn add_assign(&mut self, other: Self)
[src]
impl AddAssign<i64> for i64x2
[src]
fn add_assign(&mut self, other: i64)
[src]
impl SubAssign<Simd<[i64; 2]>> for i64x2
[src]
fn sub_assign(&mut self, other: Self)
[src]
impl SubAssign<i64> for i64x2
[src]
fn sub_assign(&mut self, other: i64)
[src]
impl MulAssign<Simd<[i64; 2]>> for i64x2
[src]
fn mul_assign(&mut self, other: Self)
[src]
impl MulAssign<i64> for i64x2
[src]
fn mul_assign(&mut self, other: i64)
[src]
impl DivAssign<Simd<[i64; 2]>> for i64x2
[src]
fn div_assign(&mut self, other: Self)
[src]
impl DivAssign<i64> for i64x2
[src]
fn div_assign(&mut self, other: i64)
[src]
impl RemAssign<Simd<[i64; 2]>> for i64x2
[src]
fn rem_assign(&mut self, other: Self)
[src]
impl RemAssign<i64> for i64x2
[src]
fn rem_assign(&mut self, other: i64)
[src]
impl Not for i64x2
[src]
impl BitAnd<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the &
operator.
fn bitand(self, other: Self) -> Self
[src]
impl BitAnd<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the &
operator.
fn bitand(self, other: i64) -> Self
[src]
impl BitOr<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the |
operator.
fn bitor(self, other: Self) -> Self
[src]
impl BitOr<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the |
operator.
fn bitor(self, other: i64) -> Self
[src]
impl BitXor<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the ^
operator.
fn bitxor(self, other: Self) -> Self
[src]
impl BitXor<i64> for i64x2
[src]
type Output = Self
The resulting type after applying the ^
operator.
fn bitxor(self, other: i64) -> Self
[src]
impl Shl<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the <<
operator.
fn shl(self, other: Self) -> Self
[src]
impl Shl<u32> for i64x2
[src]
type Output = Self
The resulting type after applying the <<
operator.
fn shl(self, other: u32) -> Self
[src]
impl Shr<Simd<[i64; 2]>> for i64x2
[src]
type Output = Self
The resulting type after applying the >>
operator.
fn shr(self, other: Self) -> Self
[src]
impl Shr<u32> for i64x2
[src]
type Output = Self
The resulting type after applying the >>
operator.
fn shr(self, other: u32) -> Self
[src]
impl BitAndAssign<Simd<[i64; 2]>> for i64x2
[src]
fn bitand_assign(&mut self, other: Self)
[src]
impl BitAndAssign<i64> for i64x2
[src]
fn bitand_assign(&mut self, other: i64)
[src]
impl BitOrAssign<Simd<[i64; 2]>> for i64x2
[src]
fn bitor_assign(&mut self, other: Self)
[src]
impl BitOrAssign<i64> for i64x2
[src]
fn bitor_assign(&mut self, other: i64)
[src]
impl BitXorAssign<Simd<[i64; 2]>> for i64x2
[src]
fn bitxor_assign(&mut self, other: Self)
[src]
impl BitXorAssign<i64> for i64x2
[src]
fn bitxor_assign(&mut self, other: i64)
[src]
impl ShlAssign<Simd<[i64; 2]>> for i64x2
[src]
fn shl_assign(&mut self, other: Self)
[src]
impl ShlAssign<u32> for i64x2
[src]
fn shl_assign(&mut self, other: u32)
[src]
impl ShrAssign<Simd<[i64; 2]>> for i64x2
[src]
fn shr_assign(&mut self, other: Self)
[src]
impl ShrAssign<u32> for i64x2
[src]
fn shr_assign(&mut self, other: u32)
[src]
impl Hash for i64x2
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more