From: Johann Date: Tue, 9 Sep 2014 18:48:25 +0000 (-0700) Subject: Restructure ARM assumptions in cpudetect X-Git-Tag: v1.4.0~817^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dcdacc597f7e543a3ebe259b0d9ca9b2e867513;p=libvpx Restructure ARM assumptions in cpudetect Allow building for targets which have NEON but not EDSP or MEDIA. Set HAS_NEON flag for builds which have neon assembly but not intrinsics. Change-Id: Ibfa81a8444a8c55d1d3209c533d1d70d2f809669 --- diff --git a/vpx_ports/arm_cpudetect.c b/vpx_ports/arm_cpudetect.c index fa0e030b5..f03feffbc 100644 --- a/vpx_ports/arm_cpudetect.c +++ b/vpx_ports/arm_cpudetect.c @@ -10,7 +10,8 @@ #include #include -#include "arm.h" +#include "vpx_ports/arm.h" +#include "./vpx_config.h" #ifdef WINAPI_FAMILY #include @@ -54,9 +55,9 @@ int arm_cpu_caps(void) { #if HAVE_MEDIA flags |= HAS_MEDIA; #endif /* HAVE_MEDIA */ -#if HAVE_NEON +#if HAVE_NEON || HAVE_NEON_ASM flags |= HAS_NEON; -#endif /* HAVE_NEON */ +#endif /* HAVE_NEON || HAVE_NEON_ASM */ return flags & mask; } @@ -87,6 +88,7 @@ int arm_cpu_caps(void) { /*Ignore exception.*/ } } +#endif /* HAVE_EDSP */ #if HAVE_MEDIA if (mask & HAS_MEDIA) __try { @@ -97,7 +99,8 @@ int arm_cpu_caps(void) { /*Ignore exception.*/ } } -#if HAVE_NEON +#endif /* HAVE_MEDIA */ +#if HAVE_NEON || HAVE_NEON_ASM if (mask &HAS_NEON) { __try { /*VORR q0,q0,q0*/ @@ -107,9 +110,7 @@ if (mask &HAS_NEON) { /*Ignore exception.*/ } } -#endif /* HAVE_NEON */ -#endif /* HAVE_MEDIA */ -#endif /* HAVE_EDSP */ +#endif /* HAVE_NEON || HAVE_NEON_ASM */ return flags & mask; } @@ -132,10 +133,10 @@ int arm_cpu_caps(void) { #if HAVE_MEDIA flags |= HAS_MEDIA; #endif /* HAVE_MEDIA */ -#if HAVE_NEON +#if HAVE_NEON || HAVE_NEON_ASM if (features & ANDROID_CPU_ARM_FEATURE_NEON) flags |= HAS_NEON; -#endif /* HAVE_NEON */ +#endif /* HAVE_NEON || HAVE_NEON_ASM */ return flags & mask; } @@ -162,7 +163,7 @@ int arm_cpu_caps(void) { */ char buf[512]; while (fgets(buf, 511, fin) != NULL) { -#if HAVE_EDSP || HAVE_NEON +#if HAVE_EDSP || HAVE_NEON || HAVE_NEON_ASM if (memcmp(buf, "Features", 8) == 0) { char *p; #if HAVE_EDSP @@ -170,15 +171,15 @@ int arm_cpu_caps(void) { if (p != NULL && (p[5] == ' ' || p[5] == '\n')) { flags |= HAS_EDSP; } -#if HAVE_NEON +#endif /* HAVE_EDSP */ +#if HAVE_NEON || HAVE_NEON_ASM p = strstr(buf, " neon"); if (p != NULL && (p[5] == ' ' || p[5] == '\n')) { flags |= HAS_NEON; } -#endif /* HAVE_NEON */ -#endif /* HAVE_EDSP */ +#endif /* HAVE_NEON || HAVE_NEON_ASM */ } -#endif /* HAVE_EDSP || HAVE_NEON */ +#endif /* HAVE_EDSP || HAVE_NEON || HAVE_NEON_ASM */ #if HAVE_MEDIA if (memcmp(buf, "CPU architecture:", 17) == 0) { int version;