summaryrefslogtreecommitdiff
path: root/vendor/zeroize/src/x86.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zeroize/src/x86.rs')
-rw-r--r--vendor/zeroize/src/x86.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/vendor/zeroize/src/x86.rs b/vendor/zeroize/src/x86.rs
new file mode 100644
index 0000000..5e4bfcb
--- /dev/null
+++ b/vendor/zeroize/src/x86.rs
@@ -0,0 +1,26 @@
+//! [`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),* $(,)?) => {
+ $(
+ #[cfg_attr(docsrs, doc(cfg(any(target_arch = "x86", target_arch = "x86_64"))))]
+ 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);