@@ -32,7 +32,16 @@ mod x86;
3232///
3333/// # Safety
3434/// 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" ) ) ]
3645pub ( crate ) unsafe fn update ( state : u64 , bytes : & [ u8 ] , params : CrcParams ) -> u64 {
3746 #[ cfg( target_arch = "aarch64" ) ]
3847 {
@@ -83,7 +92,10 @@ pub(crate) unsafe fn update(state: u64, bytes: &[u8], params: CrcParams) -> u64
8392}
8493
8594pub 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" ) ) ) ]
8799 return "internal-aarch64-neon" . to_string ( ) ;
88100
89101 #[ cfg( all( target_arch = "x86_64" , feature = "vpclmulqdq" ) ) ]
0 commit comments