Find First Set - Tool and Library Support

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
fls, flsl
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
_bit_scan_reverse
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:

    Is it not possible that an individual may be right and a government wrong? Are laws to be enforced simply because they were made? or declared by any number of men to be good, if they are not good? Is there any necessity for a man’s being a tool to perform a deed of which his better nature disapproves?
    Henry David Thoreau (1817–1862)

    The fear of failure is so great, it is no wonder that the desire to do right by one’s children has led to a whole library of books offering advice on how to raise them.
    Bruno Bettelheim (20th century)

    All experience teaches that, whenever there is a great national establishment, employing large numbers of officials, the public must be reconciled to support many incompetent men; for such is the favoritism and nepotism always prevailing in the purlieus of these establishments, that some incompetent persons are always admitted, to the exclusion of many of the worthy.
    Herman Melville (1819–1891)