diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2017-05-20 01:34:34 +0300 |
---|---|---|
committer | Tom Tsou <tom@tsou.cc> | 2017-06-08 18:32:29 +0000 |
commit | ee5735768213f8724b978cd9180f088721e0cde0 (patch) | |
tree | b97816850ede5733aba88e5089b568be9b31d123 | |
parent | 8537b90dbefd98eb91915aaa32e7b623bf3cd581 (diff) |
buildenv: check for __builtin_cpu_supports call support
The '__builtin_cpu_supports' is a GCC's built-in function which
returns a positive integer if the run-time CPU supports specified
SIMD feature and returns 0 otherwise.
This change adds a new check, whether compiler supports this call.
See /gcc/X86-Built-in-Functions.html at gcc.gnu.org for reference.
Change-Id: I797f638573e8c3aae39c28abb157ce2ac419f3f7
-rw-r--r-- | configure.ac | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 7c3c76f..8ddd07d 100644 --- a/configure.ac +++ b/configure.ac @@ -120,6 +120,33 @@ AS_IF([test "x$with_sse" != "xno"], [ AM_CONDITIONAL(HAVE_SSE4_1, false) ]) +dnl Check if the compiler supports specified GCC's built-in function +AC_DEFUN([CHECK_BUILTIN_SUPPORT], [ + AC_CACHE_CHECK( + [whether ${CC} has $1 built-in], + [osmo_cv_cc_has_builtin], [ + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([], [ + __builtin_cpu_supports("sse"); + ]) + ], + [AS_VAR_SET([osmo_cv_cc_has_builtin], [yes])], + [AS_VAR_SET([osmo_cv_cc_has_builtin], [no])]) + ] + ) + + AS_IF([test yes = AS_VAR_GET([osmo_cv_cc_has_builtin])], [ + AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, + [Define to 1 if compiler has the '$1' built-in function]) + ], [ + AC_MSG_WARN($2) + ]) +]) + +dnl Check if the compiler supports runtime SIMD detection +CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports], + [Runtime SIMD detection will be disabled]) + AM_CONDITIONAL(USRP1, [test "x$with_usrp1" = "xyes"]) AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"]) AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"]) |