diff --git a/neon.cpp b/neon.cpp index f96ea993..99d87463 100644 --- a/neon.cpp +++ b/neon.cpp @@ -73,9 +73,18 @@ bool CPU_TryNEON_ARM() } return result; # else -# if defined(__linux__) && (defined(__aarch32__) || defined(__aarch64__)) +# if defined(__android__) && defined(CRYPTOPP_BOOL_ARM64) + if (android_getCpuFeatures() & ANDROID_CPU_ARM64_FEATURE_ASIMD) + return true; +# elif defined(__android__) && defined(CRYPTOPP_BOOL_ARM32) + if (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) + return true; +# elif defined(__linux__) && defined(__aarch64__) if (getauxval(AT_HWCAP) & HWCAP_ASIMD) return true; +# elif defined(__linux__) && defined(__aarch32__) + if (getauxval(AT_HWCAP2) & HWCAP2_ASIMD) + return true; # elif defined(__linux__) && defined(__arm__) if (getauxval(AT_HWCAP) & HWCAP_ARM_NEON) return true;