Type Definition packed_simd::i64x8

source ·
pub type i64x8 = Simd<[i64; 8]>;
Expand description

A 512-bit vector with 8 i64 lanes.

Implementations§

source§

impl i64x8

source

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.

source

pub const fn lanes() -> usize

Returns the number of vector lanes.

source

pub const fn splat(value: i64) -> Self

Constructs a new instance with each element initialized to value.

source

pub fn extract(self, index: usize) -> i64

Extracts the value at index.

Panics

If index >= Self::lanes().

source

pub unsafe fn extract_unchecked(self, index: usize) -> i64

Extracts the value at index.

Safety

If index >= Self::lanes() the behavior is undefined.

source

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().

source

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 i64x8

source

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.

source

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 i64x8

source

pub fn min(self, x: Self) -> Self

Minimum of two vectors.

Returns a new vector containing the minimum value of each of the input vector lanes.

source

pub fn max(self, x: Self) -> Self

Maximum of two vectors.

Returns a new vector containing the maximum value of each of the input vector lanes.

source§

impl i64x8

source

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.

source

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 i64x8

source

pub fn max_element(self) -> i64

Largest vector element value.

source

pub fn min_element(self) -> i64

Smallest vector element value.

source§

impl i64x8

source

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

pub fn or(self) -> i64

Lane-wise bitwise or of the vector elements.

Note: if the vector has one lane, the first element of the vector is returned.

source

pub fn xor(self) -> i64

Lane-wise bitwise xor of the vector elements.

Note: if the vector has one lane, the first element of the vector is returned.

source§

impl i64x8

source

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.

source

pub fn from_slice_unaligned(slice: &[i64]) -> Self

Instantiates a new vector with the values of the slice.

Panics

If slice.len() < Self::lanes().

source

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.

source

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 i64x8

source

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.

source

pub fn write_to_slice_unaligned(self, slice: &mut [i64])

Writes the values of the vector to the slice.

Panics

If slice.len() < Self::lanes().

source

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.

source

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 i64x8

source

pub fn swap_bytes(self) -> Self

Reverses the byte order of the vector.

source

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.

source

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

pub fn from_le(x: Self) -> Self

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.

source

pub fn from_be(x: Self) -> Self

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.

source§

impl i64x8

source

pub fn count_ones(self) -> Self

Returns the number of ones in the binary representation of the lanes of self.

source

pub fn count_zeros(self) -> Self

Returns the number of zeros in the binary representation of the lanes of self.

source

pub fn leading_zeros(self) -> Self

Returns the number of leading zeros in the binary representation of the lanes of self.

source

pub fn trailing_zeros(self) -> Self

Returns the number of trailing zeros in the binary representation of the lanes of self.

source§

impl i64x8

source

pub fn shuffle1_dyn<I>(self, indices: I) -> Selfwhere Self: Shuffle1Dyn<Indices = I>,

Shuffle vector elements according to indices.

source§

impl i64x8

source

pub fn eq(self, other: Self) -> m64x8

Lane-wise equality comparison.

source

pub fn ne(self, other: Self) -> m64x8

Lane-wise inequality comparison.

source

pub fn lt(self, other: Self) -> m64x8

Lane-wise less-than comparison.

source

pub fn le(self, other: Self) -> m64x8

Lane-wise less-than-or-equals comparison.

source

pub fn gt(self, other: Self) -> m64x8

Lane-wise greater-than comparison.

source

pub fn ge(self, other: Self) -> m64x8

Lane-wise greater-than-or-equals comparison.

source§

impl i64x8

source

pub fn partial_lex_ord(&self) -> LexicographicallyOrdered<i64x8>

Returns a wrapper that implements PartialOrd.

source§

impl i64x8

source

pub fn lex_ord(&self) -> LexicographicallyOrdered<i64x8>

Returns a wrapper that implements Ord.

source§

impl i64x8

source

pub fn bitmask(self) -> u8

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§

source§

impl Add<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Self

Performs the + operation. Read more
source§

impl Add<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the + operator.
source§

fn add(self, other: i64) -> Self

Performs the + operation. Read more
source§

impl AddAssign<Simd<[i64; 8]>> for i64x8

source§

fn add_assign(&mut self, other: Self)

Performs the += operation. Read more
source§

impl AddAssign<i64> for i64x8

source§

fn add_assign(&mut self, other: i64)

Performs the += operation. Read more
source§

impl Binary for i64x8

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the & operator.
source§

fn bitand(self, other: Self) -> Self

Performs the & operation. Read more
source§

impl BitAnd<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the & operator.
source§

fn bitand(self, other: i64) -> Self

Performs the & operation. Read more
source§

impl BitAndAssign<Simd<[i64; 8]>> for i64x8

source§

fn bitand_assign(&mut self, other: Self)

Performs the &= operation. Read more
source§

impl BitAndAssign<i64> for i64x8

source§

fn bitand_assign(&mut self, other: i64)

Performs the &= operation. Read more
source§

impl BitOr<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the | operator.
source§

fn bitor(self, other: Self) -> Self

Performs the | operation. Read more
source§

impl BitOr<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the | operator.
source§

fn bitor(self, other: i64) -> Self

Performs the | operation. Read more
source§

impl BitOrAssign<Simd<[i64; 8]>> for i64x8

source§

fn bitor_assign(&mut self, other: Self)

Performs the |= operation. Read more
source§

impl BitOrAssign<i64> for i64x8

source§

fn bitor_assign(&mut self, other: i64)

Performs the |= operation. Read more
source§

impl BitXor<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the ^ operator.
source§

fn bitxor(self, other: Self) -> Self

Performs the ^ operation. Read more
source§

impl BitXor<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the ^ operator.
source§

fn bitxor(self, other: i64) -> Self

Performs the ^ operation. Read more
source§

impl BitXorAssign<Simd<[i64; 8]>> for i64x8

source§

fn bitxor_assign(&mut self, other: Self)

Performs the ^= operation. Read more
source§

impl BitXorAssign<i64> for i64x8

source§

fn bitxor_assign(&mut self, other: i64)

Performs the ^= operation. Read more
source§

impl Debug for i64x8

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for i64x8

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Div<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the / operator.
source§

fn div(self, other: Self) -> Self

Performs the / operation. Read more
source§

impl Div<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the / operator.
source§

fn div(self, other: i64) -> Self

Performs the / operation. Read more
source§

impl DivAssign<Simd<[i64; 8]>> for i64x8

source§

fn div_assign(&mut self, other: Self)

Performs the /= operation. Read more
source§

impl DivAssign<i64> for i64x8

source§

fn div_assign(&mut self, other: i64)

Performs the /= operation. Read more
source§

impl From<[i64; 8]> for i64x8

source§

fn from(array: [i64; 8]) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[i16; 8]>> for i64x8

source§

fn from(source: i16x8) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[i32; 8]>> for i64x8

source§

fn from(source: i32x8) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[i8; 8]>> for i64x8

source§

fn from(source: i8x8) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[u16; 8]>> for i64x8

source§

fn from(source: u16x8) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[u32; 8]>> for i64x8

source§

fn from(source: u32x8) -> Self

Converts to this type from the input type.
source§

impl From<Simd<[u8; 8]>> for i64x8

source§

fn from(source: u8x8) -> Self

Converts to this type from the input type.
source§

impl FromBits<Simd<[f32; 16]>> for i64x8

source§

fn from_bits(x: f32x16) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[f64; 8]>> for i64x8

source§

fn from_bits(x: f64x8) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[i128; 4]>> for i64x8

source§

fn from_bits(x: i128x4) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[i16; 32]>> for i64x8

source§

fn from_bits(x: i16x32) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[i32; 16]>> for i64x8

source§

fn from_bits(x: i32x16) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[i8; 64]>> for i64x8

source§

fn from_bits(x: i8x64) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[m128; 4]>> for i64x8

source§

fn from_bits(x: m128x4) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[m16; 32]>> for i64x8

source§

fn from_bits(x: m16x32) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[m32; 16]>> for i64x8

source§

fn from_bits(x: m32x16) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[m64; 8]>> for i64x8

source§

fn from_bits(x: m64x8) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[m8; 64]>> for i64x8

source§

fn from_bits(x: m8x64) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[u128; 4]>> for i64x8

source§

fn from_bits(x: u128x4) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[u16; 32]>> for i64x8

source§

fn from_bits(x: u16x32) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[u32; 16]>> for i64x8

source§

fn from_bits(x: u32x16) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[u64; 8]>> for i64x8

source§

fn from_bits(x: u64x8) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromBits<Simd<[u8; 64]>> for i64x8

source§

fn from_bits(x: u8x64) -> Self

Available on crate feature into_bits only.
Safe lossless bitwise transmute from T to Self.
source§

impl FromCast<Simd<[f32; 8]>> for i64x8

source§

fn from_cast(x: f32x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[f64; 8]>> for i64x8

source§

fn from_cast(x: f64x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[i16; 8]>> for i64x8

source§

fn from_cast(x: i16x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[i32; 8]>> for i64x8

source§

fn from_cast(x: i32x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[i8; 8]>> for i64x8

source§

fn from_cast(x: i8x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[isize; 8]>> for i64x8

source§

fn from_cast(x: isizex8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[m16; 8]>> for i64x8

source§

fn from_cast(x: m16x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[m32; 8]>> for i64x8

source§

fn from_cast(x: m32x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[m64; 8]>> for i64x8

source§

fn from_cast(x: m64x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[m8; 8]>> for i64x8

source§

fn from_cast(x: m8x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[msize; 8]>> for i64x8

source§

fn from_cast(x: msizex8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[u16; 8]>> for i64x8

source§

fn from_cast(x: u16x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[u32; 8]>> for i64x8

source§

fn from_cast(x: u32x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[u64; 8]>> for i64x8

source§

fn from_cast(x: u64x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[u8; 8]>> for i64x8

source§

fn from_cast(x: u8x8) -> Self

Numeric cast from T to Self.
source§

impl FromCast<Simd<[usize; 8]>> for i64x8

source§

fn from_cast(x: usizex8) -> Self

Numeric cast from T to Self.
source§

impl Hash for i64x8

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for i64x8

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Mul<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the * operator.
source§

fn mul(self, other: Self) -> Self

Performs the * operation. Read more
source§

impl Mul<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the * operator.
source§

fn mul(self, other: i64) -> Self

Performs the * operation. Read more
source§

impl MulAssign<Simd<[i64; 8]>> for i64x8

source§

fn mul_assign(&mut self, other: Self)

Performs the *= operation. Read more
source§

impl MulAssign<i64> for i64x8

source§

fn mul_assign(&mut self, other: i64)

Performs the *= operation. Read more
source§

impl Neg for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self

Performs the unary - operation. Read more
source§

impl Not for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the ! operator.
source§

fn not(self) -> Self

Performs the unary ! operation. Read more
source§

impl Octal for i64x8

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl PartialEq<Simd<[i64; 8]>> for i64x8

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
source§

fn ne(&self, other: &Self) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Product<&'a Simd<[i64; 8]>> for i64x8

source§

fn product<I: Iterator<Item = &'a i64x8>>(iter: I) -> i64x8

Method which takes an iterator and generates Self from the elements by multiplying the items.
source§

impl Product<Simd<[i64; 8]>> for i64x8

source§

fn product<I: Iterator<Item = i64x8>>(iter: I) -> i64x8

Method which takes an iterator and generates Self from the elements by multiplying the items.
source§

impl Rem<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the % operator.
source§

fn rem(self, other: Self) -> Self

Performs the % operation. Read more
source§

impl Rem<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the % operator.
source§

fn rem(self, other: i64) -> Self

Performs the % operation. Read more
source§

impl RemAssign<Simd<[i64; 8]>> for i64x8

source§

fn rem_assign(&mut self, other: Self)

Performs the %= operation. Read more
source§

impl RemAssign<i64> for i64x8

source§

fn rem_assign(&mut self, other: i64)

Performs the %= operation. Read more
source§

impl Shl<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the << operator.
source§

fn shl(self, other: Self) -> Self

Performs the << operation. Read more
source§

impl Shl<u32> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self

Performs the << operation. Read more
source§

impl ShlAssign<Simd<[i64; 8]>> for i64x8

source§

fn shl_assign(&mut self, other: Self)

Performs the <<= operation. Read more
source§

impl ShlAssign<u32> for i64x8

source§

fn shl_assign(&mut self, other: u32)

Performs the <<= operation. Read more
source§

impl Shr<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the >> operator.
source§

fn shr(self, other: Self) -> Self

Performs the >> operation. Read more
source§

impl Shr<u32> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self

Performs the >> operation. Read more
source§

impl ShrAssign<Simd<[i64; 8]>> for i64x8

source§

fn shr_assign(&mut self, other: Self)

Performs the >>= operation. Read more
source§

impl ShrAssign<u32> for i64x8

source§

fn shr_assign(&mut self, other: u32)

Performs the >>= operation. Read more
source§

impl Simd for i64x8

§

type Element = i64

Element type of the SIMD vector
source§

const LANES: usize = 8usize

The number of elements in the SIMD vector.
§

type LanesType = [u32; 8]

The type: [u32; Self::N].
source§

impl Sub<Simd<[i64; 8]>> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the - operator.
source§

fn sub(self, other: Self) -> Self

Performs the - operation. Read more
source§

impl Sub<i64> for i64x8

§

type Output = Simd<[i64; 8]>

The resulting type after applying the - operator.
source§

fn sub(self, other: i64) -> Self

Performs the - operation. Read more
source§

impl SubAssign<Simd<[i64; 8]>> for i64x8

source§

fn sub_assign(&mut self, other: Self)

Performs the -= operation. Read more
source§

impl SubAssign<i64> for i64x8

source§

fn sub_assign(&mut self, other: i64)

Performs the -= operation. Read more
source§

impl<'a> Sum<&'a Simd<[i64; 8]>> for i64x8

source§

fn sum<I: Iterator<Item = &'a i64x8>>(iter: I) -> i64x8

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl Sum<Simd<[i64; 8]>> for i64x8

source§

fn sum<I: Iterator<Item = i64x8>>(iter: I) -> i64x8

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl UpperHex for i64x8

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Eq for i64x8