tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ffs64 used with ilog2 for sizes <= 4 bytes?



In article <74cb71889b610f96103c5458a2706ef7%helkyn.dyndns.org@localhost>,
Jean-Yves Migeon  <jeanyves.migeon%free.fr@localhost> wrote:
> Hi all,
>
> Is ilog2() supposed to use fls64(), even for 4 bytes long types?
>
> The test looks rather wrong to me, but before committing anything 
> really stupid... 64 bits ops on 32 bits systems are a tad more 
> heavyweight.
>
> Index: sys/sys/bitops.h
> ===================================================================
> RCS file: /cvsroot/src/sys/sys/bitops.h,v
> retrieving revision 1.7
> diff -u -p -r1.7 bitops.h
> --- sys/sys/bitops.h    21 Mar 2010 14:28:15 -0000      1.7
> +++ sys/sys/bitops.h    3 May 2011 15:02:46 -0000
> @@ -255,7 +255,7 @@ fls64(uint64_t _n)
>         _ilog2_helper(_n,  2) \
>         _ilog2_helper(_n,  1) \
>         _ilog2_helper(_n,  0) \
> -       -1) : ((sizeof(_n) >= 4 ? fls64(_n) : fls32(_n)) - 1) \
> +       -1) : ((sizeof(_n) > 4 ? fls64(_n) : fls32(_n)) - 1) \
>  )
> 

By bad, fix it...

christos



Home | Main Index | Thread Index | Old Index