-define_type! {
- #[doc = "Vector of two `i64` values"]
- struct i64x2([i64; 2]);
-}
+#![allow(non_camel_case_types)]
-define_type! {
- #[doc = "Vector of four `i64` values"]
- struct i64x4([i64; 4]);
-}
+/// A SIMD vector of containing `LANES` `i64` values.
+#[repr(simd)]
+pub struct SimdI64<const LANES: usize>([i64; LANES])
+where
+ Self: crate::LanesAtMost64;
-define_type! {
- #[doc = "Vector of eight `i64` values"]
- struct i64x8([i64; 8]);
-}
+impl_integer_vector! { SimdI64, i64 }
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86::__m128i }
+/// Vector of two `i64` values
+pub type i64x2 = SimdI64<2>;
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86_64::__m128i }
+/// Vector of four `i64` values
+pub type i64x4 = SimdI64<4>;
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i64x4 |bidirectional| core::arch::x86::__m256i }
+/// Vector of eight `i64` values
+pub type i64x8 = SimdI64<8>;
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i64x4 |bidirectional| core::arch::x86_64::__m256i }
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i64x8 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i64x8 |bidirectional| core::arch::x86_64::__m512i }
-*/
+from_transmute_x86! { unsafe i64x2 => __m128i }
+from_transmute_x86! { unsafe i64x4 => __m256i }
+//from_transmute_x86! { unsafe i64x8 => __m512i }