# Checks for library functions.
AC_CHECK_FUNCS([memset strstr])
+AC_MSG_CHECKING(for __builtin_clzl)
+AC_TRY_LINK([],[
+ __builtin_clzl(1);
+],[
+ AC_DEFINE(AEC_HAVE___BUILTIN_CLZL, 1, \
+ [Define to 1 if you have the '__builtin__clzl' function.])
+ AC_MSG_RESULT(yes)
+],[
+ AC_MSG_RESULT(no)
+])
AC_CONFIG_FILES([Makefile \
src/Makefile \
uint32_t fs = 0;
struct internal_state *state = strm->state;
- if ((state->acc & ((1ULL << state->bitp) - 1)) == 0)
+ state->acc &= ((1ULL << state->bitp) - 1);
+
+ if (state->acc == 0)
fill_acc(strm);
+#ifdef AEC_HAVE___BUILTIN_CLZL
+ fs = __builtin_clzll(state->acc) - (64 - state->bitp);
+ state->bitp -= fs + 1;
+#else
state->bitp--;
while ((state->acc & (1ULL << state->bitp)) == 0) {
state->bitp--;
fs++;
}
-
+#endif
return fs;
}