--- a/C/Aes.c
+++ b/C/Aes.c
@@ -55,7 +55,7 @@ static Byte InvS[256];
 
 #ifdef MY_CPU_X86_OR_AMD64
   #define USE_HW_AES
-#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE)
+#elif (defined(MY_CPU_ARM64) || (defined(__ARM_ARCH) && defined(__ARM_NEON))) && defined(MY_CPU_LE)
   #if defined(__clang__)
     #if (__clang_major__ >= 8) // fix that check
       #define USE_HW_AES
--- a/C/AesOpt.c
+++ b/C/AesOpt.c
@@ -554,7 +554,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW)
 #endif // ! USE_INTEL_VAES
 
 
-#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE)
+#elif (defined(MY_CPU_ARM64) || (defined(__ARM_ARCH) && defined(__ARM_NEON))) && defined(MY_CPU_LE)
 
   #if defined(__clang__)
     #if (__clang_major__ >= 8) // fix that check
@@ -577,10 +577,10 @@ VAES_COMPAT_STUB (AesCtr_Code_HW)
 #if defined(__clang__) || defined(__GNUC__)
   #ifdef MY_CPU_ARM64
     #define ATTRIB_AES __attribute__((__target__("+crypto")))
-  #else
+  #elif defined(__ARM_NEON)
     #define ATTRIB_AES __attribute__((__target__("fpu=crypto-neon-fp-armv8")))
   #endif
-#else
+#elif defined(__ARM_NEON)
   // _MSC_VER
   // for arm32
   #define _ARM_USE_NEW_NEON_INTRINSICS
@@ -592,7 +592,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW)
 
 #if defined(_MSC_VER) && defined(MY_CPU_ARM64)
 #include <arm64_neon.h>
-#else
+#elif defined(__ARM_NEON)
 #include <arm_neon.h>
 #endif
 
--- a/C/Sha1Opt.c
+++ b/C/Sha1Opt.c
@@ -202,7 +202,7 @@ void Z7_FASTCALL Sha1_UpdateBlocks_HW(UI
 
 #endif // USE_HW_SHA
 
-#elif defined(MY_CPU_ARM_OR_ARM64)
+#elif defined(MY_CPU_ARM64) || (defined(__ARM_ARCH) && defined(__ARM_NEON))
 
   #if defined(__clang__)
     #if (__clang_major__ >= 8) // fix that check
@@ -225,10 +225,10 @@ void Z7_FASTCALL Sha1_UpdateBlocks_HW(UI
 #if defined(__clang__) || defined(__GNUC__)
   #ifdef MY_CPU_ARM64
     #define ATTRIB_SHA __attribute__((__target__("+crypto")))
-  #else
+  #elif defined(__ARM_NEON)
     #define ATTRIB_SHA __attribute__((__target__("fpu=crypto-neon-fp-armv8")))
   #endif
-#else
+#elif defined(__ARM_NEON)
   // _MSC_VER
   // for arm32
   #define _ARM_USE_NEW_NEON_INTRINSICS
@@ -236,7 +236,7 @@ void Z7_FASTCALL Sha1_UpdateBlocks_HW(UI
 
 #if defined(_MSC_VER) && defined(MY_CPU_ARM64)
 #include <arm64_neon.h>
-#else
+#elif defined(__ARM_NEON)
 #include <arm_neon.h>
 #endif
 
--- a/C/Sha256Opt.c
+++ b/C/Sha256Opt.c
@@ -202,7 +202,7 @@ void Z7_FASTCALL Sha256_UpdateBlocks_HW(
 
 #endif // USE_HW_SHA
 
-#elif defined(MY_CPU_ARM_OR_ARM64)
+#elif defined(MY_CPU_ARM64) || (defined(__ARM_ARCH) && defined(__ARM_NEON))
 
   #if defined(__clang__)
     #if (__clang_major__ >= 8) // fix that check
@@ -225,10 +225,10 @@ void Z7_FASTCALL Sha256_UpdateBlocks_HW(
 #if defined(__clang__) || defined(__GNUC__)
   #ifdef MY_CPU_ARM64
     #define ATTRIB_SHA __attribute__((__target__("+crypto")))
-  #else
+  #elif defined(__ARM_NEON)
     #define ATTRIB_SHA __attribute__((__target__("fpu=crypto-neon-fp-armv8")))
   #endif
-#else
+#elif defined(__ARM_NEON)
   // _MSC_VER
   // for arm32
   #define _ARM_USE_NEW_NEON_INTRINSICS
@@ -236,7 +236,7 @@ void Z7_FASTCALL Sha256_UpdateBlocks_HW(
 
 #if defined(_MSC_VER) && defined(MY_CPU_ARM64)
 #include <arm64_neon.h>
-#else
+#elif defined(__ARM_NEON)
 #include <arm_neon.h>
 #endif
 
--- a/C/SwapBytes.c
+++ b/C/SwapBytes.c
@@ -331,18 +331,18 @@ ShufBytes_256(void *items8, const void *
 
 // compile message "NEON intrinsics not available with the soft-float ABI"
 #elif defined(MY_CPU_ARM_OR_ARM64) || \
-    (defined(__ARM_ARCH) && (__ARM_ARCH >= 7))
+    (defined(__ARM_ARCH) && defined(__ARM_NEON))
 // #elif defined(MY_CPU_ARM64)
 
   #if defined(__clang__) && (__clang_major__ >= 8) \
     || defined(__GNUC__) && (__GNUC__ >= 8)
-    #if (defined(__ARM_ARCH) && (__ARM_ARCH >= 7)) \
+    #if (defined(__ARM_ARCH) && defined(__ARM_NEON)) \
         || defined(MY_CPU_ARM64)
       #define USE_SWAP_128
     #endif
     #ifdef MY_CPU_ARM64
       // #define SWAP_ATTRIB_NEON __attribute__((__target__("")))
-    #else
+    #elif defined(__ARM_NEON)
       // #define SWAP_ATTRIB_NEON __attribute__((__target__("fpu=crypto-neon-fp-armv8")))
     #endif
   #elif defined(_MSC_VER)
@@ -353,7 +353,7 @@ ShufBytes_256(void *items8, const void *
 
   #if defined(_MSC_VER) && defined(MY_CPU_ARM64)
     #include <arm64_neon.h>
-  #else
+  #elif defined(__ARM_NEON)
     #include <arm_neon.h>
   #endif
 
--- a/CPP/7zip/Crypto/MyAes.cpp
+++ b/CPP/7zip/Crypto/MyAes.cpp
@@ -154,7 +154,7 @@ Z7_COM7F_IMF2(UInt32, CAesCtrCoder::Filt
 
 #ifdef MY_CPU_X86_OR_AMD64
   #define USE_HW_AES
-#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE)
+#elif (defined(MY_CPU_ARM64) || (defined(__ARM_ARCH) && defined(__ARM_NEON))) && defined(MY_CPU_LE)
   #if defined(__clang__)
     #if (__clang_major__ >= 8) // fix that check
       #define USE_HW_AES
