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