use super::*;
#[repr(transparent)]
#[allow(non_camel_case_types)]
pub struct m256d(pub __m256d);
#[cfg(feature = "bytemuck")]
unsafe impl bytemuck::Zeroable for m256d {}
#[cfg(feature = "bytemuck")]
unsafe impl bytemuck::Pod for m256d {}
#[cfg(feature = "bytemuck")]
unsafe impl bytemuck::TransparentWrapper<__m256d> for m256d {}
impl m256d {
#[must_use]
#[inline(always)]
pub fn to_array(self) -> [f64; 4] {
self.into()
}
#[must_use]
#[inline(always)]
pub fn from_array(f: [f64; 4]) -> Self {
f.into()
}
#[must_use]
#[inline(always)]
pub fn to_bits(self) -> [u64; 4] {
unsafe { core::mem::transmute(self) }
}
#[must_use]
#[inline(always)]
pub fn from_bits(bits: [u64; 4]) -> Self {
unsafe { core::mem::transmute(bits) }
}
}
impl Clone for m256d {
#[must_use]
#[inline(always)]
fn clone(&self) -> Self {
*self
}
}
impl Copy for m256d {}
impl Default for m256d {
#[must_use]
#[inline(always)]
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
impl From<[f64; 4]> for m256d {
#[must_use]
#[inline(always)]
fn from(arr: [f64; 4]) -> Self {
unsafe { core::mem::transmute(arr) }
}
}
impl From<m256d> for [f64; 4] {
#[must_use]
#[inline(always)]
fn from(m: m256d) -> Self {
unsafe { core::mem::transmute(m) }
}
}
impl Debug for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "m256d(")?;
Debug::fmt(&a[0], f)?;
write!(f, ", ")?;
Debug::fmt(&a[1], f)?;
write!(f, ")")
}
}
impl Display for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
Display::fmt(&a[0], f)?;
write!(f, ", ")?;
Display::fmt(&a[1], f)?;
write!(f, ")")
}
}
impl Binary for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
Binary::fmt(&a[0].to_bits(), f)?;
write!(f, ", ")?;
Binary::fmt(&a[1].to_bits(), f)?;
write!(f, ")")
}
}
impl LowerExp for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
LowerExp::fmt(&a[0], f)?;
write!(f, ", ")?;
LowerExp::fmt(&a[1], f)?;
write!(f, ")")
}
}
impl UpperExp for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
UpperExp::fmt(&a[0], f)?;
write!(f, ", ")?;
UpperExp::fmt(&a[1], f)?;
write!(f, ")")
}
}
impl LowerHex for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
LowerHex::fmt(&a[0].to_bits(), f)?;
write!(f, ", ")?;
LowerHex::fmt(&a[1].to_bits(), f)?;
write!(f, ")")
}
}
impl UpperHex for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
UpperHex::fmt(&a[0].to_bits(), f)?;
write!(f, ", ")?;
UpperHex::fmt(&a[1].to_bits(), f)?;
write!(f, ")")
}
}
impl Octal for m256d {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let a = self.to_array();
write!(f, "(")?;
Debug::fmt(&a[0].to_bits(), f)?;
write!(f, ", ")?;
Debug::fmt(&a[1].to_bits(), f)?;
write!(f, ")")
}
}