3030
3131#include "../lib_common.h"
3232
33- #define HAVE_DYNAMIC_ARM_CPU_FEATURES 0
34-
3533#if defined(ARCH_ARM32 ) || defined(ARCH_ARM64 )
3634
37- #if !defined(FREESTANDING ) && \
38- (defined(__GNUC__ ) || defined(__clang__ ) || defined(_MSC_VER )) && \
39- (defined(__linux__ ) || \
40- (defined(__APPLE__ ) && defined(ARCH_ARM64 )) || \
41- (defined(_WIN32 ) && defined(ARCH_ARM64 )))
42- # undef HAVE_DYNAMIC_ARM_CPU_FEATURES
43- # define HAVE_DYNAMIC_ARM_CPU_FEATURES 1
44- #endif
45-
4635#define ARM_CPU_FEATURE_NEON (1 << 0)
4736#define ARM_CPU_FEATURE_PMULL (1 << 1)
4837/*
5544#define ARM_CPU_FEATURE_SHA3 (1 << 4)
5645#define ARM_CPU_FEATURE_DOTPROD (1 << 5)
5746
58- #if HAVE_DYNAMIC_ARM_CPU_FEATURES
59- #define ARM_CPU_FEATURES_KNOWN (1U << 31)
47+ #if !defined(FREESTANDING ) && \
48+ (defined(__GNUC__ ) || defined(__clang__ ) || defined(_MSC_VER )) && \
49+ (defined(__linux__ ) || \
50+ (defined(__APPLE__ ) && defined(ARCH_ARM64 )) || \
51+ (defined(_WIN32 ) && defined(ARCH_ARM64 )))
52+ /* Runtime ARM CPU feature detection is supported. */
53+ # define ARM_CPU_FEATURES_KNOWN (1U << 31)
6054extern volatile u32 libdeflate_arm_cpu_features ;
6155
6256void libdeflate_init_arm_cpu_features (void );
@@ -67,9 +61,9 @@ static inline u32 get_arm_cpu_features(void)
6761 libdeflate_init_arm_cpu_features ();
6862 return libdeflate_arm_cpu_features ;
6963}
70- #else /* HAVE_DYNAMIC_ARM_CPU_FEATURES */
64+ #else
7165static inline u32 get_arm_cpu_features (void ) { return 0 ; }
72- #endif /* !HAVE_DYNAMIC_ARM_CPU_FEATURES */
66+ #endif
7367
7468/* NEON */
7569#if defined(__ARM_NEON ) || (defined(_MSC_VER ) && defined(ARCH_ARM64 ))
0 commit comments