pub struct SimdCtx<'N, T: ComplexField, S: Simd> {
pub ctx: T::SimdCtx<S>,
pub len: Dim<'N>,
/* private fields */
}Fields§
§ctx: T::SimdCtx<S>§len: Dim<'N>Implementations§
Source§impl<'N, T: ComplexField, S: Simd> SimdCtx<'N, T, S>
impl<'N, T: ComplexField, S: Simd> SimdCtx<'N, T, S>
pub fn new(simd: T::SimdCtx<S>, len: Dim<'N>) -> Self
pub fn new_align(simd: T::SimdCtx<S>, len: Dim<'N>, align_offset: usize) -> Self
pub fn offset(&self) -> usize
pub fn new_force_mask(simd: T::SimdCtx<S>, len: Dim<'N>) -> Self
pub fn read<I: SimdIndex<'N, T, S>>( &self, slice: ColRef<'_, T, Dim<'N>, ContiguousFwd>, index: I, ) -> T::SimdVec<S>
pub fn write<I: SimdIndex<'N, T, S>>( &self, slice: ColMut<'_, T, Dim<'N>, ContiguousFwd>, index: I, value: T::SimdVec<S>, )
pub fn head_mask(&self) -> T::SimdMask<S>
pub fn tail_mask(&self) -> T::SimdMask<S>
pub fn indices( &self, ) -> (Option<SimdHead<'N, T, S>>, impl Clone + ExactSizeIterator + DoubleEndedIterator<Item = SimdBody<'N, T, S>>, Option<SimdTail<'N, T, S>>)
pub fn batch_indices<const BATCH: usize>( &self, ) -> (Option<SimdHead<'N, T, S>>, impl Clone + ExactSizeIterator + DoubleEndedIterator<Item = [SimdBody<'N, T, S>; BATCH]>, impl Clone + ExactSizeIterator + DoubleEndedIterator<Item = SimdBody<'N, T, S>>, Option<SimdTail<'N, T, S>>)
Methods from Deref<Target = SimdCtx<T, S>>§
pub fn zero(&self) -> <T as ComplexField>::SimdVec<S>
pub fn splat(&self, value: &T) -> <T as ComplexField>::SimdVec<S>
pub fn splat_real( &self, value: &<T as ComplexField>::Real, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn sub( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn neg( &self, value: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj( &self, value: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn abs1( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn abs_max( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn mul_real( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul_pow2( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj_mul( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul_add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, acc: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj_mul_add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, acc: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn abs2( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn abs2_add( &self, value: <T as ComplexField>::SimdVec<S>, acc: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn reduce_sum(&self, value: <T as ComplexField>::SimdVec<S>) -> T
pub fn reduce_max(&self, value: RealReg<<T as ComplexField>::SimdVec<S>>) -> T
pub fn reduce_sum_real( &self, value: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <<T as Conjugate>::Canonical as ComplexField>::Real
pub fn reduce_max_real( &self, value: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <<T as Conjugate>::Canonical as ComplexField>::Real
pub fn max( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn eq( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn lt( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn gt( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn le( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn ge( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn select( &self, mask: <T as ComplexField>::SimdMask<S>, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn iselect( &self, mask: <T as ComplexField>::SimdMask<S>, lhs: <T as ComplexField>::SimdIndex<S>, rhs: <T as ComplexField>::SimdIndex<S>, ) -> <T as ComplexField>::SimdIndex<S>
pub fn isplat( &self, value: <T as ComplexField>::Index, ) -> <T as ComplexField>::SimdIndex<S>
pub fn iadd( &self, lhs: <T as ComplexField>::SimdIndex<S>, rhs: <T as ComplexField>::SimdIndex<S>, ) -> <T as ComplexField>::SimdIndex<S>
pub fn or_mask( &self, lhs: <T as ComplexField>::SimdMask<S>, rhs: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn and_mask( &self, lhs: <T as ComplexField>::SimdMask<S>, rhs: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn not_mask( &self, mask: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn first_true_mask(&self, value: <T as ComplexField>::SimdMask<S>) -> usize
pub unsafe fn mask_load( &self, mask: <T as ComplexField>::SimdMemMask<S>, ptr: *const <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub unsafe fn mask_store( &self, mask: <T as ComplexField>::SimdMemMask<S>, ptr: *mut <T as ComplexField>::SimdVec<S>, value: <T as ComplexField>::SimdVec<S>, )
pub fn load( &self, ptr: &<T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn store( &self, ptr: &mut <T as ComplexField>::SimdVec<S>, value: <T as ComplexField>::SimdVec<S>, )
Trait Implementations§
impl<T: ComplexField, S: Simd> Copy for SimdCtx<'_, T, S>
Auto Trait Implementations§
impl<'N, T, S> Freeze for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Freeze,
<T as ComplexField>::SimdMask<S>: Freeze,
<T as ComplexField>::SimdMemMask<S>: Freeze,
impl<'N, T, S> RefUnwindSafe for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: RefUnwindSafe,
<T as ComplexField>::SimdMask<S>: RefUnwindSafe,
<T as ComplexField>::SimdMemMask<S>: RefUnwindSafe,
impl<'N, T, S> Send for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Send,
<T as ComplexField>::SimdMask<S>: Send,
<T as ComplexField>::SimdMemMask<S>: Send,
impl<'N, T, S> Sync for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Sync,
<T as ComplexField>::SimdMask<S>: Sync,
<T as ComplexField>::SimdMemMask<S>: Sync,
impl<'N, T, S> Unpin for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Unpin,
<T as ComplexField>::SimdMask<S>: Unpin,
<T as ComplexField>::SimdMemMask<S>: Unpin,
impl<'N, T, S> UnwindSafe for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: UnwindSafe,
<T as ComplexField>::SimdMask<S>: UnwindSafe,
<T as ComplexField>::SimdMemMask<S>: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more