safe_arch/x86_x64/
m256_.rs1use super::*;
8
9#[repr(transparent)]
15#[allow(non_camel_case_types)]
16pub struct m256(pub __m256);
17
18#[cfg(feature = "bytemuck")]
19unsafe impl bytemuck::Zeroable for m256 {}
20#[cfg(feature = "bytemuck")]
21unsafe impl bytemuck::Pod for m256 {}
22#[cfg(feature = "bytemuck")]
23unsafe impl bytemuck::TransparentWrapper<__m256> for m256 {}
24
25impl m256 {
26 #[must_use]
30 #[inline(always)]
31 pub fn to_array(self) -> [f32; 8] {
32 self.into()
33 }
34
35 #[must_use]
40 #[inline(always)]
41 pub fn from_array(f: [f32; 8]) -> Self {
42 f.into()
43 }
44
45 #[must_use]
49 #[inline(always)]
50 pub fn to_bits(self) -> [u32; 8] {
51 unsafe { core::mem::transmute(self) }
52 }
53
54 #[must_use]
58 #[inline(always)]
59 pub fn from_bits(bits: [u32; 8]) -> Self {
60 unsafe { core::mem::transmute(bits) }
61 }
62}
63
64impl Clone for m256 {
65 #[inline(always)]
66 fn clone(&self) -> Self {
67 *self
68 }
69}
70impl Copy for m256 {}
71
72impl Default for m256 {
73 #[inline(always)]
74 fn default() -> Self {
75 unsafe { core::mem::zeroed() }
76 }
77}
78
79impl From<[f32; 8]> for m256 {
80 #[inline(always)]
81 fn from(arr: [f32; 8]) -> Self {
82 unsafe { core::mem::transmute(arr) }
86 }
87}
88
89impl From<m256> for [f32; 8] {
90 #[inline(always)]
91 fn from(m: m256) -> Self {
92 unsafe { core::mem::transmute(m) }
94 }
95}
96
97impl Debug for m256 {
102 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
109 write!(f, "m256(")?;
110 for (i, float) in self.to_array().iter().enumerate() {
111 if i != 0 {
112 write!(f, ", ")?;
113 }
114 Debug::fmt(float, f)?;
115 }
116 write!(f, ")")
117 }
118}
119
120impl Display for m256 {
121 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
128 write!(f, "(")?;
129 for (i, float) in self.to_array().iter().enumerate() {
130 if i != 0 {
131 write!(f, ", ")?;
132 }
133 Display::fmt(float, f)?;
134 }
135 write!(f, ")")
136 }
137}
138
139impl Binary for m256 {
140 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
147 write!(f, "(")?;
148 for (i, float) in self.to_array().iter().enumerate() {
149 if i != 0 {
150 write!(f, ", ")?;
151 }
152 Binary::fmt(&float.to_bits(), f)?;
153 }
154 write!(f, ")")
155 }
156}
157
158impl LowerExp for m256 {
159 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
166 write!(f, "(")?;
167 for (i, float) in self.to_array().iter().enumerate() {
168 if i != 0 {
169 write!(f, ", ")?;
170 }
171 LowerExp::fmt(float, f)?;
172 }
173 write!(f, ")")
174 }
175}
176
177impl UpperExp for m256 {
178 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
185 write!(f, "(")?;
186 for (i, float) in self.to_array().iter().enumerate() {
187 if i != 0 {
188 write!(f, ", ")?;
189 }
190 UpperExp::fmt(float, f)?;
191 }
192 write!(f, ")")
193 }
194}
195
196impl LowerHex for m256 {
197 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
204 write!(f, "(")?;
205 for (i, float) in self.to_array().iter().enumerate() {
206 if i != 0 {
207 write!(f, ", ")?;
208 }
209 LowerHex::fmt(&float.to_bits(), f)?;
210 }
211 write!(f, ")")
212 }
213}
214
215impl UpperHex for m256 {
216 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
223 write!(f, "(")?;
224 for (i, float) in self.to_array().iter().enumerate() {
225 if i != 0 {
226 write!(f, ", ")?;
227 }
228 UpperHex::fmt(&float.to_bits(), f)?;
229 }
230 write!(f, ")")
231 }
232}
233
234impl Octal for m256 {
235 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
242 write!(f, "(")?;
243 for (i, float) in self.to_array().iter().enumerate() {
244 if i != 0 {
245 write!(f, ", ")?;
246 }
247 Octal::fmt(&float.to_bits(), f)?;
248 }
249 write!(f, ")")
250 }
251}