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§
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 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
.
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.