[Mesa-dev] [PATCH 02/14] util: added ffsll() function
Jason Ekstrand
jason at jlekstrand.net
Fri Aug 28 18:36:52 PDT 2015
On Aug 28, 2015 2:31 PM, "Brian Paul" <brianp at vmware.com> wrote:
>
> v2: fix errant _GNU_SOURCE test, per Matt Turner.
> ---
> src/gallium/auxiliary/util/u_math.h | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/src/gallium/auxiliary/util/u_math.h
b/src/gallium/auxiliary/util/u_math.h
> index 56bd185..c551974 100644
> --- a/src/gallium/auxiliary/util/u_math.h
> +++ b/src/gallium/auxiliary/util/u_math.h
> @@ -389,6 +389,26 @@ unsigned ffs( unsigned u )
> #define ffs __builtin_ffs
> #endif
>
> +#ifdef HAVE___BUILTIN_FFSLL
> +#define ffsll __builtin_ffsll
> +#else
> +static inline int
> +ffsll(long long int val)
> +{
> + int bit;
> +
Might be better to do
if (val & 0xffffffff)
return ffs(val &0xffffffff);
else
return ffs(val >> 32);
That may be a little cheaper. I don't know if its actually better but its
one less ffs call (which may cross a library boundary)
--Jason
> + bit = ffs((unsigned) (val & 0xffffffff));
> + if (bit != 0)
> + return bit;
> +
> + bit = ffs((unsigned) (val >> 32));
> + if (bit != 0)
> + return 32 + bit;
> +
> + return 0;
> +}
> +#endif
> +
> #endif /* FFS_DEFINED */
>
> /**
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150828/82895b02/attachment.html>
More information about the mesa-dev
mailing list