Trait simba::simd::SimdValue [−][src]
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.
Required methods
Extracts the i-th lane of self
.
Panics if i >= Self::lanes()
.
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
Extracts the i-th lane of self
without bound-checking.
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)
unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)
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.