Skip to main content

zeroize/
x86.rs

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