simdeez 3.0.1

SIMD library to abstract over different instruction sets and widths
Documentation
use core::ops::*;

use crate::ops::*;
use crate::*;

mod simd;
pub use self::simd::*;

define_simd_type!(Scalar, i8, 1, i8);
impl_simd_int_overloads!(I8x1);
impl_i8_simd_type!(Scalar, I8x1, I16x1, u32);

define_simd_type!(Scalar, i16, 1, i16);
impl_simd_int_overloads!(I16x1);
impl_i16_simd_type!(Scalar, I16x1, I32x1);

define_simd_type!(Scalar, i32, 1, i32);
impl_simd_int_overloads!(I32x1);
impl_i32_simd_type!(Scalar, I32x1, F32x1, I64x1);

define_simd_type!(Scalar, i64, 1, i64);
impl_simd_int_overloads!(I64x1);
impl_i64_simd_type!(Scalar, I64x1, F64x1);

define_simd_type!(Scalar, f32, 1, f32);
impl_simd_float_overloads!(F32x1);
impl_f32_simd_type!(Scalar, F32x1, I32x1);

define_simd_type!(Scalar, f64, 1, f64);
impl_simd_float_overloads!(F64x1);
impl_f64_simd_type!(Scalar, F64x1, I64x1);

impl From<i8> for I8x1 {
    fn from(val: i8) -> Self {
        I8x1(val)
    }
}

impl From<i16> for I16x1 {
    fn from(val: i16) -> Self {
        I16x1(val)
    }
}

impl From<i32> for I32x1 {
    fn from(val: i32) -> Self {
        I32x1(val)
    }
}

impl From<i64> for I64x1 {
    fn from(val: i64) -> Self {
        I64x1(val)
    }
}

impl From<f32> for F32x1 {
    fn from(val: f32) -> Self {
        F32x1(val)
    }
}

impl From<f64> for F64x1 {
    fn from(val: f64) -> Self {
        F64x1(val)
    }
}

impl From<I8x1> for i8 {
    fn from(v: I8x1) -> i8 {
        v.0
    }
}

impl From<I16x1> for i16 {
    fn from(v: I16x1) -> i16 {
        v.0
    }
}

impl From<I32x1> for i32 {
    fn from(v: I32x1) -> i32 {
        v.0
    }
}

impl From<I64x1> for i64 {
    fn from(v: I64x1) -> i64 {
        v.0
    }
}

impl From<F32x1> for f32 {
    fn from(v: F32x1) -> f32 {
        v.0
    }
}

impl From<F64x1> for f64 {
    fn from(v: F64x1) -> f64 {
        v.0
    }
}