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