Skip to main content

SimdNumElement

Trait SimdNumElement 

Source
pub unsafe trait SimdNumElement: SimdElement + Num {
    // Required methods
    unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector;

    // Provided methods
    unsafe fn fma(
        a: Self::Vector,
        b: Self::Vector,
        c: Self::Vector,
    ) -> Self::Vector { ... }
    unsafe fn powi(x: Self::Vector, n: i32) -> Self::Vector { ... }
}
Expand description

A trait for type that may be used as numeric SIMD vector elements.

Required Methods§

Source

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Adds left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Substructs left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Multiples left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Divides left by right, then return the result.

§Safety

Make sure Self::is_available() returns true.

Provided Methods§

Source

unsafe fn fma(a: Self::Vector, b: Self::Vector, c: Self::Vector) -> Self::Vector

Calculates a * b + c. You should overload this when the architecture has dedicated operator.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn powi(x: Self::Vector, n: i32) -> Self::Vector

Raises a number to an integer power.

§Safety

Make sure Self::is_available() returns true.

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.

Implementations on Foreign Types§

Source§

impl SimdNumElement for f32

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn fma(a: Self::Vector, b: Self::Vector, c: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for f64

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn fma(a: Self::Vector, b: Self::Vector, c: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for i8

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for i16

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for i32

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for i64

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for u8

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for u16

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for u32

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

impl SimdNumElement for u64

Source§

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Source§

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Implementors§