@@ -32,7 +32,16 @@ mod x86;
32
32
///
33
33
/// # Safety
34
34
/// May use native CPU features
35
- #[ inline( always) ]
35
+ #[ inline]
36
+ #[ cfg_attr(
37
+ any( target_arch = "x86" , target_arch = "x86_64" ) ,
38
+ target_feature( enable = "sse2,sse4.1,pclmulqdq" )
39
+ ) ]
40
+ #[ cfg_attr(
41
+ all( target_arch = "x86_64" , feature = "vpclmulqdq" ) ,
42
+ target_feature( enable = "avx2,vpclmulqdq,avx512f,avx512vl" )
43
+ ) ]
44
+ #[ cfg_attr( target_arch = "aarch64" , target_feature( enable = "neon,aes" ) ) ]
36
45
pub ( crate ) unsafe fn update ( state : u64 , bytes : & [ u8 ] , params : CrcParams ) -> u64 {
37
46
#[ cfg( target_arch = "aarch64" ) ]
38
47
{
@@ -83,7 +92,10 @@ pub(crate) unsafe fn update(state: u64, bytes: &[u8], params: CrcParams) -> u64
83
92
}
84
93
85
94
pub fn get_target ( ) -> String {
86
- #[ cfg( target_arch = "aarch64" ) ]
95
+ #[ cfg( all( target_arch = "aarch64" , target_feature = "sha3" ) ) ]
96
+ return "internal-aarch64-neon-eor3" . to_string ( ) ;
97
+
98
+ #[ cfg( all( target_arch = "aarch64" , not( target_feature = "sha3" ) ) ) ]
87
99
return "internal-aarch64-neon" . to_string ( ) ;
88
100
89
101
#[ cfg( all( target_arch = "x86_64" , feature = "vpclmulqdq" ) ) ]
0 commit comments