diff options
| author | Caleb Zulawski <caleb.zulawski@gmail.com> | 2020-09-23 10:42:12 -0400 |
|---|---|---|
| committer | Caleb Zulawski <caleb.zulawski@gmail.com> | 2020-09-23 10:42:12 -0400 |
| commit | 872e8f62d6e776436cb830f3178beb4a853e7df8 (patch) | |
| tree | 23ea531f7a6f32f695c8abadb16106e35fae283a | |
| parent | 543bcd37e91afc1271befde3a33d6a73abc204d4 (diff) | |
| download | rust-872e8f62d6e776436cb830f3178beb4a853e7df8.tar.gz rust-872e8f62d6e776436cb830f3178beb4a853e7df8.zip | |
Simplify transmutes
| -rw-r--r-- | crates/core_simd/src/macros.rs | 37 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_f32.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_f64.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_i128.rs | 15 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_i16.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_i32.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_i64.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_i8.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_isize.rs | 42 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_u128.rs | 15 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_u16.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_u32.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_u64.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_u8.rs | 22 | ||||
| -rw-r--r-- | crates/core_simd/src/vectors_usize.rs | 42 |
15 files changed, 71 insertions, 300 deletions
diff --git a/crates/core_simd/src/macros.rs b/crates/core_simd/src/macros.rs index 91c1071a2ee..5a50b1a48ec 100644 --- a/crates/core_simd/src/macros.rs +++ b/crates/core_simd/src/macros.rs @@ -1,29 +1,25 @@ -macro_rules! from_aligned { - { unsafe $from:ty => $to:ty } => { +macro_rules! from_transmute { + { unsafe $a:ty => $b:ty } => { + from_transmute!{ @impl $a => $b } + from_transmute!{ @impl $b => $a } + }; + { @impl $from:ty => $to:ty } => { impl core::convert::From<$from> for $to { #[inline] fn from(value: $from) -> $to { - assert_eq!(core::mem::size_of::<$from>(), core::mem::size_of::<$to>()); - assert!(core::mem::align_of::<$from>() >= core::mem::align_of::<$to>()); unsafe { core::mem::transmute(value) } } } }; - { unsafe $a:ty |bidirectional| $b:ty } => { - from_aligned!{ unsafe $a => $b } - from_aligned!{ unsafe $b => $a } - } } -macro_rules! from_unaligned { - { unsafe $from:ty => $to:ty } => { - impl core::convert::From<$from> for $to { - #[inline] - fn from(value: $from) -> $to { - assert_eq!(core::mem::size_of::<$from>(), core::mem::size_of::<$to>()); - unsafe { (&value as *const $from as *const $to).read_unaligned() } - } - } +macro_rules! from_transmute_x86 { + { unsafe $generic:ty => $intel:ident } => { + #[cfg(target_arch = "x86")] + from_transmute! { unsafe $generic => core::arch::x86::$intel } + + #[cfg(target_arch = "x86_64")] + from_transmute! { unsafe $generic => core::arch::x86_64::$intel } } } @@ -61,11 +57,8 @@ macro_rules! define_type { } } - // vector to array - from_aligned! { unsafe $name => [$type; $lanes] } - - // array to vector - from_unaligned! { unsafe [$type; $lanes] => $name } + // vector/array conversion + from_transmute! { unsafe $name => [$type; $lanes] } // splat impl From<$type> for $name { diff --git a/crates/core_simd/src/vectors_f32.rs b/crates/core_simd/src/vectors_f32.rs index fe24ec6b727..3b38b26d631 100644 --- a/crates/core_simd/src/vectors_f32.rs +++ b/crates/core_simd/src/vectors_f32.rs @@ -18,22 +18,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe f32x4 => __m128 } +from_transmute_x86! { unsafe f32x8 => __m256 } +//from_transmute_x86! { unsafe f32x16 => __m512 } diff --git a/crates/core_simd/src/vectors_f64.rs b/crates/core_simd/src/vectors_f64.rs index 8934cec0517..f627fffd46b 100644 --- a/crates/core_simd/src/vectors_f64.rs +++ b/crates/core_simd/src/vectors_f64.rs @@ -13,22 +13,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe f64x2 => __m128d } +from_transmute_x86! { unsafe f64x4 => __m256d } +//from_transmute_x86! { unsafe f64x8 => __m512d } diff --git a/crates/core_simd/src/vectors_i128.rs b/crates/core_simd/src/vectors_i128.rs index 1cdd3c91211..b4f30f845fd 100644 --- a/crates/core_simd/src/vectors_i128.rs +++ b/crates/core_simd/src/vectors_i128.rs @@ -8,16 +8,5 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe i128x2 => __m256i } +//from_transmute_x86! { unsafe i128x4 => __m512i } diff --git a/crates/core_simd/src/vectors_i16.rs b/crates/core_simd/src/vectors_i16.rs index 724fe7efd1a..a87fa8c41cd 100644 --- a/crates/core_simd/src/vectors_i16.rs +++ b/crates/core_simd/src/vectors_i16.rs @@ -23,22 +23,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe i16x8 => __m128i } +from_transmute_x86! { unsafe i16x16 => __m256i } +//from_transmute_x86! { unsafe i16x32 => __m512i } diff --git a/crates/core_simd/src/vectors_i32.rs b/crates/core_simd/src/vectors_i32.rs index c3af621ae8a..13c9299b7c6 100644 --- a/crates/core_simd/src/vectors_i32.rs +++ b/crates/core_simd/src/vectors_i32.rs @@ -18,22 +18,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe i32x4 => __m128i } +from_transmute_x86! { unsafe i32x8 => __m256i } +//from_transmute_x86! { unsafe i32x16 => __m512i } diff --git a/crates/core_simd/src/vectors_i64.rs b/crates/core_simd/src/vectors_i64.rs index 8c6c9d940b1..8d86501a496 100644 --- a/crates/core_simd/src/vectors_i64.rs +++ b/crates/core_simd/src/vectors_i64.rs @@ -13,22 +13,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe i64x2 => __m128i } +from_transmute_x86! { unsafe i64x4 => __m256i } +//from_transmute_x86! { unsafe i64x8 => __m512i } diff --git a/crates/core_simd/src/vectors_i8.rs b/crates/core_simd/src/vectors_i8.rs index 340025972d7..f0d5ad55212 100644 --- a/crates/core_simd/src/vectors_i8.rs +++ b/crates/core_simd/src/vectors_i8.rs @@ -28,22 +28,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe i8x16 => __m128i } +from_transmute_x86! { unsafe i8x32 => __m256i } +//from_transmute_x86! { unsafe i8x64 => __m512i } diff --git a/crates/core_simd/src/vectors_isize.rs b/crates/core_simd/src/vectors_isize.rs index 60f4aad2066..2028d1ecc71 100644 --- a/crates/core_simd/src/vectors_isize.rs +++ b/crates/core_simd/src/vectors_isize.rs @@ -13,34 +13,14 @@ define_type! { 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 } -*/ +#[cfg(target_pointer_width = "32")] +from_transmute_x86! { unsafe isizex4 => __m128i } +#[cfg(target_pointer_width = "32")] +from_transmute_x86! { unsafe isizex8 => __m256i } + +#[cfg(target_pointer_width = "64")] +from_transmute_x86! { unsafe isizex2 => __m128i } +#[cfg(target_pointer_width = "64")] +from_transmute_x86! { unsafe isizex4 => __m256i } +//#[cfg(target_pointer_width = "64")] +//from_transmute_x86! { unsafe isizex8 => __m512i } diff --git a/crates/core_simd/src/vectors_u128.rs b/crates/core_simd/src/vectors_u128.rs index 01a1a309ffa..4b47fb2fa2e 100644 --- a/crates/core_simd/src/vectors_u128.rs +++ b/crates/core_simd/src/vectors_u128.rs @@ -8,16 +8,5 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe u128x2 => __m256i } +//from_transmute_x86! { unsafe u128x4 => __m512i } diff --git a/crates/core_simd/src/vectors_u16.rs b/crates/core_simd/src/vectors_u16.rs index 00ae479c6db..f637d2fe9f2 100644 --- a/crates/core_simd/src/vectors_u16.rs +++ b/crates/core_simd/src/vectors_u16.rs @@ -23,22 +23,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe u16x8 => __m128i } +from_transmute_x86! { unsafe u16x16 => __m256i } +//from_transmute_x86! { unsafe u16x32 => __m512i } diff --git a/crates/core_simd/src/vectors_u32.rs b/crates/core_simd/src/vectors_u32.rs index c45db3634c4..d2f5d7d241c 100644 --- a/crates/core_simd/src/vectors_u32.rs +++ b/crates/core_simd/src/vectors_u32.rs @@ -18,22 +18,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe u32x4 => __m128i } +from_transmute_x86! { unsafe u32x8 => __m256i } +//from_transmute_x86! { unsafe u32x16 => __m512i } diff --git a/crates/core_simd/src/vectors_u64.rs b/crates/core_simd/src/vectors_u64.rs index 4c8b95177f5..e6e21e62da1 100644 --- a/crates/core_simd/src/vectors_u64.rs +++ b/crates/core_simd/src/vectors_u64.rs @@ -13,22 +13,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe u64x2 => __m128i } +from_transmute_x86! { unsafe u64x4 => __m256i } +//from_transmute_x86! { unsafe u64x8 => __m512i } diff --git a/crates/core_simd/src/vectors_u8.rs b/crates/core_simd/src/vectors_u8.rs index d3f0893154b..f6246f87ece 100644 --- a/crates/core_simd/src/vectors_u8.rs +++ b/crates/core_simd/src/vectors_u8.rs @@ -28,22 +28,6 @@ define_type! { 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 } -*/ +from_transmute_x86! { unsafe u8x16 => __m128i } +from_transmute_x86! { unsafe u8x32 => __m256i } +//from_transmute_x86! { unsafe u8x64 => __m512i } diff --git a/crates/core_simd/src/vectors_usize.rs b/crates/core_simd/src/vectors_usize.rs index c997e7cd4e3..45da00562f6 100644 --- a/crates/core_simd/src/vectors_usize.rs +++ b/crates/core_simd/src/vectors_usize.rs @@ -13,34 +13,14 @@ define_type! { 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 } -*/ +#[cfg(target_pointer_width = "32")] +from_transmute_x86! { unsafe usizex4 => __m128i } +#[cfg(target_pointer_width = "32")] +from_transmute_x86! { unsafe usizex8 => __m256i } + +#[cfg(target_pointer_width = "64")] +from_transmute_x86! { unsafe usizex2 => __m128i } +#[cfg(target_pointer_width = "64")] +from_transmute_x86! { unsafe usizex4 => __m256i } +//#[cfg(target_pointer_width = "64")] +//from_transmute_x86! { unsafe usizex8 => __m512i } |
