#[cfg(feature = "ptr")]
use core::ptr::Thin;
pub trait SimdScalar: Copy + crate::simd::seal::SimdScalar {}
macro_rules! impl_simd_scalar {
{
$($Ty:ty $(= $feature:literal)?),*$(,)?
} => {
$(
$(#[cfg(feature = $feature)])?
impl ::polylane::simd::seal::SimdScalar for $Ty {}
$(#[cfg(feature = $feature)])?
impl ::polylane::simd::SimdScalar for $Ty {}
)*
};
}
impl_simd_scalar! {
u8,
i8,
u16,
i16,
u32,
i32,
u64,
i64,
u128,
i128,
usize,
isize,
f16 = "f16",
f32,
f64,
f128 = "f128",
}
#[cfg(feature = "ptr")]
impl<T: Thin> crate::simd::seal::SimdScalar for *const T {}
#[cfg(feature = "ptr")] impl<T: Thin> SimdScalar for *const T {}
#[cfg(feature = "ptr")]
impl<T: Thin> crate::simd::seal::SimdScalar for *mut T {}
#[cfg(feature = "ptr")] impl<T: Thin> SimdScalar for *mut T {}