]> git.lizzy.rs Git - rust.git/blobdiff - crates/core_simd/src/vectors_i64.rs
Add missing type bounds
[rust.git] / crates / core_simd / src / vectors_i64.rs
index 8c6c9d940b155b351561acc42e5e4c2f286b8d86..017140654a515375f5988f35fbe4bc25e778d715 100644 (file)
@@ -1,34 +1,22 @@
-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 }