Trait npsimd::intel::Element

source ·
pub unsafe trait Element<const LEN: usize>: Copy + Freeze
where [Self; LEN]: Array<Primitive = Self::Primitive>,
{ type Primitive: PrimitiveVector; }
Available on x86 or x86-64 only.
Expand description

A SIMD-compatible element.

§Safety

A type T can soundly implement Element if and only if all of the following conditions hold:

  • T contains no niches (any bit-pattern forms a valid instance of T).
  • [T; LEN] has the same size as Primitive.
  • The alignment of T is less than or equal to that of Primitive.
  • [T; LEN] can be soundly transmuted to and from Primitive.
  • T does not contain interior mutability.

Required Associated Types§

source

type Primitive: PrimitiveVector

The matching primitive vector type.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Element<1> for f32

source§

impl Element<1> for f64

source§

impl Element<1> for i8

source§

impl Element<1> for i16

source§

impl Element<1> for i32

source§

impl Element<1> for i64

source§

impl Element<1> for u8

source§

impl Element<1> for u16

source§

impl Element<1> for u32

source§

impl Element<1> for u64

source§

impl Element<2> for f32

source§

impl Element<2> for f64

source§

impl Element<2> for i8

source§

impl Element<2> for i16

source§

impl Element<2> for i32

source§

impl Element<2> for i64

source§

impl Element<2> for u8

source§

impl Element<2> for u16

source§

impl Element<2> for u32

source§

impl Element<2> for u64

source§

impl Element<4> for f32

source§

impl Element<4> for f64

source§

impl Element<4> for i8

source§

impl Element<4> for i16

source§

impl Element<4> for i32

source§

impl Element<4> for i64

source§

impl Element<4> for u8

source§

impl Element<4> for u16

source§

impl Element<4> for u32

source§

impl Element<4> for u64

source§

impl Element<8> for f32

source§

impl Element<8> for f64

source§

impl Element<8> for i8

source§

impl Element<8> for i16

source§

impl Element<8> for i32

source§

impl Element<8> for i64

source§

impl Element<8> for u8

source§

impl Element<8> for u16

source§

impl Element<8> for u32

source§

impl Element<8> for u64

source§

impl Element<16> for f32

source§

impl Element<16> for f64

source§

impl Element<16> for i8

source§

impl Element<16> for i16

source§

impl Element<16> for i32

source§

impl Element<16> for i64

source§

impl Element<16> for u8

source§

impl Element<16> for u16

source§

impl Element<16> for u32

source§

impl Element<16> for u64

source§

impl Element<32> for f32

source§

impl Element<32> for i8

source§

impl Element<32> for i16

source§

impl Element<32> for i32

source§

impl Element<32> for u8

source§

impl Element<32> for u16

source§

impl Element<32> for u32

source§

impl Element<64> for i8

source§

impl Element<64> for i16

source§

impl Element<64> for u8

source§

impl Element<64> for u16

source§

impl Element<128> for i8

source§

impl Element<128> for u8

Implementors§

source§

impl<const LEN: usize> Element<LEN> for Mask8
where i8: Element<LEN>,

source§

impl<const LEN: usize> Element<LEN> for Mask16
where i16: Element<LEN>,

source§

impl<const LEN: usize> Element<LEN> for Mask32
where i32: Element<LEN>,

source§

impl<const LEN: usize> Element<LEN> for Mask64
where i64: Element<LEN>,