* lib/ffsl.h: Include <intrin.h>.
(ffs): Define as inline function, like in lib/ffs.c.
+2020-08-03 Bruno Haible <bruno@clisp.org>
+
+ ffsll: Optimize for MSVC in 32-bit mode.
+ * lib/ffsl.h: Include <intrin.h>.
+ (ffs): Define as inline function, like in lib/ffs.c.
+
2020-08-03 Bruno Haible <bruno@clisp.org>
ffs: Optimize for MSVC.
#include <limits.h>
#include <strings.h>
+#if defined _MSC_VER
+# include <intrin.h>
+/* Copied from ffs.c. */
+static inline int
+ffs (int i)
+{
+ /* _BitScanForward
+ <https://docs.microsoft.com/en-us/cpp/intrinsics/bitscanforward-bitscanforward64> */
+ unsigned long bit;
+ if (_BitScanForward (&bit, i))
+ return bit + 1;
+ else
+ return 0;
+}
+#endif
+
#if !defined FUNC || !defined TYPE
# error
#endif