Simplify transmutes
This commit is contained in:
@@ -1,29 +1,25 @@
|
|||||||
macro_rules! from_aligned {
|
macro_rules! from_transmute {
|
||||||
{ unsafe $from:ty => $to:ty } => {
|
{ 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 {
|
impl core::convert::From<$from> for $to {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn from(value: $from) -> $to {
|
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 { core::mem::transmute(value) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
{ unsafe $a:ty |bidirectional| $b:ty } => {
|
|
||||||
from_aligned!{ unsafe $a => $b }
|
|
||||||
from_aligned!{ unsafe $b => $a }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! from_unaligned {
|
macro_rules! from_transmute_x86 {
|
||||||
{ unsafe $from:ty => $to:ty } => {
|
{ unsafe $generic:ty => $intel:ident } => {
|
||||||
impl core::convert::From<$from> for $to {
|
#[cfg(target_arch = "x86")]
|
||||||
#[inline]
|
from_transmute! { unsafe $generic => core::arch::x86::$intel }
|
||||||
fn from(value: $from) -> $to {
|
|
||||||
assert_eq!(core::mem::size_of::<$from>(), core::mem::size_of::<$to>());
|
#[cfg(target_arch = "x86_64")]
|
||||||
unsafe { (&value as *const $from as *const $to).read_unaligned() }
|
from_transmute! { unsafe $generic => core::arch::x86_64::$intel }
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,11 +57,8 @@ macro_rules! define_type {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// vector to array
|
// vector/array conversion
|
||||||
from_aligned! { unsafe $name => [$type; $lanes] }
|
from_transmute! { unsafe $name => [$type; $lanes] }
|
||||||
|
|
||||||
// array to vector
|
|
||||||
from_unaligned! { unsafe [$type; $lanes] => $name }
|
|
||||||
|
|
||||||
// splat
|
// splat
|
||||||
impl From<$type> for $name {
|
impl From<$type> for $name {
|
||||||
|
|||||||
@@ -18,22 +18,6 @@ define_type! {
|
|||||||
struct f32x16([f32; 16]);
|
struct f32x16([f32; 16]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe f32x4 => __m128 }
|
||||||
from_aligned! { unsafe f32x4 |bidirectional| core::arch::x86::__m128 }
|
from_transmute_x86! { unsafe f32x8 => __m256 }
|
||||||
|
//from_transmute_x86! { unsafe f32x16 => __m512 }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,22 +13,6 @@ define_type! {
|
|||||||
struct f64x8([f64; 8]);
|
struct f64x8([f64; 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe f64x2 => __m128d }
|
||||||
from_aligned! { unsafe f64x2 |bidirectional| core::arch::x86::__m128d }
|
from_transmute_x86! { unsafe f64x4 => __m256d }
|
||||||
|
//from_transmute_x86! { unsafe f64x8 => __m512d }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -8,16 +8,5 @@ define_type! {
|
|||||||
struct i128x4([i128; 4]);
|
struct i128x4([i128; 4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe i128x2 => __m256i }
|
||||||
from_aligned! { unsafe i128x2 |bidirectional| core::arch::x86::__m256i }
|
//from_transmute_x86! { unsafe i128x4 => __m512i }
|
||||||
|
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -23,22 +23,6 @@ define_type! {
|
|||||||
struct i16x32([i16; 32]);
|
struct i16x32([i16; 32]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe i16x8 => __m128i }
|
||||||
from_aligned! { unsafe i16x8 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe i16x16 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe i16x32 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -18,22 +18,6 @@ define_type! {
|
|||||||
struct i32x16([i32; 16]);
|
struct i32x16([i32; 16]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe i32x4 => __m128i }
|
||||||
from_aligned! { unsafe i32x4 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe i32x8 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe i32x16 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,22 +13,6 @@ define_type! {
|
|||||||
struct i64x8([i64; 8]);
|
struct i64x8([i64; 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe i64x2 => __m128i }
|
||||||
from_aligned! { unsafe i64x2 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe i64x4 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe i64x8 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -28,22 +28,6 @@ define_type! {
|
|||||||
struct i8x64([i8; 64]);
|
struct i8x64([i8; 64]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe i8x16 => __m128i }
|
||||||
from_aligned! { unsafe i8x16 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe i8x32 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe i8x64 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,34 +13,14 @@ define_type! {
|
|||||||
struct isizex8([isize; 8]);
|
struct isizex8([isize; 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
|
#[cfg(target_pointer_width = "32")]
|
||||||
from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe isizex4 => __m128i }
|
||||||
|
#[cfg(target_pointer_width = "32")]
|
||||||
|
from_transmute_x86! { unsafe isizex8 => __m256i }
|
||||||
|
|
||||||
#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
|
#[cfg(target_pointer_width = "64")]
|
||||||
from_aligned! { unsafe isizex4 |bidirectional| core::arch::x86_64::__m128i }
|
from_transmute_x86! { unsafe isizex2 => __m128i }
|
||||||
|
#[cfg(target_pointer_width = "64")]
|
||||||
#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
|
from_transmute_x86! { unsafe isizex4 => __m256i }
|
||||||
from_aligned! { unsafe isizex8 |bidirectional| core::arch::x86::__m256i }
|
//#[cfg(target_pointer_width = "64")]
|
||||||
|
//from_transmute_x86! { unsafe isizex8 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -8,16 +8,5 @@ define_type! {
|
|||||||
struct u128x4([u128; 4]);
|
struct u128x4([u128; 4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe u128x2 => __m256i }
|
||||||
from_aligned! { unsafe u128x2 |bidirectional| core::arch::x86::__m256i }
|
//from_transmute_x86! { unsafe u128x4 => __m512i }
|
||||||
|
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -23,22 +23,6 @@ define_type! {
|
|||||||
struct u16x32([u16; 32]);
|
struct u16x32([u16; 32]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe u16x8 => __m128i }
|
||||||
from_aligned! { unsafe u16x8 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe u16x16 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe u16x32 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -18,22 +18,6 @@ define_type! {
|
|||||||
struct u32x16([u32; 16]);
|
struct u32x16([u32; 16]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe u32x4 => __m128i }
|
||||||
from_aligned! { unsafe u32x4 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe u32x8 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe u32x16 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,22 +13,6 @@ define_type! {
|
|||||||
struct u64x8([u64; 8]);
|
struct u64x8([u64; 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe u64x2 => __m128i }
|
||||||
from_aligned! { unsafe u64x2 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe u64x4 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe u64x8 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -28,22 +28,6 @@ define_type! {
|
|||||||
struct u8x64([u8; 64]);
|
struct u8x64([u8; 64]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
from_transmute_x86! { unsafe u8x16 => __m128i }
|
||||||
from_aligned! { unsafe u8x16 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe u8x32 => __m256i }
|
||||||
|
//from_transmute_x86! { unsafe u8x64 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,34 +13,14 @@ define_type! {
|
|||||||
struct usizex8([usize; 8]);
|
struct usizex8([usize; 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
|
#[cfg(target_pointer_width = "32")]
|
||||||
from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86::__m128i }
|
from_transmute_x86! { unsafe usizex4 => __m128i }
|
||||||
|
#[cfg(target_pointer_width = "32")]
|
||||||
|
from_transmute_x86! { unsafe usizex8 => __m256i }
|
||||||
|
|
||||||
#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
|
#[cfg(target_pointer_width = "64")]
|
||||||
from_aligned! { unsafe usizex4 |bidirectional| core::arch::x86_64::__m128i }
|
from_transmute_x86! { unsafe usizex2 => __m128i }
|
||||||
|
#[cfg(target_pointer_width = "64")]
|
||||||
#[cfg(all(target_arch = "x86", target_pointer_width = "32"))]
|
from_transmute_x86! { unsafe usizex4 => __m256i }
|
||||||
from_aligned! { unsafe usizex8 |bidirectional| core::arch::x86::__m256i }
|
//#[cfg(target_pointer_width = "64")]
|
||||||
|
//from_transmute_x86! { unsafe usizex8 => __m512i }
|
||||||
#[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 }
|
|
||||||
*/
|
|
||||||
|
|||||||
Reference in New Issue
Block a user