//! [`Zeroize`] impls for x86 SIMD registers use crate::{atomic_fence, volatile_write, Zeroize}; #[cfg(target_arch = "x86")] use core::arch::x86::*; #[cfg(target_arch = "x86_64")] use core::arch::x86_64::*; macro_rules! impl_zeroize_for_simd_register { ($($type:ty),* $(,)?) => { $( impl Zeroize for $type { #[inline] fn zeroize(&mut self) { volatile_write(self, unsafe { core::mem::zeroed() }); atomic_fence(); } } )* }; } impl_zeroize_for_simd_register!(__m128, __m128d, __m128i, __m256, __m256d, __m256i); // NOTE: MSRV 1.72 #[cfg(feature = "simd")] impl_zeroize_for_simd_register!(__m512, __m512d, __m512i);