Trait polars_arrow::types::simd::NativeSimd
source · pub unsafe trait NativeSimd: Sized + Default + Copy {
type Native: NativeType;
type Chunk: BitChunk;
type Mask: FromMaskChunk<Self::Chunk>;
const LANES: usize;
// Required methods
fn select(self, mask: Self::Mask, default: Self) -> Self;
fn from_chunk(v: &[Self::Native]) -> Self;
fn from_incomplete_chunk(
v: &[Self::Native],
remaining: Self::Native,
) -> Self;
fn align(
values: &[Self::Native],
) -> (&[Self::Native], &[Self], &[Self::Native]);
}
Expand description
A struct that lends itself well to be compiled leveraging SIMD
§Safety
The NativeType
and the NativeSimd
must have possible a matching alignment.
e.g. slicing &[NativeType]
by align_of<NativeSimd>()
must be properly aligned/safe.
Required Associated Types§
sourcetype Native: NativeType
type Native: NativeType
The NativeType
of this struct. E.g. f32
for a NativeSimd = f32x16
.
sourcetype Mask: FromMaskChunk<Self::Chunk>
type Mask: FromMaskChunk<Self::Chunk>
Type used for masking.
Required Associated Constants§
Required Methods§
sourcefn from_chunk(v: &[Self::Native]) -> Self
fn from_chunk(v: &[Self::Native]) -> Self
sourcefn from_incomplete_chunk(v: &[Self::Native], remaining: Self::Native) -> Self
fn from_incomplete_chunk(v: &[Self::Native], remaining: Self::Native) -> Self
creates a new Self from v
by populating items from v
up to its length.
Items from v
at positions larger than the number of lanes are ignored;
remaining items are populated with remaining
.
Object Safety§
This trait is not object safe.