about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCaleb Zulawski <caleb.zulawski@gmail.com>2020-09-23 10:21:19 -0400
committerCaleb Zulawski <caleb.zulawski@gmail.com>2020-09-23 10:21:19 -0400
commit543bcd37e91afc1271befde3a33d6a73abc204d4 (patch)
tree0c2e41e82e7c6afb0c3c0dc6bf1a2deee684b47d
parentc74eec7e25d0ab505dbb8f31d2e63839e5384c15 (diff)
downloadrust-543bcd37e91afc1271befde3a33d6a73abc204d4.tar.gz
rust-543bcd37e91afc1271befde3a33d6a73abc204d4.zip
Combine vector definition modules by scalar type
-rw-r--r--crates/core_simd/src/lib.rs61
-rw-r--r--crates/core_simd/src/type_f32x16.rs12
-rw-r--r--crates/core_simd/src/type_f32x2.rs4
-rw-r--r--crates/core_simd/src/type_f32x4.rs10
-rw-r--r--crates/core_simd/src/type_f32x8.rs10
-rw-r--r--crates/core_simd/src/type_f64x2.rs10
-rw-r--r--crates/core_simd/src/type_f64x4.rs10
-rw-r--r--crates/core_simd/src/type_f64x8.rs12
-rw-r--r--crates/core_simd/src/type_i128x2.rs10
-rw-r--r--crates/core_simd/src/type_i128x4.rs12
-rw-r--r--crates/core_simd/src/type_i16x16.rs10
-rw-r--r--crates/core_simd/src/type_i16x2.rs4
-rw-r--r--crates/core_simd/src/type_i16x32.rs12
-rw-r--r--crates/core_simd/src/type_i16x4.rs4
-rw-r--r--crates/core_simd/src/type_i16x8.rs10
-rw-r--r--crates/core_simd/src/type_i32x16.rs12
-rw-r--r--crates/core_simd/src/type_i32x2.rs4
-rw-r--r--crates/core_simd/src/type_i32x4.rs10
-rw-r--r--crates/core_simd/src/type_i32x8.rs10
-rw-r--r--crates/core_simd/src/type_i64x2.rs10
-rw-r--r--crates/core_simd/src/type_i64x4.rs10
-rw-r--r--crates/core_simd/src/type_i64x8.rs12
-rw-r--r--crates/core_simd/src/type_i8x16.rs10
-rw-r--r--crates/core_simd/src/type_i8x2.rs4
-rw-r--r--crates/core_simd/src/type_i8x32.rs10
-rw-r--r--crates/core_simd/src/type_i8x4.rs4
-rw-r--r--crates/core_simd/src/type_i8x64.rs12
-rw-r--r--crates/core_simd/src/type_i8x8.rs4
-rw-r--r--crates/core_simd/src/type_isizex2.rs10
-rw-r--r--crates/core_simd/src/type_isizex4.rs16
-rw-r--r--crates/core_simd/src/type_isizex8.rs18
-rw-r--r--crates/core_simd/src/type_u128x2.rs10
-rw-r--r--crates/core_simd/src/type_u128x4.rs12
-rw-r--r--crates/core_simd/src/type_u16x16.rs10
-rw-r--r--crates/core_simd/src/type_u16x2.rs4
-rw-r--r--crates/core_simd/src/type_u16x32.rs12
-rw-r--r--crates/core_simd/src/type_u16x4.rs4
-rw-r--r--crates/core_simd/src/type_u16x8.rs10
-rw-r--r--crates/core_simd/src/type_u32x16.rs12
-rw-r--r--crates/core_simd/src/type_u32x2.rs4
-rw-r--r--crates/core_simd/src/type_u32x4.rs10
-rw-r--r--crates/core_simd/src/type_u32x8.rs10
-rw-r--r--crates/core_simd/src/type_u64x2.rs10
-rw-r--r--crates/core_simd/src/type_u64x4.rs10
-rw-r--r--crates/core_simd/src/type_u64x8.rs12
-rw-r--r--crates/core_simd/src/type_u8x16.rs10
-rw-r--r--crates/core_simd/src/type_u8x2.rs4
-rw-r--r--crates/core_simd/src/type_u8x32.rs10
-rw-r--r--crates/core_simd/src/type_u8x4.rs4
-rw-r--r--crates/core_simd/src/type_u8x64.rs12
-rw-r--r--crates/core_simd/src/type_u8x8.rs4
-rw-r--r--crates/core_simd/src/type_usizex2.rs10
-rw-r--r--crates/core_simd/src/type_usizex4.rs16
-rw-r--r--crates/core_simd/src/type_usizex8.rs18
-rw-r--r--crates/core_simd/src/vectors_f32.rs39
-rw-r--r--crates/core_simd/src/vectors_f64.rs34
-rw-r--r--crates/core_simd/src/vectors_i128.rs23
-rw-r--r--crates/core_simd/src/vectors_i16.rs44
-rw-r--r--crates/core_simd/src/vectors_i32.rs39
-rw-r--r--crates/core_simd/src/vectors_i64.rs34
-rw-r--r--crates/core_simd/src/vectors_i8.rs49
-rw-r--r--crates/core_simd/src/vectors_isize.rs46
-rw-r--r--crates/core_simd/src/vectors_u128.rs23
-rw-r--r--crates/core_simd/src/vectors_u16.rs44
-rw-r--r--crates/core_simd/src/vectors_u32.rs39
-rw-r--r--crates/core_simd/src/vectors_u64.rs34
-rw-r--r--crates/core_simd/src/vectors_u8.rs49
-rw-r--r--crates/core_simd/src/vectors_usize.rs46
68 files changed, 573 insertions, 535 deletions
diff --git a/crates/core_simd/src/lib.rs b/crates/core_simd/src/lib.rs
index b4fc58476f8..a5dae4b0279 100644
--- a/crates/core_simd/src/lib.rs
+++ b/crates/core_simd/src/lib.rs
@@ -1,36 +1,35 @@
+#![no_std]
 #![feature(repr_simd)]
 #![warn(missing_docs)]
+
 #[macro_use]
 mod macros;
 
-macro_rules! import_types {
-    { $($mod:ident,)* } => {
-        $(
-        mod $mod;
-        pub use $mod::*;
-        )*
-    }
-}
-
-import_types! {
-    type_u8x2,   type_u8x4,   type_u8x8,   type_u8x16,   type_u8x32,   type_u8x64,
-    type_i8x2,   type_i8x4,   type_i8x8,   type_i8x16,   type_i8x32,   type_i8x64,
-    type_u16x2,  type_u16x4,  type_u16x8,  type_u16x16,  type_u16x32,
-    type_i16x2,  type_i16x4,  type_i16x8,  type_i16x16,  type_i16x32,
-    type_u32x2,  type_u32x4,  type_u32x8,  type_u32x16,
-    type_i32x2,  type_i32x4,  type_i32x8,  type_i32x16,
-    type_u64x2,  type_u64x4,  type_u64x8,
-    type_i64x2,  type_i64x4,  type_i64x8,
-    type_u128x2, type_u128x4,
-    type_i128x2, type_i128x4,
-}
-
-import_types! {
-    type_usizex2, type_usizex4, type_usizex8,
-    type_isizex2, type_isizex4, type_isizex8,
-}
-
-import_types! {
-    type_f32x2, type_f32x4, type_f32x8, type_f32x16,
-    type_f64x2, type_f64x4, type_f64x8,
-}
+mod vectors_u8;
+pub use vectors_u8::*;
+mod vectors_u16;
+pub use vectors_u16::*;
+mod vectors_u32;
+pub use vectors_u32::*;
+mod vectors_u64;
+pub use vectors_u64::*;
+mod vectors_u128;
+pub use vectors_u128::*;
+mod vectors_usize;
+pub use vectors_usize::*;
+mod vectors_i8;
+pub use vectors_i8::*;
+mod vectors_i16;
+pub use vectors_i16::*;
+mod vectors_i32;
+pub use vectors_i32::*;
+mod vectors_i64;
+pub use vectors_i64::*;
+mod vectors_i128;
+pub use vectors_i128::*;
+mod vectors_isize;
+pub use vectors_isize::*;
+mod vectors_f32;
+pub use vectors_f32::*;
+mod vectors_f64;
+pub use vectors_f64::*;
diff --git a/crates/core_simd/src/type_f32x16.rs b/crates/core_simd/src/type_f32x16.rs
deleted file mode 100644
index 45fb4a3175b..00000000000
--- a/crates/core_simd/src/type_f32x16.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `f32` types"]
-    struct f32x16([f32; 16]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f32x16 |bidirectional| core::arch::x86::__m512 }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f32x16 |bidirectional| core::arch::x86_64::__m512 }
-*/
diff --git a/crates/core_simd/src/type_f32x2.rs b/crates/core_simd/src/type_f32x2.rs
deleted file mode 100644
index 8b60a2ee76f..00000000000
--- a/crates/core_simd/src/type_f32x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `f32` types"]
-    struct f32x2([f32; 2]);
-}
diff --git a/crates/core_simd/src/type_f32x4.rs b/crates/core_simd/src/type_f32x4.rs
deleted file mode 100644
index 452e607732c..00000000000
--- a/crates/core_simd/src/type_f32x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `f32` types"]
-    struct f32x4([f32; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f32x4 |bidirectional| core::arch::x86::__m128 }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f32x4 |bidirectional| core::arch::x86_64::__m128 }
diff --git a/crates/core_simd/src/type_f32x8.rs b/crates/core_simd/src/type_f32x8.rs
deleted file mode 100644
index 790a546e4e7..00000000000
--- a/crates/core_simd/src/type_f32x8.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `f32` types"]
-    struct f32x8([f32; 8]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f32x8 |bidirectional| core::arch::x86::__m256 }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f32x8 |bidirectional| core::arch::x86_64::__m256 }
diff --git a/crates/core_simd/src/type_f64x2.rs b/crates/core_simd/src/type_f64x2.rs
deleted file mode 100644
index 0c349f38c86..00000000000
--- a/crates/core_simd/src/type_f64x2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `f64` types"]
-    struct f64x2([f64; 2]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f64x2 |bidirectional| core::arch::x86::__m128d }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f64x2 |bidirectional| core::arch::x86_64::__m128d }
diff --git a/crates/core_simd/src/type_f64x4.rs b/crates/core_simd/src/type_f64x4.rs
deleted file mode 100644
index ec6b46bc8c8..00000000000
--- a/crates/core_simd/src/type_f64x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `f64` types"]
-    struct f64x4([f64; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f64x4 |bidirectional| core::arch::x86::__m256d }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f64x4 |bidirectional| core::arch::x86_64::__m256d }
diff --git a/crates/core_simd/src/type_f64x8.rs b/crates/core_simd/src/type_f64x8.rs
deleted file mode 100644
index dd65dc6b39a..00000000000
--- a/crates/core_simd/src/type_f64x8.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `f64` types"]
-    struct f64x8([f64; 8]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe f64x8 |bidirectional| core::arch::x86::__m512d }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe f64x8 |bidirectional| core::arch::x86_64::__m512d }
-*/
diff --git a/crates/core_simd/src/type_i128x2.rs b/crates/core_simd/src/type_i128x2.rs
deleted file mode 100644
index 1ac736ddf3a..00000000000
--- a/crates/core_simd/src/type_i128x2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `i128` types"]
-    struct i128x2([i128; 2]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i128x2 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i128x2 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_i128x4.rs b/crates/core_simd/src/type_i128x4.rs
deleted file mode 100644
index 6cef039d947..00000000000
--- a/crates/core_simd/src/type_i128x4.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `i128` types"]
-    struct i128x4([i128; 4]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i128x4 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i128x4 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_i16x16.rs b/crates/core_simd/src/type_i16x16.rs
deleted file mode 100644
index 1721286128f..00000000000
--- a/crates/core_simd/src/type_i16x16.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `i16` types"]
-    struct i16x16([i16; 16]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i16x16 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i16x16 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_i16x2.rs b/crates/core_simd/src/type_i16x2.rs
deleted file mode 100644
index 7ccbbe7f2d0..00000000000
--- a/crates/core_simd/src/type_i16x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `i16` types"]
-    struct i16x2([i16; 2]);
-}
diff --git a/crates/core_simd/src/type_i16x32.rs b/crates/core_simd/src/type_i16x32.rs
deleted file mode 100644
index 349d094a1bc..00000000000
--- a/crates/core_simd/src/type_i16x32.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 32 `i16` types"]
-    struct i16x32([i16; 32]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_i16x4.rs b/crates/core_simd/src/type_i16x4.rs
deleted file mode 100644
index 348bc4c53a9..00000000000
--- a/crates/core_simd/src/type_i16x4.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `i16` types"]
-    struct i16x4([i16; 4]);
-}
diff --git a/crates/core_simd/src/type_i16x8.rs b/crates/core_simd/src/type_i16x8.rs
deleted file mode 100644
index 87ded0f3a49..00000000000
--- a/crates/core_simd/src/type_i16x8.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `i16` types"]
-    struct i16x8([i16; 8]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i16x8 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i16x8 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_i32x16.rs b/crates/core_simd/src/type_i32x16.rs
deleted file mode 100644
index 7c52e9cb9e5..00000000000
--- a/crates/core_simd/src/type_i32x16.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `i32` types"]
-    struct i32x16([i32; 16]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_i32x2.rs b/crates/core_simd/src/type_i32x2.rs
deleted file mode 100644
index e9845ae75c7..00000000000
--- a/crates/core_simd/src/type_i32x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `i32` types"]
-    struct i32x2([i32; 2]);
-}
diff --git a/crates/core_simd/src/type_i32x4.rs b/crates/core_simd/src/type_i32x4.rs
deleted file mode 100644
index 47374f7ce43..00000000000
--- a/crates/core_simd/src/type_i32x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `i32` types"]
-    struct i32x4([i32; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i32x4 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i32x4 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_i32x8.rs b/crates/core_simd/src/type_i32x8.rs
deleted file mode 100644
index 79b4ea180c3..00000000000
--- a/crates/core_simd/src/type_i32x8.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `i32` types"]
-    struct i32x8([i32; 8]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i32x8 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i32x8 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_i64x2.rs b/crates/core_simd/src/type_i64x2.rs
deleted file mode 100644
index 7268ad5dfbe..00000000000
--- a/crates/core_simd/src/type_i64x2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `i64` types"]
-    struct i64x2([i64; 2]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_i64x4.rs b/crates/core_simd/src/type_i64x4.rs
deleted file mode 100644
index 3535783c300..00000000000
--- a/crates/core_simd/src/type_i64x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `i64` types"]
-    struct i64x4([i64; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i64x4 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i64x4 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_i64x8.rs b/crates/core_simd/src/type_i64x8.rs
deleted file mode 100644
index 42d28db8c55..00000000000
--- a/crates/core_simd/src/type_i64x8.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `i64` types"]
-    struct i64x8([i64; 8]);
-}
-
-/*
-#[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 }
-*/
diff --git a/crates/core_simd/src/type_i8x16.rs b/crates/core_simd/src/type_i8x16.rs
deleted file mode 100644
index d7aadd4d7ab..00000000000
--- a/crates/core_simd/src/type_i8x16.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `i8` types"]
-    struct i8x16([i8; 16]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i8x16 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i8x16 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_i8x2.rs b/crates/core_simd/src/type_i8x2.rs
deleted file mode 100644
index aca22993c2e..00000000000
--- a/crates/core_simd/src/type_i8x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `i8` types"]
-    struct i8x2([i8; 2]);
-}
diff --git a/crates/core_simd/src/type_i8x32.rs b/crates/core_simd/src/type_i8x32.rs
deleted file mode 100644
index a323565c85c..00000000000
--- a/crates/core_simd/src/type_i8x32.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 32 `i8` types"]
-    struct i8x32([i8; 32]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe i8x32 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe i8x32 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_i8x4.rs b/crates/core_simd/src/type_i8x4.rs
deleted file mode 100644
index 246703ebc50..00000000000
--- a/crates/core_simd/src/type_i8x4.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `i8` types"]
-    struct i8x4([i8; 4]);
-}
diff --git a/crates/core_simd/src/type_i8x64.rs b/crates/core_simd/src/type_i8x64.rs
deleted file mode 100644
index 26934df2a48..00000000000
--- a/crates/core_simd/src/type_i8x64.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 64 `i8` types"]
-    struct i8x64([i8; 64]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_i8x8.rs b/crates/core_simd/src/type_i8x8.rs
deleted file mode 100644
index bc30e2daf84..00000000000
--- a/crates/core_simd/src/type_i8x8.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `i8` types"]
-    struct i8x8([i8; 8]);
-}
diff --git a/crates/core_simd/src/type_isizex2.rs b/crates/core_simd/src/type_isizex2.rs
deleted file mode 100644
index 464f6495552..00000000000
--- a/crates/core_simd/src/type_isizex2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `isize` types"]
-    struct isizex2([isize; 2]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex2 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex2 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_isizex4.rs b/crates/core_simd/src/type_isizex4.rs
deleted file mode 100644
index 3be457393ec..00000000000
--- a/crates/core_simd/src/type_isizex4.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `isize` types"]
-    struct isizex4([isize; 4]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
-from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86_64::__m128i }
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_isizex8.rs b/crates/core_simd/src/type_isizex8.rs
deleted file mode 100644
index e21c2cf624b..00000000000
--- a/crates/core_simd/src/type_isizex8.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `isize` types"]
-    struct isizex8([isize; 8]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
-from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86_64::__m256i }
-
-/*
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u128x2.rs b/crates/core_simd/src/type_u128x2.rs
deleted file mode 100644
index f448e4f0e62..00000000000
--- a/crates/core_simd/src/type_u128x2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `u128` types"]
-    struct u128x2([u128; 2]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u128x2 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u128x2 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_u128x4.rs b/crates/core_simd/src/type_u128x4.rs
deleted file mode 100644
index 07466c72085..00000000000
--- a/crates/core_simd/src/type_u128x4.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `u128` types"]
-    struct u128x4([u128; 4]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u128x4 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u128x4 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u16x16.rs b/crates/core_simd/src/type_u16x16.rs
deleted file mode 100644
index 5460c3740ad..00000000000
--- a/crates/core_simd/src/type_u16x16.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `u16` types"]
-    struct u16x16([u16; 16]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u16x16 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u16x16 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_u16x2.rs b/crates/core_simd/src/type_u16x2.rs
deleted file mode 100644
index 480be8b6eae..00000000000
--- a/crates/core_simd/src/type_u16x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `u16` types"]
-    struct u16x2([u16; 2]);
-}
diff --git a/crates/core_simd/src/type_u16x32.rs b/crates/core_simd/src/type_u16x32.rs
deleted file mode 100644
index 67d60535f77..00000000000
--- a/crates/core_simd/src/type_u16x32.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 32 `u16` types"]
-    struct u16x32([u16; 32]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u16x32 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u16x32 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u16x4.rs b/crates/core_simd/src/type_u16x4.rs
deleted file mode 100644
index 874891363da..00000000000
--- a/crates/core_simd/src/type_u16x4.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `u16` types"]
-    struct u16x4([u16; 4]);
-}
diff --git a/crates/core_simd/src/type_u16x8.rs b/crates/core_simd/src/type_u16x8.rs
deleted file mode 100644
index 5ba0af151e3..00000000000
--- a/crates/core_simd/src/type_u16x8.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `u16` types"]
-    struct u16x8([u16; 8]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u16x8 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u16x8 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_u32x16.rs b/crates/core_simd/src/type_u32x16.rs
deleted file mode 100644
index 40e557b2d6c..00000000000
--- a/crates/core_simd/src/type_u32x16.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `u32` types"]
-    struct u32x16([u32; 16]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u32x2.rs b/crates/core_simd/src/type_u32x2.rs
deleted file mode 100644
index 001fd31db39..00000000000
--- a/crates/core_simd/src/type_u32x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `u32` types"]
-    struct u32x2([u32; 2]);
-}
diff --git a/crates/core_simd/src/type_u32x4.rs b/crates/core_simd/src/type_u32x4.rs
deleted file mode 100644
index 0582b51ead1..00000000000
--- a/crates/core_simd/src/type_u32x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `u32` types"]
-    struct u32x4([u32; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u32x4 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u32x4 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_u32x8.rs b/crates/core_simd/src/type_u32x8.rs
deleted file mode 100644
index 686833c250c..00000000000
--- a/crates/core_simd/src/type_u32x8.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `u32` types"]
-    struct u32x8([u32; 8]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u32x8 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u32x8 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_u64x2.rs b/crates/core_simd/src/type_u64x2.rs
deleted file mode 100644
index e3ba3dc03b5..00000000000
--- a/crates/core_simd/src/type_u64x2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `u64` types"]
-    struct u64x2([u64; 2]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u64x2 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u64x2 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_u64x4.rs b/crates/core_simd/src/type_u64x4.rs
deleted file mode 100644
index 005f26012ad..00000000000
--- a/crates/core_simd/src/type_u64x4.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `u64` types"]
-    struct u64x4([u64; 4]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u64x4 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u64x4 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_u64x8.rs b/crates/core_simd/src/type_u64x8.rs
deleted file mode 100644
index fbb41f36e5d..00000000000
--- a/crates/core_simd/src/type_u64x8.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `u64` types"]
-    struct u64x8([u64; 8]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u64x8 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u64x8 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u8x16.rs b/crates/core_simd/src/type_u8x16.rs
deleted file mode 100644
index a44b74c122b..00000000000
--- a/crates/core_simd/src/type_u8x16.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 16 `u8` types"]
-    struct u8x16([u8; 16]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u8x16 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u8x16 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_u8x2.rs b/crates/core_simd/src/type_u8x2.rs
deleted file mode 100644
index c6162cc73a2..00000000000
--- a/crates/core_simd/src/type_u8x2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `u8` types"]
-    struct u8x2([u8; 2]);
-}
diff --git a/crates/core_simd/src/type_u8x32.rs b/crates/core_simd/src/type_u8x32.rs
deleted file mode 100644
index 012286846db..00000000000
--- a/crates/core_simd/src/type_u8x32.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of 32 `u8` types"]
-    struct u8x32([u8; 32]);
-}
-
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_u8x4.rs b/crates/core_simd/src/type_u8x4.rs
deleted file mode 100644
index ecdffa11993..00000000000
--- a/crates/core_simd/src/type_u8x4.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `u8` types"]
-    struct u8x4([u8; 4]);
-}
diff --git a/crates/core_simd/src/type_u8x64.rs b/crates/core_simd/src/type_u8x64.rs
deleted file mode 100644
index 6f05f086a64..00000000000
--- a/crates/core_simd/src/type_u8x64.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-define_type! {
-    #[doc = "Vector of 64 `u8` types"]
-    struct u8x64([u8; 64]);
-}
-
-/*
-#[cfg(target_arch = "x86")]
-from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(target_arch = "x86_64")]
-from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/type_u8x8.rs b/crates/core_simd/src/type_u8x8.rs
deleted file mode 100644
index 7810ac743f8..00000000000
--- a/crates/core_simd/src/type_u8x8.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `u8` types"]
-    struct u8x8([u8; 8]);
-}
diff --git a/crates/core_simd/src/type_usizex2.rs b/crates/core_simd/src/type_usizex2.rs
deleted file mode 100644
index 218d5a1056e..00000000000
--- a/crates/core_simd/src/type_usizex2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-define_type! {
-    #[doc = "Vector of two `usize` types"]
-    struct usizex2([usize; 2]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex2 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex2 |bidirectional| core::arch::x86_64::__m128i }
diff --git a/crates/core_simd/src/type_usizex4.rs b/crates/core_simd/src/type_usizex4.rs
deleted file mode 100644
index 60160ecc217..00000000000
--- a/crates/core_simd/src/type_usizex4.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-define_type! {
-    #[doc = "Vector of four `usize` types"]
-    struct usizex4([usize; 4]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
-from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86::__m128i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86_64::__m128i }
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86_64::__m256i }
diff --git a/crates/core_simd/src/type_usizex8.rs b/crates/core_simd/src/type_usizex8.rs
deleted file mode 100644
index 5f5a445f430..00000000000
--- a/crates/core_simd/src/type_usizex8.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-define_type! {
-    #[doc = "Vector of eight `usize` types"]
-    struct usizex8([usize; 8]);
-}
-
-#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
-from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86::__m256i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86_64::__m256i }
-
-/*
-#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86::__m512i }
-
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86_64::__m512i }
-*/
diff --git a/crates/core_simd/src/vectors_f32.rs b/crates/core_simd/src/vectors_f32.rs
new file mode 100644
index 00000000000..fe24ec6b727
--- /dev/null
+++ b/crates/core_simd/src/vectors_f32.rs
@@ -0,0 +1,39 @@
+define_type! {
+    #[doc = "Vector of two `f32` values"]
+    struct f32x2([f32; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `f32` values"]
+    struct f32x4([f32; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `f32` values"]
+    struct f32x8([f32; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `f32` values"]
+    struct f32x16([f32; 16]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f32x4 |bidirectional| core::arch::x86::__m128 }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f32x4 |bidirectional| core::arch::x86_64::__m128 }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f32x8 |bidirectional| core::arch::x86::__m256 }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f32x8 |bidirectional| core::arch::x86_64::__m256 }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f32x16 |bidirectional| core::arch::x86::__m512 }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f32x16 |bidirectional| core::arch::x86_64::__m512 }
+*/
diff --git a/crates/core_simd/src/vectors_f64.rs b/crates/core_simd/src/vectors_f64.rs
new file mode 100644
index 00000000000..8934cec0517
--- /dev/null
+++ b/crates/core_simd/src/vectors_f64.rs
@@ -0,0 +1,34 @@
+define_type! {
+    #[doc = "Vector of two `f64` values"]
+    struct f64x2([f64; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `f64` values"]
+    struct f64x4([f64; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `f64` values"]
+    struct f64x8([f64; 8]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f64x2 |bidirectional| core::arch::x86::__m128d }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f64x2 |bidirectional| core::arch::x86_64::__m128d }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f64x4 |bidirectional| core::arch::x86::__m256d }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f64x4 |bidirectional| core::arch::x86_64::__m256d }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe f64x8 |bidirectional| core::arch::x86::__m512d }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe f64x8 |bidirectional| core::arch::x86_64::__m512d }
+*/
diff --git a/crates/core_simd/src/vectors_i128.rs b/crates/core_simd/src/vectors_i128.rs
new file mode 100644
index 00000000000..1cdd3c91211
--- /dev/null
+++ b/crates/core_simd/src/vectors_i128.rs
@@ -0,0 +1,23 @@
+define_type! {
+    #[doc = "Vector of two `i128` values"]
+    struct i128x2([i128; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `i128` values"]
+    struct i128x4([i128; 4]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i128x2 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i128x2 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i128x4 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i128x4 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_i16.rs b/crates/core_simd/src/vectors_i16.rs
new file mode 100644
index 00000000000..724fe7efd1a
--- /dev/null
+++ b/crates/core_simd/src/vectors_i16.rs
@@ -0,0 +1,44 @@
+define_type! {
+    #[doc = "Vector of two `i16` values"]
+    struct i16x2([i16; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `i16` values"]
+    struct i16x4([i16; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `i16` values"]
+    struct i16x8([i16; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `i16` values"]
+    struct i16x16([i16; 16]);
+}
+
+define_type! {
+    #[doc = "Vector of 32 `i16` values"]
+    struct i16x32([i16; 32]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i16x8 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i16x8 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i16x16 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i16x16 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_i32.rs b/crates/core_simd/src/vectors_i32.rs
new file mode 100644
index 00000000000..c3af621ae8a
--- /dev/null
+++ b/crates/core_simd/src/vectors_i32.rs
@@ -0,0 +1,39 @@
+define_type! {
+    #[doc = "Vector of two `i32` values"]
+    struct i32x2([i32; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `i32` values"]
+    struct i32x4([i32; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `i32` values"]
+    struct i32x8([i32; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `i32` values"]
+    struct i32x16([i32; 16]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i32x4 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i32x4 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i32x8 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i32x8 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_i64.rs b/crates/core_simd/src/vectors_i64.rs
new file mode 100644
index 00000000000..8c6c9d940b1
--- /dev/null
+++ b/crates/core_simd/src/vectors_i64.rs
@@ -0,0 +1,34 @@
+define_type! {
+    #[doc = "Vector of two `i64` values"]
+    struct i64x2([i64; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `i64` values"]
+    struct i64x4([i64; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `i64` values"]
+    struct i64x8([i64; 8]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i64x4 |bidirectional| core::arch::x86::__m256i }
+
+#[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 }
+*/
diff --git a/crates/core_simd/src/vectors_i8.rs b/crates/core_simd/src/vectors_i8.rs
new file mode 100644
index 00000000000..340025972d7
--- /dev/null
+++ b/crates/core_simd/src/vectors_i8.rs
@@ -0,0 +1,49 @@
+define_type! {
+    #[doc = "Vector of two `i8` values"]
+    struct i8x2([i8; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `i8` values"]
+    struct i8x4([i8; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `i8` values"]
+    struct i8x8([i8; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `i8` values"]
+    struct i8x16([i8; 16]);
+}
+
+define_type! {
+    #[doc = "Vector of 32 `i8` values"]
+    struct i8x32([i8; 32]);
+}
+
+define_type! {
+    #[doc = "Vector of 64 `i8` values"]
+    struct i8x64([i8; 64]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i8x16 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i8x16 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe i8x32 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe i8x32 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_isize.rs b/crates/core_simd/src/vectors_isize.rs
new file mode 100644
index 00000000000..60f4aad2066
--- /dev/null
+++ b/crates/core_simd/src/vectors_isize.rs
@@ -0,0 +1,46 @@
+define_type! {
+    #[doc = "Vector of two `isize` values"]
+    struct isizex2([isize; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `isize` values"]
+    struct isizex4([isize; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `isize` values"]
+    struct isizex8([isize; 8]);
+}
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
+from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
+from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
+from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
+from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86_64::__m256i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex2 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex2 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_u128.rs b/crates/core_simd/src/vectors_u128.rs
new file mode 100644
index 00000000000..01a1a309ffa
--- /dev/null
+++ b/crates/core_simd/src/vectors_u128.rs
@@ -0,0 +1,23 @@
+define_type! {
+    #[doc = "Vector of two `u128` values"]
+    struct u128x2([u128; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `u128` values"]
+    struct u128x4([u128; 4]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u128x2 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u128x2 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u128x4 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u128x4 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_u16.rs b/crates/core_simd/src/vectors_u16.rs
new file mode 100644
index 00000000000..00ae479c6db
--- /dev/null
+++ b/crates/core_simd/src/vectors_u16.rs
@@ -0,0 +1,44 @@
+define_type! {
+    #[doc = "Vector of two `u16` values"]
+    struct u16x2([u16; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `u16` values"]
+    struct u16x4([u16; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `u16` values"]
+    struct u16x8([u16; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `u16` values"]
+    struct u16x16([u16; 16]);
+}
+
+define_type! {
+    #[doc = "Vector of 32 `u16` values"]
+    struct u16x32([u16; 32]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u16x8 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u16x8 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u16x16 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u16x16 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u16x32 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u16x32 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_u32.rs b/crates/core_simd/src/vectors_u32.rs
new file mode 100644
index 00000000000..c45db3634c4
--- /dev/null
+++ b/crates/core_simd/src/vectors_u32.rs
@@ -0,0 +1,39 @@
+define_type! {
+    #[doc = "Vector of two `u32` values"]
+    struct u32x2([u32; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `u32` values"]
+    struct u32x4([u32; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `u32` values"]
+    struct u32x8([u32; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `u32` values"]
+    struct u32x16([u32; 16]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u32x4 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u32x4 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u32x8 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u32x8 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u32x16 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_u64.rs b/crates/core_simd/src/vectors_u64.rs
new file mode 100644
index 00000000000..4c8b95177f5
--- /dev/null
+++ b/crates/core_simd/src/vectors_u64.rs
@@ -0,0 +1,34 @@
+define_type! {
+    #[doc = "Vector of two `u64` values"]
+    struct u64x2([u64; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `u64` values"]
+    struct u64x4([u64; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `u64` values"]
+    struct u64x8([u64; 8]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u64x2 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u64x2 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u64x4 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u64x4 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u64x8 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u64x8 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_u8.rs b/crates/core_simd/src/vectors_u8.rs
new file mode 100644
index 00000000000..d3f0893154b
--- /dev/null
+++ b/crates/core_simd/src/vectors_u8.rs
@@ -0,0 +1,49 @@
+define_type! {
+    #[doc = "Vector of two `u8` values"]
+    struct u8x2([u8; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `u8` values"]
+    struct u8x4([u8; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `u8` values"]
+    struct u8x8([u8; 8]);
+}
+
+define_type! {
+    #[doc = "Vector of 16 `u8` values"]
+    struct u8x16([u8; 16]);
+}
+
+define_type! {
+    #[doc = "Vector of 32 `u8` values"]
+    struct u8x32([u8; 32]);
+}
+
+define_type! {
+    #[doc = "Vector of 64 `u8` values"]
+    struct u8x64([u8; 64]);
+}
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u8x16 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u8x16 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u8x32 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(target_arch = "x86")]
+from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(target_arch = "x86_64")]
+from_aligned! { unsafe u8x64 |bidirectional| core::arch::x86_64::__m512i }
+*/
diff --git a/crates/core_simd/src/vectors_usize.rs b/crates/core_simd/src/vectors_usize.rs
new file mode 100644
index 00000000000..c997e7cd4e3
--- /dev/null
+++ b/crates/core_simd/src/vectors_usize.rs
@@ -0,0 +1,46 @@
+define_type! {
+    #[doc = "Vector of two `usize` values"]
+    struct usizex2([usize; 2]);
+}
+
+define_type! {
+    #[doc = "Vector of four `usize` values"]
+    struct usizex4([usize; 4]);
+}
+
+define_type! {
+    #[doc = "Vector of eight `usize` values"]
+    struct usizex8([usize; 8]);
+}
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
+from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
+from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
+from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
+from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86_64::__m256i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex2 |bidirectional| core::arch::x86::__m128i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex2 |bidirectional| core::arch::x86_64::__m128i }
+
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86::__m256i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86_64::__m256i }
+
+/*
+#[cfg(all(target_arch = "x86", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86::__m512i }
+
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
+from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86_64::__m512i }
+*/