pub trait SimdValue: Sized {
    type Element: SimdValue<Element = Self::Element, SimdBool = bool>;
    type SimdBool: SimdBool;
    fn lanes() -> usize;
fn splat(val: Self::Element) -> Self;
fn extract(&self, i: usize) -> Self::Element;
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element;
fn replace(&mut self, i: usize, val: Self::Element);
unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element);
fn select(self, cond: Self::SimdBool, other: Self) -> Self; fn map_lanes(self, f: impl Fn(Self::Element) -> Self::Element) -> Self
    where
        Self: Clone
, { ... }
fn zip_map_lanes(
        self,
        b: Self,
        f: impl Fn(Self::Element, Self::Element) -> Self::Element
    ) -> Self
    where
        Self: Clone
, { ... } }
Expand description

Base trait for every SIMD types.

Associated Types

The type of the elements of each lane of this SIMD value.

Type of the result of comparing two SIMD values like self.

Required methods

The number of lanes of this SIMD value.

Initializes an SIMD value with each lanes set to val.

Extracts the i-th lane of self.

Panics if i >= Self::lanes().

Extracts the i-th lane of self without bound-checking.

Replaces the i-th lane of self by val.

Panics if i >= Self::lanes().

Replaces the i-th lane of self by val without bound-checking.

Merges self and other depending on the lanes of cond.

For each lane of cond with bits set to 1, the result’s will contain the value of the lane of self. For each lane of cond with bits set to 0, the result’s will contain the value of the lane of other.

Provided methods

Applies a function to each lane of self.

Note that, while convenient, this method can be extremely slow as this requires to extract each lane of self and then combine them again into a new SIMD value.

Applies a function to each lane of self paired with the corresponding lane of b.

Note that, while convenient, this method can be extremely slow as this requires to extract each lane of self and then combine them again into a new SIMD value.

Implementations on Foreign Types

Implementors