zeroize/
x86.rs

1//! [`Zeroize`] impls for x86 SIMD registers
2
3use crate::{atomic_fence, volatile_write, Zeroize};
4
5#[cfg(target_arch = "x86")]
6use core::arch::x86::*;
7
8#[cfg(target_arch = "x86_64")]
9use core::arch::x86_64::*;
10
11macro_rules! impl_zeroize_for_simd_register {
12    ($($type:ty),* $(,)?) => {
13        $(
14            impl Zeroize for $type {
15                #[inline]
16                fn zeroize(&mut self) {
17                    volatile_write(self, unsafe { core::mem::zeroed() });
18                    atomic_fence();
19                }
20            }
21        )*
22    };
23}
24
25impl_zeroize_for_simd_register!(__m128, __m128d, __m128i, __m256, __m256d, __m256i);
26
27// NOTE: MSRV 1.72
28#[cfg(feature = "simd")]
29impl_zeroize_for_simd_register!(__m512, __m512d, __m512i);