Tool and Library Support
A number of compiler and library vendors supply compiler intrinsics or library functions to perform find first set and/or related operations, which are frequently implemented in terms of the hardware instructions above:
Tool/library | Name | Type | Input type(s) | Notes | Result for zero input |
---|---|---|---|---|---|
POSIX.1 compliant libc 4.3BSD libc OS X 10.3 libc |
ffs |
Library function | int | Includes glibc. POSIX does not supply the complementary log base 2 / clz. |
0 |
FreeBSD 5.3 libc OS X 10.4 libc |
ffsl |
Library function | int, long | fls ("find last set") computes (log base 2) + 1. | 0 |
FreeBSD 7.1 libc | ffsll, flsll |
Library function | long long | 0 | |
GCC 3.2.2 | __builtin_ffs |
Built-in functions | unsigned int, unsigned long, unsigned long long |
Possibly available before 3.2.2. | 0 |
__builtin_ctz |
undefined | ||||
__builtin_clz |
undefined | ||||
Visual Studio 2005 | _BitScanForward _BitScanReverse |
Compiler intrinsics | unsigned long, unsigned __int64 |
Returns zero on zero input, unlike x86 bsf/bsr | 0 |
Visual Studio 2008 | __lzcnt |
Compiler intrinsic | unsigned short, unsigned int, unsigned __int64 |
Relies on AMD-only lzcnt instruction | Input size in bits |
Intel C++ Compiler | _bit_scan_forward |
Compiler intrinsics | int | undefined | |
NVIDIA CUDA | __clz |
Functions | 32-bit, 64-bit | Compiles to fewer instructions on the GeForce 400 Series | 32 |
__ffs |
0 | ||||
LLVM | llvm.ctlz.* llvm.cttz.* |
Intrinsic | 8, 16, 32, 64, 256 | LLVM assembly language | Input size if arg 2 is 0, else undefined |
Read more about this topic: Find First Set
Famous quotes containing the words tool, library and/or support:
“A broken altar, Lord, thy servant rears,
Made of a heart, and cemented with tears:
Whose parts are as thy hand did frame;
No workmans tool hath touched the same.”
—George Herbert (15931633)
“... as beauty is in the eye of the beholder, the ideal library is in the wish of its maker.”
—Carolyn Wells (18621942)
“... the outcome of the Clarence Thomas hearings and his subsequent appointment to the Supreme Court shows how misguided, narrow notions of racial solidarity that suppress dissent and critique can lead black folks to support individuals who will not protect their rights.”
—bell hooks (b. c. 1955)