diff --git a/cogl/cogl-mutter-config.h.in b/cogl/cogl-mutter-config.h.in index 83e3a9eda..cce8e6512 100644 --- a/cogl/cogl-mutter-config.h.in +++ b/cogl/cogl-mutter-config.h.in @@ -6,9 +6,3 @@ /* Have GLES 2.0 for rendering */ #undef HAVE_COGL_GLES2 - -/* Define to 1 if you have the `ffs' function. */ -#undef HAVE_FFS - -/* Define to 1 if you have the `memmem' function. */ -#undef HAVE_MEMMEM diff --git a/cogl/cogl/cogl-util.c b/cogl/cogl/cogl-util.c index f26c8961a..c4cdb57f7 100644 --- a/cogl/cogl/cogl-util.c +++ b/cogl/cogl/cogl-util.c @@ -67,70 +67,6 @@ _cogl_util_one_at_a_time_mix (unsigned int hash) return hash; } -/* The 'ffs' function is part of C99 so it isn't always available */ -#ifndef HAVE_FFS - -int -_cogl_util_ffs (int num) -{ - int i = 1; - - if (num == 0) - return 0; - - while ((num & 1) == 0) - { - num >>= 1; - i++; - } - - return i; -} -#endif /* HAVE_FFS */ - -/* The 'ffsl' is non-standard but when building with GCC we'll use its - builtin instead */ -#ifndef COGL_UTIL_HAVE_BUILTIN_FFSL - -int -_cogl_util_ffsl_wrapper (long int num) -{ - int i = 1; - - if (num == 0) - return 0; - - while ((num & 1) == 0) - { - num >>= 1; - i++; - } - - return i; -} - -#endif /* COGL_UTIL_HAVE_BUILTIN_FFSL */ - -#ifndef COGL_UTIL_HAVE_BUILTIN_POPCOUNTL - -const unsigned char -_cogl_util_popcount_table[256] = - { - 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, - 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, - 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, - 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, - 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, - 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 - }; - -#endif /* COGL_UTIL_HAVE_BUILTIN_POPCOUNTL */ - /* tests/conform/test-bitmask.c tests some cogl internals and includes this * file directly but since these functions depend on other internal Cogl * symbols we hide them from test-bitmask.c @@ -261,26 +197,4 @@ _cogl_util_pixel_format_from_masks (unsigned long r_mask, return image_format; } -#ifndef HAVE_MEMMEM - -char * -_cogl_util_memmem (const void *haystack, - size_t haystack_len, - const void *needle, - size_t needle_len) -{ - size_t i; - - if (needle_len > haystack_len) - return NULL; - - for (i = 0; i <= haystack_len - needle_len; i++) - if (!memcmp ((const char *) haystack + i, needle, needle_len)) - return (char *) haystack + i; - - return NULL; -} - -#endif /* HAVE_MEMMEM */ - #endif /* _COGL_IN_TEST_BITMASK */ diff --git a/cogl/cogl/cogl-util.h b/cogl/cogl/cogl-util.h index a821e55c4..70259d387 100644 --- a/cogl/cogl/cogl-util.h +++ b/cogl/cogl/cogl-util.h @@ -114,75 +114,17 @@ _cogl_util_one_at_a_time_hash (unsigned int hash, unsigned int _cogl_util_one_at_a_time_mix (unsigned int hash); -/* These two builtins are available since GCC 3.4 */ -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) -#define COGL_UTIL_HAVE_BUILTIN_FFSL -#define COGL_UTIL_HAVE_BUILTIN_POPCOUNTL -#define COGL_UTIL_HAVE_BUILTIN_CLZ -#endif -/* The 'ffs' function is part of C99 so it isn't always available */ -#ifdef HAVE_FFS #define _cogl_util_ffs ffs -#else -int -_cogl_util_ffs (int num); -#endif - -/* The 'ffsl' function is non-standard but GCC has a builtin for it - since 3.4 which we can use */ -#ifdef COGL_UTIL_HAVE_BUILTIN_FFSL #define _cogl_util_ffsl __builtin_ffsl -#else -/* If ints and longs are the same size we can just use ffs. Hopefully - the compiler will optimise away this conditional */ -#define _cogl_util_ffsl(x) \ - (sizeof (long int) == sizeof (int) ? _cogl_util_ffs ((int) x) : \ - _cogl_util_ffsl_wrapper (x)) -int -_cogl_util_ffsl_wrapper (long int num); -#endif /* COGL_UTIL_HAVE_BUILTIN_FFSL */ static inline unsigned int _cogl_util_fls (unsigned int n) { -#ifdef COGL_UTIL_HAVE_BUILTIN_CLZ return n == 0 ? 0 : sizeof (unsigned int) * 8 - __builtin_clz (n); -#else - unsigned int v = 1; - - if (n == 0) - return 0; - - while (n >>= 1) - v++; - - return v; -#endif } -#ifdef COGL_UTIL_HAVE_BUILTIN_POPCOUNTL #define _cogl_util_popcountl __builtin_popcountl -#else -extern const unsigned char _cogl_util_popcount_table[256]; - -/* There are many ways of doing popcount but doing a table lookup - seems to be the most robust against different sizes for long. Some - pages seem to claim it's the fastest method anyway. */ -static inline int -_cogl_util_popcountl (unsigned long num) -{ - int i; - int sum = 0; - - /* Let's hope GCC will unroll this loop.. */ - for (i = 0; i < sizeof (num); i++) - sum += _cogl_util_popcount_table[(num >> (i * 8)) & 0xff]; - - return sum; -} - -#endif /* COGL_UTIL_HAVE_BUILTIN_POPCOUNTL */ #define _COGL_RETURN_IF_FAIL(EXPR) g_return_if_fail(EXPR) #define _COGL_RETURN_VAL_IF_FAIL(EXPR, VAL) g_return_val_if_fail(EXPR, VAL) @@ -222,15 +164,7 @@ _cogl_util_pixel_format_from_masks (unsigned long r_mask, #define _COGL_STATIC_ASSERT(EXPRESSION, MESSAGE) \ _Static_assert (EXPRESSION, MESSAGE); -#ifdef HAVE_MEMMEM #define _cogl_util_memmem memmem -#else -char * -_cogl_util_memmem (const void *haystack, - size_t haystack_len, - const void *needle, - size_t needle_len); -#endif static inline void _cogl_util_scissor_intersect (int rect_x0,