safe_arch/x86_x64/
m512i_.rs1use super::*;
8
9#[repr(transparent)]
18#[allow(non_camel_case_types)]
19pub struct m512i(pub __m512i);
20
21#[cfg(feature = "bytemuck")]
22unsafe impl bytemuck::Zeroable for m512i {}
23#[cfg(feature = "bytemuck")]
24unsafe impl bytemuck::Pod for m512i {}
25#[cfg(feature = "bytemuck")]
26unsafe impl bytemuck::TransparentWrapper<__m512i> for m512i {}
27
28impl m512i {
29 #[must_use]
33 #[inline(always)]
34 pub fn to_array(self) -> [i32; 16] {
35 self.into()
36 }
37
38 #[must_use]
43 #[inline(always)]
44 pub fn from_array(f: [i32; 16]) -> Self {
45 f.into()
46 }
47
48 #[must_use]
54 #[inline(always)]
55 pub fn to_bits(self) -> [i32; 16] {
56 unsafe { core::mem::transmute(self) }
57 }
58
59 #[must_use]
63 #[inline(always)]
64 pub fn from_bits(bits: [i32; 16]) -> Self {
65 unsafe { core::mem::transmute(bits) }
66 }
67}
68
69impl Clone for m512i {
70 #[inline(always)]
71 fn clone(&self) -> Self {
72 *self
73 }
74}
75impl Copy for m512i {}
76
77impl Default for m512i {
78 #[inline(always)]
79 fn default() -> Self {
80 unsafe { core::mem::zeroed() }
81 }
82}
83
84impl From<[i8; 64]> for m512i {
87 #[inline(always)]
88 fn from(arr: [i8; 64]) -> Self {
89 unsafe { core::mem::transmute(arr) }
90 }
91}
92
93impl From<m512i> for [i8; 64] {
94 #[inline(always)]
95 fn from(m: m512i) -> Self {
96 unsafe { core::mem::transmute(m) }
97 }
98}
99
100impl From<[u8; 64]> for m512i {
101 #[inline(always)]
102 fn from(arr: [u8; 64]) -> Self {
103 unsafe { core::mem::transmute(arr) }
104 }
105}
106
107impl From<m512i> for [u8; 64] {
108 #[inline(always)]
109 fn from(m: m512i) -> Self {
110 unsafe { core::mem::transmute(m) }
111 }
112}
113
114impl From<[i16; 32]> for m512i {
117 #[inline(always)]
118 fn from(arr: [i16; 32]) -> Self {
119 unsafe { core::mem::transmute(arr) }
120 }
121}
122
123impl From<m512i> for [i16; 32] {
124 #[inline(always)]
125 fn from(m: m512i) -> Self {
126 unsafe { core::mem::transmute(m) }
127 }
128}
129
130impl From<[u16; 32]> for m512i {
131 #[inline(always)]
132 fn from(arr: [u16; 32]) -> Self {
133 unsafe { core::mem::transmute(arr) }
134 }
135}
136
137impl From<m512i> for [u16; 32] {
138 #[inline(always)]
139 fn from(m: m512i) -> Self {
140 unsafe { core::mem::transmute(m) }
141 }
142}
143
144impl From<[i32; 16]> for m512i {
147 #[inline(always)]
148 fn from(arr: [i32; 16]) -> Self {
149 unsafe { core::mem::transmute(arr) }
150 }
151}
152
153impl From<m512i> for [i32; 16] {
154 #[inline(always)]
155 fn from(m: m512i) -> Self {
156 unsafe { core::mem::transmute(m) }
157 }
158}
159
160impl From<[u32; 16]> for m512i {
161 #[inline(always)]
162 fn from(arr: [u32; 16]) -> Self {
163 unsafe { core::mem::transmute(arr) }
164 }
165}
166
167impl From<m512i> for [u32; 16] {
168 #[inline(always)]
169 fn from(m: m512i) -> Self {
170 unsafe { core::mem::transmute(m) }
171 }
172}
173
174impl From<[i64; 8]> for m512i {
177 #[inline(always)]
178 fn from(arr: [i64; 8]) -> Self {
179 unsafe { core::mem::transmute(arr) }
180 }
181}
182
183impl From<m512i> for [i64; 8] {
184 #[inline(always)]
185 fn from(m: m512i) -> Self {
186 unsafe { core::mem::transmute(m) }
187 }
188}
189
190impl From<[u64; 8]> for m512i {
191 #[inline(always)]
192 fn from(arr: [u64; 8]) -> Self {
193 unsafe { core::mem::transmute(arr) }
194 }
195}
196
197impl From<m512i> for [u64; 8] {
198 #[inline(always)]
199 fn from(m: m512i) -> Self {
200 unsafe { core::mem::transmute(m) }
201 }
202}
203
204impl From<[i128; 4]> for m512i {
207 #[inline(always)]
208 fn from(i: [i128; 4]) -> Self {
209 unsafe { core::mem::transmute(i) }
210 }
211}
212
213impl From<m512i> for [i128; 4] {
214 #[inline(always)]
215 fn from(m: m512i) -> Self {
216 unsafe { core::mem::transmute(m) }
217 }
218}
219
220impl From<[u128; 4]> for m512i {
221 #[inline(always)]
222 fn from(u: [u128; 4]) -> Self {
223 unsafe { core::mem::transmute(u) }
224 }
225}
226
227impl From<m512i> for [u128; 4] {
228 #[inline(always)]
229 fn from(m: m512i) -> Self {
230 unsafe { core::mem::transmute(m) }
231 }
232}
233
234impl Debug for m512i {
239 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
246 write!(f, "m512i(")?;
247 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
248 if i != 0 {
249 write!(f, ", ")?;
250 }
251 Debug::fmt(int, f)?;
252 }
253 write!(f, ")")
254 }
255}
256
257impl Display for m512i {
258 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
265 write!(f, "(")?;
266 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
267 if i != 0 {
268 write!(f, ", ")?;
269 }
270 Display::fmt(int, f)?;
271 }
272 write!(f, ")")
273 }
274}
275
276impl Binary for m512i {
277 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
284 write!(f, "(")?;
285 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
286 if i != 0 {
287 write!(f, ", ")?;
288 }
289 Binary::fmt(int, f)?;
290 }
291 write!(f, ")")
292 }
293}
294
295impl LowerExp for m512i {
296 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
306 write!(f, "(")?;
307 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
308 if i != 0 {
309 write!(f, ", ")?;
310 }
311 LowerExp::fmt(int, f)?;
312 }
313 write!(f, ")")
314 }
315}
316
317impl UpperExp for m512i {
318 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
328 write!(f, "(")?;
329 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
330 if i != 0 {
331 write!(f, ", ")?;
332 }
333 UpperExp::fmt(int, f)?;
334 }
335 write!(f, ")")
336 }
337}
338
339impl LowerHex for m512i {
340 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
347 write!(f, "(")?;
348 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
349 if i != 0 {
350 write!(f, ", ")?;
351 }
352 LowerHex::fmt(int, f)?;
353 }
354 write!(f, ")")
355 }
356}
357
358impl UpperHex for m512i {
359 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
366 write!(f, "(")?;
367 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
368 if i != 0 {
369 write!(f, ", ")?;
370 }
371 UpperHex::fmt(int, f)?;
372 }
373 write!(f, ")")
374 }
375}
376
377impl Octal for m512i {
378 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
385 write!(f, "(")?;
386 for (i, int) in <[i32; 16]>::from(*self).iter().enumerate() {
387 if i != 0 {
388 write!(f, ", ")?;
389 }
390 Octal::fmt(int, f)?;
391 }
392 write!(f, ")")
393 }
394}