GenericIsa

Struct GenericIsa 

Source
pub struct GenericIsa { /* private fields */ }

Implementations§

Source§

impl GenericIsa

Source

pub fn new() -> Self

Trait Implementations§

Source§

impl Clone for GenericIsa

Source§

fn clone(&self) -> GenericIsa

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Concat<i32> for GenericIsa

Source§

fn concat_low(self, a: I32x4, b: I32x4) -> I32x4

Concatenate elements from the low halves of two vectors.
Source§

fn concat_high(self, a: I32x4, b: I32x4) -> I32x4

Concatenate elements from the high halves of two vectors.
Source§

impl Default for GenericIsa

Source§

fn default() -> Self

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

impl Extend<i16> for GenericIsa

Source§

type Output = I32x4

SIMD vector type with elements that have twice the bit-width of those in Self::SIMD.
Source§

fn extend(self, x: I16x8) -> (I32x4, I32x4)

Extend each lane to a type with twice the width. Read more
Source§

impl Extend<i8> for GenericIsa

Source§

type Output = I16x8

SIMD vector type with elements that have twice the bit-width of those in Self::SIMD.
Source§

fn extend(self, x: I8x16) -> (I16x8, I16x8)

Extend each lane to a type with twice the width. Read more
Source§

impl Extend<u8> for GenericIsa

Source§

type Output = U16x8

SIMD vector type with elements that have twice the bit-width of those in Self::SIMD.
Source§

fn extend(self, x: U8x16) -> (U16x8, U16x8)

Extend each lane to a type with twice the width. Read more
Source§

impl FloatOps<f32> for GenericIsa

Source§

type Int = <GenericIsa as Isa>::I32

Integer SIMD vector of the same bit-width as this vector.
Source§

fn div(self, x: F32x4, y: F32x4) -> F32x4

Compute x / y
Source§

fn round_ties_even(self, x: F32x4) -> F32x4

Round x to the nearest integer value, with ties to even. Read more
Source§

fn neg(self, x: F32x4) -> F32x4

Compute -x
Source§

fn abs(self, x: F32x4) -> F32x4

Compute the absolute value of x
Source§

fn to_int_trunc(self, x: F32x4) -> Self::Int

Convert each lane to an integer of the same width, rounding towards zero.
Source§

fn to_int_round(self, x: F32x4) -> Self::Int

Convert each lane to an integer of the same width, rounding to nearest with ties to even.
Source§

fn reciprocal(self, x: Self::Simd) -> Self::Simd

Compute 1. / x
Source§

fn mul_sub_from(self, a: Self::Simd, b: Self::Simd, c: Self::Simd) -> Self::Simd

Compute c - a * b.
Source§

impl IntOps<i16> for GenericIsa

Source§

fn shift_left<const SHIFT: i32>(self, x: I16x8) -> I16x8

Shift each lane in x left by SHIFT bits.
Source§

fn shift_right<const SHIFT: i32>(self, x: I16x8) -> I16x8

Shift each lane in x right by SHIFT bits. Read more
Source§

impl IntOps<i32> for GenericIsa

Source§

fn shift_left<const SHIFT: i32>(self, x: I32x4) -> I32x4

Shift each lane in x left by SHIFT bits.
Source§

fn shift_right<const SHIFT: i32>(self, x: I32x4) -> I32x4

Shift each lane in x right by SHIFT bits. Read more
Source§

impl IntOps<i8> for GenericIsa

Source§

fn shift_left<const SHIFT: i32>(self, x: I8x16) -> I8x16

Shift each lane in x left by SHIFT bits.
Source§

fn shift_right<const SHIFT: i32>(self, x: I8x16) -> I8x16

Shift each lane in x right by SHIFT bits. Read more
Source§

impl IntOps<u16> for GenericIsa

Source§

fn shift_left<const SHIFT: i32>(self, x: U16x8) -> U16x8

Shift each lane in x left by SHIFT bits.
Source§

fn shift_right<const SHIFT: i32>(self, x: U16x8) -> U16x8

Shift each lane in x right by SHIFT bits. Read more
Source§

impl IntOps<u8> for GenericIsa

Source§

fn shift_left<const SHIFT: i32>(self, x: U8x16) -> U8x16

Shift each lane in x left by SHIFT bits.
Source§

fn shift_right<const SHIFT: i32>(self, x: U8x16) -> U8x16

Shift each lane in x right by SHIFT bits. Read more
Source§

impl Interleave<i16> for GenericIsa

Source§

fn interleave_low(self, a: I16x8, b: I16x8) -> I16x8

Interleave elements from the low halves of two vectors.
Source§

fn interleave_high(self, a: I16x8, b: I16x8) -> I16x8

Interleave elements from the high halves of two vectors.
Source§

impl Interleave<i8> for GenericIsa

Source§

fn interleave_low(self, a: I8x16, b: I8x16) -> I8x16

Interleave elements from the low halves of two vectors.
Source§

fn interleave_high(self, a: I8x16, b: I8x16) -> I8x16

Interleave elements from the high halves of two vectors.
Source§

impl Interleave<u8> for GenericIsa

Source§

fn interleave_low(self, a: U8x16, b: U8x16) -> U8x16

Interleave elements from the low halves of two vectors.
Source§

fn interleave_high(self, a: U8x16, b: U8x16) -> U8x16

Interleave elements from the high halves of two vectors.
Source§

impl Isa for GenericIsa

Source§

type M32 = M32

Mask vector for 32-bit lanes.
Source§

type M16 = M16

Mask vector for 16-bit lanes.
Source§

type M8 = M8

Mask vector for 8-bit lanes.
Source§

type F32 = F32x4

SIMD vector with f32 elements.
Source§

type I32 = I32x4

SIMD vector with i32 elements.
Source§

type I16 = I16x8

SIMD vector with i16 elements.
Source§

type I8 = I8x16

SIMD vector with i8 elements.
Source§

type U8 = U8x16

SIMD vector with u8 elements.
Source§

type U16 = U16x8

SIMD vector with u16 elements.
Source§

type U32 = U32x4

SIMD vector with u32 elements.
Source§

type Bits = I32x4

SIMD vector with an unspecified element type. This is used for bitwise casting between different vector types.
Source§

fn f32(self) -> impl FloatOps<f32, Simd = Self::F32, Int = Self::I32>

Operations on SIMD vectors with f32 elements.
Source§

fn i32( self, ) -> impl SignedIntOps<i32, Simd = Self::I32> + NarrowSaturate<i32, i16, Output = Self::I16> + Concat<i32> + ToFloat<i32, Output = Self::F32>

Operations on SIMD vectors with i32 elements.
Source§

fn i16( self, ) -> impl SignedIntOps<i16, Simd = Self::I16> + NarrowSaturate<i16, u8, Output = Self::U8> + Extend<i16, Output = Self::I32> + Interleave<i16>

Operations on SIMD vectors with i16 elements.
Source§

fn i8( self, ) -> impl SignedIntOps<i8, Simd = Self::I8> + Extend<i8, Output = Self::I16> + Interleave<i8>

Operations on SIMD vectors with i8 elements.
Source§

fn u8( self, ) -> impl IntOps<u8, Simd = Self::U8> + Extend<u8, Output = Self::U16> + Interleave<u8>

Operations on SIMD vectors with u8 elements.
Source§

fn u16(self) -> impl IntOps<u16, Simd = Self::U16>

Operations on SIMD vectors with u16 elements.
Source§

fn m32(self) -> impl MaskOps<Self::M32>

Operations on mask vectors for 32-bit lanes.
Source§

fn m16(self) -> impl MaskOps<Self::M16>

Operations on mask vectors for 16-bit lanes.
Source§

fn m8(self) -> impl MaskOps<Self::M8>

Operations on mask vectors for 8-bit lanes.
Source§

impl NarrowSaturate<i16, u8> for GenericIsa

Source§

type Output = U8x16

Source§

fn narrow_saturate(self, lo: I16x8, hi: I16x8) -> U8x16

Narrow each lane in a pair of vectors to one with half the bit-width. Read more
Source§

impl NarrowSaturate<i32, i16> for GenericIsa

Source§

type Output = I16x8

Source§

fn narrow_saturate(self, lo: I32x4, hi: I32x4) -> I16x8

Narrow each lane in a pair of vectors to one with half the bit-width. Read more
Source§

impl NumOps<f32> for GenericIsa

Source§

type Simd = F32x4

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M32

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <F32x4 as Simd>::Elem, mask: <F32x4 as Simd>::Mask, ) -> F32x4

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: F32x4, ptr: *mut <F32x4 as Simd>::Elem, mask: <F32x4 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: F32x4, y: F32x4) -> F32x4

Compute x + y.
Source§

fn sub(self, x: F32x4, y: F32x4) -> F32x4

Compute x - y.
Source§

fn mul(self, x: F32x4, y: F32x4) -> F32x4

Compute x * y.
Source§

fn mul_add(self, a: F32x4, b: F32x4, c: F32x4) -> F32x4

Compute a * b + c. Read more
Source§

fn eq(self, x: F32x4, y: F32x4) -> M32

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: F32x4, y: F32x4) -> M32

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: F32x4, y: F32x4) -> M32

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: F32x4, y: F32x4) -> F32x4

Return the minimum of x and y for each lane.
Source§

fn max(self, x: F32x4, y: F32x4) -> F32x4

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: f32) -> F32x4

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const f32) -> F32x4

Load vector of elements from ptr. Read more
Source§

fn select(self, x: F32x4, y: F32x4, mask: <F32x4 as Simd>::Mask) -> F32x4

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: F32x4, ptr: *mut f32)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: F32x4, y: F32x4) -> F32x4

Return the bitwise AND of x and y.
Source§

fn not(self, x: F32x4) -> F32x4

Return the bitwise NOT of x.
Source§

fn or(self, x: F32x4, y: F32x4) -> F32x4

Return the bitwise OR of x and y.
Source§

fn xor(self, x: F32x4, y: F32x4) -> F32x4

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl NumOps<i16> for GenericIsa

Source§

type Simd = I16x8

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M16

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <I16x8 as Simd>::Elem, mask: <I16x8 as Simd>::Mask, ) -> I16x8

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: I16x8, ptr: *mut <I16x8 as Simd>::Elem, mask: <I16x8 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: I16x8, y: I16x8) -> I16x8

Compute x + y.
Source§

fn sub(self, x: I16x8, y: I16x8) -> I16x8

Compute x - y.
Source§

fn mul(self, x: I16x8, y: I16x8) -> I16x8

Compute x * y.
Source§

fn mul_add(self, a: I16x8, b: I16x8, c: I16x8) -> I16x8

Compute a * b + c. Read more
Source§

fn eq(self, x: I16x8, y: I16x8) -> M16

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: I16x8, y: I16x8) -> M16

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: I16x8, y: I16x8) -> M16

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: I16x8, y: I16x8) -> I16x8

Return the minimum of x and y for each lane.
Source§

fn max(self, x: I16x8, y: I16x8) -> I16x8

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: i16) -> I16x8

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const i16) -> I16x8

Load vector of elements from ptr. Read more
Source§

fn select(self, x: I16x8, y: I16x8, mask: <I16x8 as Simd>::Mask) -> I16x8

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: I16x8, ptr: *mut i16)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: I16x8, y: I16x8) -> I16x8

Return the bitwise AND of x and y.
Source§

fn or(self, x: I16x8, y: I16x8) -> I16x8

Return the bitwise OR of x and y.
Source§

fn not(self, x: I16x8) -> I16x8

Return the bitwise NOT of x.
Source§

fn xor(self, x: I16x8, y: I16x8) -> I16x8

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl NumOps<i32> for GenericIsa

Source§

type Simd = I32x4

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M32

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <I32x4 as Simd>::Elem, mask: <I32x4 as Simd>::Mask, ) -> I32x4

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: I32x4, ptr: *mut <I32x4 as Simd>::Elem, mask: <I32x4 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: I32x4, y: I32x4) -> I32x4

Compute x + y.
Source§

fn sub(self, x: I32x4, y: I32x4) -> I32x4

Compute x - y.
Source§

fn mul(self, x: I32x4, y: I32x4) -> I32x4

Compute x * y.
Source§

fn mul_add(self, a: I32x4, b: I32x4, c: I32x4) -> I32x4

Compute a * b + c. Read more
Source§

fn eq(self, x: I32x4, y: I32x4) -> M32

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: I32x4, y: I32x4) -> M32

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: I32x4, y: I32x4) -> M32

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: I32x4, y: I32x4) -> I32x4

Return the minimum of x and y for each lane.
Source§

fn max(self, x: I32x4, y: I32x4) -> I32x4

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: i32) -> I32x4

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const i32) -> I32x4

Load vector of elements from ptr. Read more
Source§

fn select(self, x: I32x4, y: I32x4, mask: <I32x4 as Simd>::Mask) -> I32x4

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: I32x4, ptr: *mut i32)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: I32x4, y: I32x4) -> I32x4

Return the bitwise AND of x and y.
Source§

fn or(self, x: I32x4, y: I32x4) -> I32x4

Return the bitwise OR of x and y.
Source§

fn not(self, x: I32x4) -> I32x4

Return the bitwise NOT of x.
Source§

fn xor(self, x: I32x4, y: I32x4) -> I32x4

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl NumOps<i8> for GenericIsa

Source§

type Simd = I8x16

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M8

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <I8x16 as Simd>::Elem, mask: <I8x16 as Simd>::Mask, ) -> I8x16

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: I8x16, ptr: *mut <I8x16 as Simd>::Elem, mask: <I8x16 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: I8x16, y: I8x16) -> I8x16

Compute x + y.
Source§

fn sub(self, x: I8x16, y: I8x16) -> I8x16

Compute x - y.
Source§

fn mul(self, x: I8x16, y: I8x16) -> I8x16

Compute x * y.
Source§

fn mul_add(self, a: I8x16, b: I8x16, c: I8x16) -> I8x16

Compute a * b + c. Read more
Source§

fn eq(self, x: I8x16, y: I8x16) -> M8

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: I8x16, y: I8x16) -> M8

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: I8x16, y: I8x16) -> M8

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: I8x16, y: I8x16) -> I8x16

Return the minimum of x and y for each lane.
Source§

fn max(self, x: I8x16, y: I8x16) -> I8x16

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: i8) -> I8x16

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const i8) -> I8x16

Load vector of elements from ptr. Read more
Source§

fn select(self, x: I8x16, y: I8x16, mask: <I8x16 as Simd>::Mask) -> I8x16

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: I8x16, ptr: *mut i8)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: I8x16, y: I8x16) -> I8x16

Return the bitwise AND of x and y.
Source§

fn or(self, x: I8x16, y: I8x16) -> I8x16

Return the bitwise OR of x and y.
Source§

fn not(self, x: I8x16) -> I8x16

Return the bitwise NOT of x.
Source§

fn xor(self, x: I8x16, y: I8x16) -> I8x16

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl NumOps<u16> for GenericIsa

Source§

type Simd = U16x8

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M16

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <U16x8 as Simd>::Elem, mask: <U16x8 as Simd>::Mask, ) -> U16x8

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: U16x8, ptr: *mut <U16x8 as Simd>::Elem, mask: <U16x8 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: U16x8, y: U16x8) -> U16x8

Compute x + y.
Source§

fn sub(self, x: U16x8, y: U16x8) -> U16x8

Compute x - y.
Source§

fn mul(self, x: U16x8, y: U16x8) -> U16x8

Compute x * y.
Source§

fn mul_add(self, a: U16x8, b: U16x8, c: U16x8) -> U16x8

Compute a * b + c. Read more
Source§

fn eq(self, x: U16x8, y: U16x8) -> M16

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: U16x8, y: U16x8) -> M16

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: U16x8, y: U16x8) -> M16

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: U16x8, y: U16x8) -> U16x8

Return the minimum of x and y for each lane.
Source§

fn max(self, x: U16x8, y: U16x8) -> U16x8

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: u16) -> U16x8

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const u16) -> U16x8

Load vector of elements from ptr. Read more
Source§

fn select(self, x: U16x8, y: U16x8, mask: <U16x8 as Simd>::Mask) -> U16x8

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: U16x8, ptr: *mut u16)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: U16x8, y: U16x8) -> U16x8

Return the bitwise AND of x and y.
Source§

fn or(self, x: U16x8, y: U16x8) -> U16x8

Return the bitwise OR of x and y.
Source§

fn not(self, x: U16x8) -> U16x8

Return the bitwise NOT of x.
Source§

fn xor(self, x: U16x8, y: U16x8) -> U16x8

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl NumOps<u8> for GenericIsa

Source§

type Simd = U8x16

SIMD vector containing lanes of type T.
Source§

fn len(self) -> usize

Return the number of elements in the vector.
Source§

fn first_n_mask(self, n: usize) -> M8

Return a mask with the first n lanes set to true.
Source§

unsafe fn load_ptr_mask( self, ptr: *const <U8x16 as Simd>::Elem, mask: <U8x16 as Simd>::Mask, ) -> U8x16

Load vector elements from ptr using a mask. Read more
Source§

unsafe fn store_ptr_mask( self, x: U8x16, ptr: *mut <U8x16 as Simd>::Elem, mask: <U8x16 as Simd>::Mask, )

Store the values in this vector to a memory location, where the corresponding mask element is set. Read more
Source§

fn add(self, x: U8x16, y: U8x16) -> U8x16

Compute x + y.
Source§

fn sub(self, x: U8x16, y: U8x16) -> U8x16

Compute x - y.
Source§

fn mul(self, x: U8x16, y: U8x16) -> U8x16

Compute x * y.
Source§

fn mul_add(self, a: U8x16, b: U8x16, c: U8x16) -> U8x16

Compute a * b + c. Read more
Source§

fn eq(self, x: U8x16, y: U8x16) -> M8

Return a mask indicating whether elements in x are equal to y.
Source§

fn ge(self, x: U8x16, y: U8x16) -> M8

Return a mask indicating whether elements in x are greater or equal to y.
Source§

fn gt(self, x: U8x16, y: U8x16) -> M8

Return a mask indicating whether elements in x are greater than y.
Source§

fn min(self, x: U8x16, y: U8x16) -> U8x16

Return the minimum of x and y for each lane.
Source§

fn max(self, x: U8x16, y: U8x16) -> U8x16

Return the maximum of x and y for each lane.
Source§

fn splat(self, x: u8) -> U8x16

Create a new vector with all lanes set to x.
Source§

unsafe fn load_ptr(self, ptr: *const u8) -> U8x16

Load vector of elements from ptr. Read more
Source§

fn select(self, x: U8x16, y: U8x16, mask: <U8x16 as Simd>::Mask) -> U8x16

Select elements from x or y according to a mask. Read more
Source§

unsafe fn store_ptr(self, x: U8x16, ptr: *mut u8)

Store the values in this vector to a memory location. Read more
Source§

fn and(self, x: U8x16, y: U8x16) -> U8x16

Return the bitwise AND of x and y.
Source§

fn or(self, x: U8x16, y: U8x16) -> U8x16

Return the bitwise OR of x and y.
Source§

fn not(self, x: U8x16) -> U8x16

Return the bitwise NOT of x.
Source§

fn xor(self, x: U8x16, y: U8x16) -> U8x16

Return the bitwise XOR of x and y.
Source§

fn from_bits(self, x: <<Self::Simd as Simd>::Isa as Isa>::Bits) -> Self::Simd

Convert x to an untyped vector of the same width.
Source§

fn zero(self) -> Self::Simd

Create a new vector with all lanes set to zero.
Source§

fn one(self) -> Self::Simd

Create a new vector with all lanes set to one.
Source§

fn broadcast_lane<const LANE: i32>(self, x: Self::Simd) -> Self::Simd

Broadcast the element from one lane of a vector to all lanes of a new vector.
Source§

fn poly_eval(self, x: Self::Simd, coeffs: &[Self::Simd]) -> Self::Simd

Evaluate a polynomial using Horner’s method. Read more
Source§

fn lt(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less than y.
Source§

fn le(self, x: Self::Simd, y: Self::Simd) -> <Self::Simd as Simd>::Mask

Return a mask indicating whether elements in x are less or equal to y.
Source§

fn clamp(self, x: Self::Simd, min: Self::Simd, max: Self::Simd) -> Self::Simd

Clamp values in x to minimum and maximum values from corresponding lanes in min and max.
Source§

fn fold_splat<F: Fn(T, T) -> T>( self, x: Self::Simd, accum: T, f: F, ) -> Self::Simd

Reduce the elements in x to a single value using f, then return a new vector with the accumulated value broadcast to each lane.
Source§

fn load(self, xs: &[T]) -> Self::Simd

Load the first self.len() elements from a slice into a vector. Read more
Source§

fn load_many<const N: usize>(self, xs: &[T]) -> [Self::Simd; N]

Load N vectors from consecutive sub-slices of xs. Read more
Source§

fn load_pad(self, xs: &[T]) -> (Self::Simd, <Self::Simd as Simd>::Mask)

Load elements from xs into a vector. Read more
Source§

fn store(self, x: Self::Simd, xs: &mut [T])

Store x into the first self.len() elements of xs.
Source§

fn store_uninit(self, x: Self::Simd, xs: &mut [MaybeUninit<T>]) -> &mut [T]

Store x into the first self.len() elements of xs. Read more
Source§

fn prefetch(self, ptr: *const T)

Pre-fetch the cache line containing ptr for reading.
Source§

fn prefetch_write(self, ptr: *mut T)

Pre-fetch the cache line containing ptr for writing.
Source§

fn sum(self, x: Self::Simd) -> T

Horizontally sum the elements in a vector. Read more
Source§

impl SignedIntOps<i16> for GenericIsa

Source§

fn neg(self, x: I16x8) -> I16x8

Return -x.
Source§

fn abs(self, x: Self::Simd) -> Self::Simd

Compute the absolute value of x
Source§

impl SignedIntOps<i32> for GenericIsa

Source§

fn neg(self, x: I32x4) -> I32x4

Return -x.
Source§

fn abs(self, x: Self::Simd) -> Self::Simd

Compute the absolute value of x
Source§

impl SignedIntOps<i8> for GenericIsa

Source§

fn neg(self, x: I8x16) -> I8x16

Return -x.
Source§

fn abs(self, x: Self::Simd) -> Self::Simd

Compute the absolute value of x
Source§

impl ToFloat<i32> for GenericIsa

Source§

type Output = F32x4

Source§

fn to_float(self, x: I32x4) -> Self::Output

Source§

impl Copy for GenericIsa

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.