On Wed, Feb 25, 2015 at 07:09:26PM -0800, Matt Turner wrote: > On Wed, Feb 25, 2015 at 7:03 PM, Jonathan Gray <j...@jsg.id.au> wrote: > > On Wed, Feb 25, 2015 at 06:53:14PM -0800, Matt Turner wrote: > >> On Wed, Feb 25, 2015 at 5:37 PM, Jonathan Gray <j...@jsg.id.au> wrote: > >> > If it isn't going to be configure checks could someone merge the > >> > original patch in this thread? > >> > >> I committed > >> > >> commit 3492e88090d2d0c0bfbc934963b8772b45fc8880 > >> Author: Matt Turner <matts...@gmail.com> > >> Date: Fri Feb 20 18:46:43 2015 -0800 > >> > >> gallium/util: Use HAVE___BUILTIN_* macros. > >> > >> Reviewed-by: Eric Anholt <e...@anholt.net> > >> Reviewed-by: Jose Fonseca <jfons...@vmware.com> > >> > >> which switched over a bunch of preprocessor checks around __builtin* > >> calls to use the macros defined by autotools. > >> > >> So I think cleaning it up to use __builtin_ffs* first #ifdef > >> HAVE___BUILTIN_* can go forward now. > > > > Yes but there is no HAVE_FFSLL for constructs like > > > > #if !defined(HAVE_FFSLL) && defined(HAVE___BUILTIN_FFSLL) > > > > or is it ok to always use the builtin? > > I think the question is whether it's okay to always use the builtin if > it's available (as opposed to libc functions). I think the answer to > that is yes.
So in that case how about the following? Or is it going to break the android scons build? From cba39ba72115e57d262cb4b099c4e72106f01812 Mon Sep 17 00:00:00 2001 From: Jonathan Gray <j...@jsg.id.au> Date: Thu, 26 Feb 2015 14:46:45 +1100 Subject: [PATCH] gallium/util: use ffs* builtins if available Required to build on OpenBSD which doesn't have ffsll in libc. Signed-off-by: Jonathan Gray <j...@jsg.id.au> --- src/gallium/auxiliary/util/u_math.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index b4a65e4..5bc9b97 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -384,9 +384,6 @@ unsigned ffs( unsigned u ) return i; } -#elif defined(__MINGW32__) || defined(PIPE_OS_ANDROID) -#define ffs __builtin_ffs -#define ffsll __builtin_ffsll #endif #endif /* FFS_DEFINED */ @@ -435,7 +432,11 @@ util_last_bit_signed(int i) static INLINE int u_bit_scan(unsigned *mask) { +#if defined(HAVE___BUILTIN_FFS) + int i = __builtin_ffs(*mask) - 1; +#else int i = ffs(*mask) - 1; +#endif *mask &= ~(1 << i); return i; } @@ -444,7 +445,11 @@ u_bit_scan(unsigned *mask) static INLINE int u_bit_scan64(uint64_t *mask) { +#if defined(HAVE___BUILTIN_FFSLL) + int i = __builtin_ffsll(*mask) - 1; +#else int i = ffsll(*mask) - 1; +#endif *mask &= ~(1llu << i); return i; } -- 2.3.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev