safe_arch/x86_x64/
m256d_.rs1use super::*;
8
9#[repr(transparent)]
15#[allow(non_camel_case_types)]
16pub struct m256d(pub __m256d);
17
18#[cfg(feature = "bytemuck")]
19unsafe impl bytemuck::Zeroable for m256d {}
20#[cfg(feature = "bytemuck")]
21unsafe impl bytemuck::Pod for m256d {}
22#[cfg(feature = "bytemuck")]
23unsafe impl bytemuck::TransparentWrapper<__m256d> for m256d {}
24
25impl m256d {
26 #[must_use]
30 #[inline(always)]
31 pub fn to_array(self) -> [f64; 4] {
32 self.into()
33 }
34
35 #[must_use]
40 #[inline(always)]
41 pub fn from_array(f: [f64; 4]) -> Self {
42 f.into()
43 }
44
45 #[must_use]
51 #[inline(always)]
52 pub fn to_bits(self) -> [u64; 4] {
53 unsafe { core::mem::transmute(self) }
54 }
55
56 #[must_use]
60 #[inline(always)]
61 pub fn from_bits(bits: [u64; 4]) -> Self {
62 unsafe { core::mem::transmute(bits) }
63 }
64}
65
66impl Clone for m256d {
67 #[inline(always)]
68 fn clone(&self) -> Self {
69 *self
70 }
71}
72impl Copy for m256d {}
73
74impl Default for m256d {
75 #[inline(always)]
76 fn default() -> Self {
77 unsafe { core::mem::zeroed() }
78 }
79}
80
81impl From<[f64; 4]> for m256d {
82 #[inline(always)]
83 fn from(arr: [f64; 4]) -> Self {
84 unsafe { core::mem::transmute(arr) }
88 }
89}
90
91impl From<m256d> for [f64; 4] {
92 #[inline(always)]
93 fn from(m: m256d) -> Self {
94 unsafe { core::mem::transmute(m) }
96 }
97}
98
99impl Debug for m256d {
104 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
111 let a = self.to_array();
112 write!(f, "m256d(")?;
113 Debug::fmt(&a[0], f)?;
114 write!(f, ", ")?;
115 Debug::fmt(&a[1], f)?;
116 write!(f, ")")
117 }
118}
119
120impl Display for m256d {
121 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
128 let a = self.to_array();
129 write!(f, "(")?;
130 Display::fmt(&a[0], f)?;
131 write!(f, ", ")?;
132 Display::fmt(&a[1], f)?;
133 write!(f, ")")
134 }
135}
136
137impl Binary for m256d {
138 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
145 let a = self.to_array();
146 write!(f, "(")?;
147 Binary::fmt(&a[0].to_bits(), f)?;
148 write!(f, ", ")?;
149 Binary::fmt(&a[1].to_bits(), f)?;
150 write!(f, ")")
151 }
152}
153
154impl LowerExp for m256d {
155 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
162 let a = self.to_array();
163 write!(f, "(")?;
164 LowerExp::fmt(&a[0], f)?;
165 write!(f, ", ")?;
166 LowerExp::fmt(&a[1], f)?;
167 write!(f, ")")
168 }
169}
170
171impl UpperExp for m256d {
172 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
179 let a = self.to_array();
180 write!(f, "(")?;
181 UpperExp::fmt(&a[0], f)?;
182 write!(f, ", ")?;
183 UpperExp::fmt(&a[1], f)?;
184 write!(f, ")")
185 }
186}
187
188impl LowerHex for m256d {
189 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
196 let a = self.to_array();
197 write!(f, "(")?;
198 LowerHex::fmt(&a[0].to_bits(), f)?;
199 write!(f, ", ")?;
200 LowerHex::fmt(&a[1].to_bits(), f)?;
201 write!(f, ")")
202 }
203}
204
205impl UpperHex for m256d {
206 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
213 let a = self.to_array();
214 write!(f, "(")?;
215 UpperHex::fmt(&a[0].to_bits(), f)?;
216 write!(f, ", ")?;
217 UpperHex::fmt(&a[1].to_bits(), f)?;
218 write!(f, ")")
219 }
220}
221
222impl Octal for m256d {
223 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
230 let a = self.to_array();
231 write!(f, "(")?;
232 Debug::fmt(&a[0].to_bits(), f)?;
233 write!(f, ", ")?;
234 Debug::fmt(&a[1].to_bits(), f)?;
235 write!(f, ")")
236 }
237}