[Mesa-dev] [PATCH 1/2] gallium: include util/macros.h

Jose Fonseca jfonseca at vmware.com
Thu Feb 12 14:04:54 PST 2015


LGTM.

On 12/02/15 17:31, Tobias Klausmann wrote:
> The most common macros are defined there, no use to duplicate these
> Clean up the already redefinded macros
>
> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
> ---
>   src/gallium/include/pipe/p_compiler.h | 57 ++---------------------------------
>   1 file changed, 2 insertions(+), 55 deletions(-)
>
> diff --git a/src/gallium/include/pipe/p_compiler.h b/src/gallium/include/pipe/p_compiler.h
> index fb018bf..cc4f444 100644
> --- a/src/gallium/include/pipe/p_compiler.h
> +++ b/src/gallium/include/pipe/p_compiler.h
> @@ -33,6 +33,8 @@
>
>   #include "p_config.h"
>
> +#include "util/macros.h"
> +
>   #include <stdlib.h>
>   #include <string.h>
>   #include <stddef.h>
> @@ -204,61 +206,6 @@ void _ReadWriteBarrier(void);
>
>   #endif
>
> -
> -/* You should use these macros to mark if blocks where the if condition
> - * is either likely to be true, or unlikely to be true.
> - *
> - * This will inform human readers of this fact, and will also inform
> - * the compiler, who will in turn inform the CPU.
> - *
> - * CPUs often start executing code inside the if or the else blocks
> - * without knowing whether the condition is true or not, and will have
> - * to throw the work away if they find out later they executed the
> - * wrong part of the if.
> - *
> - * If these macros are used, the CPU is more likely to correctly predict
> - * the right path, and will avoid speculatively executing the wrong branch,
> - * thus not throwing away work, resulting in better performance.
> - *
> - * In light of this, it is also a good idea to mark as "likely" a path
> - * which is not necessarily always more likely, but that will benefit much
> - * more from performance improvements since it is already much faster than
> - * the other path, or viceversa with "unlikely".
> - *
> - * Example usage:
> - * if(unlikely(do_we_need_a_software_fallback()))
> - *    do_software_fallback();
> - * else
> - *    render_with_gpu();
> - *
> - * The macros follow the Linux kernel convention, and more examples can
> - * be found there.
> - *
> - * Note that profile guided optimization can offer better results, but
> - * needs an appropriate coverage suite and does not inform human readers.
> - */
> -#ifndef likely
> -#  if defined(__GNUC__)
> -#    define likely(x)   __builtin_expect(!!(x), 1)
> -#    define unlikely(x) __builtin_expect(!!(x), 0)
> -#  else
> -#    define likely(x)   (x)
> -#    define unlikely(x) (x)
> -#  endif
> -#endif
> -
> -
> -/**
> - * Static (compile-time) assertion.
> - * Basically, use COND to dimension an array.  If COND is false/zero the
> - * array size will be -1 and we'll get a compilation error.
> - */
> -#define STATIC_ASSERT(COND) \
> -   do { \
> -      (void) sizeof(char [1 - 2*!(COND)]); \
> -   } while (0)
> -
> -
>   #if defined(__cplusplus)
>   }
>   #endif
>



More information about the mesa-dev mailing list