-# if INT_MAX>=2147483647
-# define CLZ32_OFFS ((int)sizeof(unsigned)*CHAR_BIT)
-# define CLZ32(_x) (__builtin_clz(_x))
-# elif LONG_MAX>=2147483647L
-# define CLZ32_OFFS ((int)sizeof(unsigned long)*CHAR_BIT)
-# define CLZ32(_x) (__builtin_clzl(_x))
-# endif
-# if INT_MAX>=9223372036854775807LL
-# define CLZ64_OFFS ((int)sizeof(unsigned)*CHAR_BIT)
-# define CLZ64(_x) (__builtin_clz(_x))
-# elif LONG_MAX>=9223372036854775807LL
-# define CLZ64_OFFS ((int)sizeof(unsigned long)*CHAR_BIT)
-# define CLZ64(_x) (__builtin_clzl(_x))
-# elif LLONG_MAX>=9223372036854775807LL
-# define CLZ64_OFFS ((int)sizeof(unsigned long long)*CHAR_BIT)
-# define CLZ64(_x) (__builtin_clzll(_x))
-# endif
-# endif
+# if HAVE_BUILTIN_CLZ && INT_MAX>=2147483647
+# define CLZ32_OFFS ((int)sizeof(unsigned)*CHAR_BIT)
+# define CLZ32(_x) (__builtin_clz(_x))
+# elif HAVE_BUILTIN_CLZL && LONG_MAX>=2147483647L
+# define CLZ32_OFFS ((int)sizeof(unsigned long)*CHAR_BIT)
+# define CLZ32(_x) (__builtin_clzl(_x))