| #ifndef strings_h | |
| #define strings_h | |
| /* MSVC doesn't define ffs/ffsl. This dummy strings.h header is provided | |
| * for both */ | |
| #ifdef _MSC_VER | |
| # include <intrin.h> | |
| # pragma intrinsic(_BitScanForward) | |
| static __forceinline int ffsl(long x) | |
| { | |
| unsigned long i; | |
| if (_BitScanForward(&i, x)) | |
| return (i + 1); | |
| return (0); | |
| } | |
| static __forceinline int ffs(int x) | |
| { | |
| return (ffsl(x)); | |
| } | |
| #else | |
| # define ffsl(x) __builtin_ffsl(x) | |
| # define ffs(x) __builtin_ffs(x) | |
| #endif | |
| #endif /* strings_h */ |