[−][src]Trait simba::simd::SimdValue
Base trait for every SIMD types.
Associated Types
type Element: SimdValue<Element = Self::Element, SimdBool = bool>
The type of the elements of each lane of this SIMD value.
type SimdBool: SimdBool
Type of the result of comparing two SIMD values like self
.
Required methods
fn lanes() -> usize
The number of lanes of this SIMD value.
fn splat(val: Self::Element) -> Self
Initializes an SIMD value with each lanes set to val
.
fn extract(&self, i: usize) -> Self::Element
Extracts the i-th lane of self
.
Panics if i >= Self::lanes()
.
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
Extracts the i-th lane of self
without bound-checking.
fn replace(&mut self, i: usize, val: Self::Element)
Replaces the i-th lane of self
by val
.
Panics if i >= Self::lanes()
.
unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)
Replaces the i-th lane of self
by val
without bound-checking.
fn select(self, cond: Self::SimdBool, other: Self) -> Self
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
fn map_lanes(self, f: impl Fn(Self::Element) -> Self::Element) -> Self where
Self: Clone,
Self: Clone,
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.
fn zip_map_lanes(
self,
b: Self,
f: impl Fn(Self::Element, Self::Element) -> Self::Element
) -> Self where
Self: Clone,
self,
b: Self,
f: impl Fn(Self::Element, Self::Element) -> Self::Element
) -> Self where
Self: Clone,
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.