@@ -9,32 +9,18 @@ use core::arch::x86::*;
9
9
use core:: arch:: x86_64:: * ;
10
10
11
11
macro_rules! impl_zeroize_for_simd_register {
12
- ( $type: ty, $feature: expr, $zero_value: ident) => {
13
- #[ cfg_attr( docsrs, doc( cfg( target_arch = "x86" ) ) ) ] // also `x86_64`
14
- #[ cfg_attr( docsrs, doc( cfg( target_feature = $feature) ) ) ]
15
- impl Zeroize for $type {
16
- fn zeroize( & mut self ) {
17
- volatile_write( self , unsafe { $zero_value( ) } ) ;
18
- atomic_fence( ) ;
12
+ ( $( $type: ty) ,* $( , ) ?) => {
13
+ $(
14
+ #[ cfg_attr( docsrs, doc( cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ) ) ]
15
+ impl Zeroize for $type {
16
+ #[ inline]
17
+ fn zeroize( & mut self ) {
18
+ volatile_write( self , unsafe { core:: mem:: zeroed( ) } ) ;
19
+ atomic_fence( ) ;
20
+ }
19
21
}
20
- }
22
+ ) *
21
23
} ;
22
24
}
23
25
24
- #[ cfg( target_feature = "sse" ) ]
25
- impl_zeroize_for_simd_register ! ( __m128, "sse" , _mm_setzero_ps) ;
26
-
27
- #[ cfg( target_feature = "sse2" ) ]
28
- impl_zeroize_for_simd_register ! ( __m128d, "sse2" , _mm_setzero_pd) ;
29
-
30
- #[ cfg( target_feature = "sse2" ) ]
31
- impl_zeroize_for_simd_register ! ( __m128i, "sse2" , _mm_setzero_si128) ;
32
-
33
- #[ cfg( target_feature = "avx" ) ]
34
- impl_zeroize_for_simd_register ! ( __m256, "avx" , _mm256_setzero_ps) ;
35
-
36
- #[ cfg( target_feature = "avx" ) ]
37
- impl_zeroize_for_simd_register ! ( __m256d, "avx" , _mm256_setzero_pd) ;
38
-
39
- #[ cfg( target_feature = "avx" ) ]
40
- impl_zeroize_for_simd_register ! ( __m256i, "avx" , _mm256_setzero_si256) ;
26
+ impl_zeroize_for_simd_register ! ( __m128, __m128d, __m128i, __m256, __m256d, __m256i) ;
0 commit comments