polars_arrow::types::simd

Trait 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 Constants§

Source

const LANES: usize

Number of lanes

Required Associated Types§

Source

type Native: NativeType

The NativeType of this struct. E.g. f32 for a NativeSimd = f32x16.

Source

type Chunk: BitChunk

The type holding bits for masks.

Source

type Mask: FromMaskChunk<Self::Chunk>

Type used for masking.

Required Methods§

Source

fn select(self, mask: Self::Mask, default: Self) -> Self

Sets values to default based on mask.

Source

fn from_chunk(v: &[Self::Native]) -> Self

Convert itself from a slice.

§Panics
  • iff v.len() != T::LANES
Source

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.

Source

fn align(values: &[Self::Native]) -> (&[Self::Native], &[Self], &[Self::Native])

Returns a tuple of 3 items whose middle item is itself, and the remaining are the head and tail of the un-aligned parts.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl NativeSimd for days_msx8

Source§

impl NativeSimd for f16x32

Source§

impl NativeSimd for f32x16

Source§

impl NativeSimd for f64x8

Source§

impl NativeSimd for i8x64

Source§

impl NativeSimd for i16x32

Source§

impl NativeSimd for i32x16

Source§

impl NativeSimd for i64x8

Source§

impl NativeSimd for i128x8

Source§

impl NativeSimd for i256x8

Source§

impl NativeSimd for months_days_nsx8

Source§

impl NativeSimd for u8x64

Source§

impl NativeSimd for u16x32

Source§

impl NativeSimd for u32x16

Source§

impl NativeSimd for u64x8