summaryrefslogtreecommitdiff
path: root/src/util/u_cpu_detect.c
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2019-09-16 11:34:28 +0000
committerMatt Turner <mattst88@gmail.com>2019-10-09 12:55:10 -0700
commit601a098338a5c276a538d55bde516624aff99a49 (patch)
tree86d0dd751bcc860c6171167f308a548ff3dc75f5 /src/util/u_cpu_detect.c
parent7d5ad8e77e4e085d30debc832d401d1cd78fb8c3 (diff)
util: detect NEON at runtime on FreeBSD
Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Jan Beich <jbeich@FreeBSD.org>
Diffstat (limited to 'src/util/u_cpu_detect.c')
-rw-r--r--src/util/u_cpu_detect.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/util/u_cpu_detect.c b/src/util/u_cpu_detect.c
index 387003d6cba..19b21b0aa44 100644
--- a/src/util/u_cpu_detect.c
+++ b/src/util/u_cpu_detect.c
@@ -56,6 +56,10 @@
#if defined(PIPE_OS_FREEBSD) || defined(PIPE_OS_DRAGONFLY)
#include <sys/types.h>
#include <sys/sysctl.h>
+#if __has_include(<sys/auxv.h>)
+#include <sys/auxv.h>
+#define HAVE_ELF_AUX_INFO
+#endif
#endif
#if defined(PIPE_OS_LINUX)
@@ -362,6 +366,11 @@ check_os_arm_support(void)
*/
#if defined(__ARM_NEON) || defined(__ARM_NEON__)
util_cpu_caps.has_neon = 1;
+#elif defined(PIPE_OS_FREEBSD) && defined(HAVE_ELF_AUX_INFO)
+ unsigned long hwcap = 0;
+ elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
+ if (hwcap & HWCAP_NEON)
+ util_cpu_caps.has_neon = 1;
#elif defined(HAS_ANDROID_CPUFEATURES)
AndroidCpuFamily cpu_family = android_getCpuFamily();
uint64_t cpu_features = android_getCpuFeatures();