/// Provides implementations of `From<$a> for $b` and `From<$b> for $a` that transmutes the value. #[allow(unused)] 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 { // Safety: transmuting between vectors is safe, but the caller of this macro // checks the invariants unsafe { core::mem::transmute(value) } } } }; } /// Conversions to x86's SIMD types. #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] mod x86; #[cfg(any(target_arch = "wasm32"))] mod wasm32; #[cfg(any(target_arch = "aarch64", target_arch = "arm",))] mod arm; #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] mod powerpc;