]> sourceware.org Git - lvm2.git/commitdiff
utils: add clzll
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 19 Jun 2018 17:35:48 +0000 (19:35 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Fri, 22 Jun 2018 21:37:02 +0000 (23:37 +0200)
Check for __builtin_clzll and add wrapper when missing.

configure
configure.ac
include/configure.h.in
lib/misc/util.h

index 7dee1101cb2ff7f3f58c4811a93f092c372493bc..deaa8e9e8cef584536fed14d807a4160f1b3d130 100755 (executable)
--- a/configure
+++ b/configure
@@ -6581,6 +6581,50 @@ fi
 
 
 
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_clzll" >&5
+$as_echo_n "checking for __builtin_clzll... " >&6; }
+if ${ax_cv_have___builtin_clzll+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+            __builtin_clzll(0)
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_have___builtin_clzll=yes
+else
+  ax_cv_have___builtin_clzll=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_clzll" >&5
+$as_echo "$ax_cv_have___builtin_clzll" >&6; }
+
+    if test yes = $ax_cv_have___builtin_clzll; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE___BUILTIN_CLZLL 1
+_ACEOF
+
+fi
+
+
+
+
 ################################################################################
 for ac_func in ftruncate gethostname getpagesize gettimeofday localtime_r \
   memchr memset mkdir mkfifo munmap nl_langinfo realpath rmdir setenv \
index c3197b7e027b3a924a3a713563e5f18209e3d3a0..699bbb638f05cbcd8be0aedb821da4cd209945d3 100644 (file)
@@ -140,6 +140,7 @@ AC_TYPE_UINT16_T
 AC_TYPE_UINT32_T
 AC_TYPE_UINT64_T
 AX_GCC_BUILTIN([__builtin_clz])
+AX_GCC_BUILTIN([__builtin_clzll])
 
 ################################################################################
 dnl -- Check for functions
index b1b2db392ee2bb58379e71aa8e7d502a458dbdc1..50e35f7801fb73575f628aa0cc601a673df2fcff 100644 (file)
 /* Define to 1 if the system has the `__builtin_clz' built-in function */
 #undef HAVE___BUILTIN_CLZ
 
+/* Define to 1 if the system has the `__builtin_clzll' built-in function */
+#undef HAVE___BUILTIN_CLZLL
+
 /* Internalization package */
 #undef INTL_PACKAGE
 
index 9231ea948c4cd60227f9972b5b5797f770f0f909..a42ecb355a73c23cf20cfc9ed1aefa28bbdd965f 100644 (file)
@@ -43,7 +43,7 @@
 #ifdef HAVE___BUILTIN_CLZ
 #define clz(x) __builtin_clz((x))
 #else /* ifdef HAVE___BUILTIN_CLZ */
-unsigned _dm_clz(unsigned x)
+static unsigned _dm_clz(unsigned x)
 {
        int n;
 
@@ -76,6 +76,19 @@ unsigned _dm_clz(unsigned x)
 #define clz(x) _dm_clz((x))
 #endif /* ifdef HAVE___BUILTIN_CLZ */
 
+#ifdef HAVE___BUILTIN_CLZLL
+#define clzll(x) __builtin_clzll((x))
+#else /* ifdef HAVE___BUILTIN_CLZ */
+static unsigned _dm_clzll(unsigned long long x)
+{
+       if (x <= 0xffffffff)
+               return 32 + clz((unsigned) (x & 0xffffffff));
+
+       return clz(x >> 32);
+}
+#define clzll(x) _dm_clzll((x))
+#endif /* ifdef HAVE___BUILTIN_CLZLL */
+
 #define KERNEL_VERSION(major, minor, release) (((major) << 16) + ((minor) << 8) + (release))
 
 /* Define some portable printing types */
This page took 0.05207 seconds and 5 git commands to generate.