]> granicus.if.org Git - libvpx/blobdiff - vpx_ports/arm_cpudetect.c
Merge "ppc: Add vpx_sadnxmx4d_vsx for n,m = {8, 16, 32 ,64}"
[libvpx] / vpx_ports / arm_cpudetect.c
index 8a4b8af964fe742a0c00dc94234434cb039acab5..4f9d480ade6fd8e650dcaa7aba30ca4c70d49964 100644 (file)
@@ -10,8 +10,9 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include "vpx_ports/arm.h"
+
 #include "./vpx_config.h"
+#include "vpx_ports/arm.h"
 
 #ifdef WINAPI_FAMILY
 #include <winapifamily.h>
@@ -49,9 +50,6 @@ int arm_cpu_caps(void) {
     return flags;
   }
   mask = arm_cpu_env_mask();
-#if HAVE_MEDIA
-  flags |= HAS_MEDIA;
-#endif /* HAVE_MEDIA */
 #if HAVE_NEON || HAVE_NEON_ASM
   flags |= HAS_NEON;
 #endif /* HAVE_NEON  || HAVE_NEON_ASM */
@@ -60,8 +58,12 @@ int arm_cpu_caps(void) {
 
 #elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT */
 /*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/
+#ifndef WIN32_LEAN_AND_MEAN
 #define WIN32_LEAN_AND_MEAN
+#endif
+#ifndef WIN32_EXTRA_LEAN
 #define WIN32_EXTRA_LEAN
+#endif
 #include <windows.h>
 
 int arm_cpu_caps(void) {
@@ -71,33 +73,22 @@ int arm_cpu_caps(void) {
     return flags;
   }
   mask = arm_cpu_env_mask();
-  /* MSVC has no inline __asm support for ARM, but it does let you __emit
  *  instructions via their assembled hex code.
  * All of these instructions should be essentially nops.
  */
-#if HAVE_MEDIA
-  if (mask & HAS_MEDIA)
+/* MSVC has no inline __asm support for ARM, but it does let you __emit
+ *  instructions via their assembled hex code.
+ * All of these instructions should be essentially nops.
+ */
+#if HAVE_NEON || HAVE_NEON_ASM
+  if (mask & HAS_NEON) {
     __try {
-      /*SHADD8 r3,r3,r3*/
-      __emit(0xE6333F93);
-      flags |= HAS_MEDIA;
+      /*VORR q0,q0,q0*/
+      __emit(0xF2200150);
+      flags |= HAS_NEON;
     } __except (GetExceptionCode() == EXCEPTION_ILLEGAL_INSTRUCTION) {
-    /*Ignore exception.*/
-  }
-}
-#endif /* HAVE_MEDIA */
-#if HAVE_NEON || HAVE_NEON_ASM
-if (mask &HAS_NEON) {
-  __try {
-    /*VORR q0,q0,q0*/
-    __emit(0xF2200150);
-    flags |= HAS_NEON;
-  } __except (GetExceptionCode() == EXCEPTION_ILLEGAL_INSTRUCTION) {
-    /*Ignore exception.*/
+      /*Ignore exception.*/
+    }
   }
-}
 #endif /* HAVE_NEON || HAVE_NEON_ASM */
-return flags & mask;
+  return flags & mask;
 }
 
 #elif defined(__ANDROID__) /* end _MSC_VER */
@@ -113,12 +104,8 @@ int arm_cpu_caps(void) {
   mask = arm_cpu_env_mask();
   features = android_getCpuFeatures();
 
-#if HAVE_MEDIA
-  flags |= HAS_MEDIA;
-#endif /* HAVE_MEDIA */
 #if HAVE_NEON || HAVE_NEON_ASM
-  if (features & ANDROID_CPU_ARM_FEATURE_NEON)
-    flags |= HAS_NEON;
+  if (features & ANDROID_CPU_ARM_FEATURE_NEON) flags |= HAS_NEON;
 #endif /* HAVE_NEON || HAVE_NEON_ASM */
   return flags & mask;
 }
@@ -155,21 +142,13 @@ int arm_cpu_caps(void) {
         }
       }
 #endif /* HAVE_NEON || HAVE_NEON_ASM */
-#if HAVE_MEDIA
-      if (memcmp(buf, "CPU architecture:", 17) == 0) {
-        int version;
-        version = atoi(buf + 17);
-        if (version >= 6) {
-          flags |= HAS_MEDIA;
-        }
-      }
-#endif /* HAVE_MEDIA */
     }
     fclose(fin);
   }
   return flags & mask;
 }
-#else /* end __linux__ */
-#error "--enable-runtime-cpu-detect selected, but no CPU detection method " \
+#else  /* end __linux__ */
+#error \
+    "--enable-runtime-cpu-detect selected, but no CPU detection method " \
 "available for your platform. Reconfigure with --disable-runtime-cpu-detect."
 #endif