use crate::Simd;
#[duplicate::duplicate_item(
_vec_ _align_;
[Aligned4] [4];
[Aligned8] [8];
[Aligned16] [16];
[Aligned32] [32];
[Aligned64] [64];
)]
#[repr(align(_align_))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, Copy)]
#[doc = concat!("A fixed-length vector of `N` lanes of element type `T` over `[T; N]` with enforced ", stringify!(_align_), "-byte alignment; see the [module](crate::aligned) docs.")]
pub struct _vec_<T, const N: usize>(pub [T; N]);
#[duplicate::duplicate_item(
_vec_;
[Aligned4];
[Aligned8];
[Aligned16];
[Aligned32];
[Aligned64];
)]
impl<T, const N: usize> From<Simd<T, N>> for _vec_<T, N> {
#[inline(always)]
fn from(v: Simd<T, N>) -> Self {
Self(v.0)
}
}
#[duplicate::duplicate_item(
_vec_;
[Aligned4];
[Aligned8];
[Aligned16];
[Aligned32];
[Aligned64];
)]
impl<T, const N: usize> From<_vec_<T, N>> for Simd<T, N> {
#[inline(always)]
fn from(v: _vec_<T, N>) -> Self {
Simd(v.0)
}
}
#[duplicate::duplicate_item(
_vec_;
[Aligned4];
[Aligned8];
[Aligned16];
[Aligned32];
[Aligned64];
)]
impl<T, const N: usize> _vec_<T, N> {
#[inline(always)]
pub fn to_simd(self) -> Simd<T, N> {
Simd(self.0)
}
}