xref: /openbsd-src/gnu/lib/libiberty/src/ffs.c (revision 20fce977aadac3358da45d5027d7d19cdc03b0fe)
19588ddcfSespie /* ffs -- Find the first bit set in the parameter
29588ddcfSespie 
39588ddcfSespie @deftypefn Supplemental int ffs (int @var{valu})
49588ddcfSespie 
59588ddcfSespie Find the first (least significant) bit set in @var{valu}.  Bits are
69588ddcfSespie numbered from right to left, starting with bit 1 (corresponding to the
79588ddcfSespie value 1).  If @var{valu} is zero, zero is returned.
89588ddcfSespie 
99588ddcfSespie @end deftypefn
109588ddcfSespie 
119588ddcfSespie */
129588ddcfSespie 
139588ddcfSespie int
ffs(register int valu)14*20fce977Smiod ffs (register int valu)
159588ddcfSespie {
169588ddcfSespie   register int bit;
179588ddcfSespie 
189588ddcfSespie   if (valu == 0)
199588ddcfSespie     return 0;
209588ddcfSespie 
219588ddcfSespie   for (bit = 1; !(valu & 1); bit++)
229588ddcfSespie   	valu >>= 1;
239588ddcfSespie 
249588ddcfSespie   return bit;
259588ddcfSespie }
269588ddcfSespie 
27