use crate::{f16::F16, traits::Context}; use core::marker::PhantomData; use core_simd::SimdF32; #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)] pub struct StdSimd(PhantomData<[(); LANES]>); #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Default)] pub struct Scalar(pub T, PhantomData<[(); LANES]>); impl From for Scalar { fn from(v: T) -> Self { Scalar(v, PhantomData) } } /* TODO(programmerjake): finish after splitting Context::VecBool impl Context for StdSimd { type Bool = Scalar; type U8 = Scalar; type I8 = Scalar; type U16 = Scalar; type I16 = Scalar; type F16 = Scalar; type U32 = Scalar; type I32 = Scalar; type F32 = Scalar; type U64 = Scalar; type I64 = Scalar; type F64 = Scalar; type VecBool; type VecU8; type VecI8; type VecU16; type VecI16; type VecF16; type VecU32; type VecI32; type VecF32; type VecU64; type VecI64; type VecF64; } */