[FFmpeg-devel] [PATCH 1/3] lavu/attributes: introduce av_likely, av_unlikely

wm4 nfxjfg at googlemail.com
Thu Feb 25 08:27:34 CET 2016


On Thu, 25 Feb 2016 15:48:17 +1100
Matt Oliver <protogonoi at gmail.com> wrote:

> On 25 February 2016 at 13:20, Ganesh Ajjanagadde <gajjanag at gmail.com> wrote:
> 
> > From: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> >
> > These use __builtin_expect, and may be useful for optimizing nearly
> > certain branches, to yield size and/or speed improvements.
> >
> > Note that this is used in the Linux kernel for the same purpose. For
> > some idea as to potential benefits, see e.g
> > http://blog.man7.org/2012/10/how-much-do-builtinexpect-likely-and.html.
> >
> > Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> > ---
> >  libavutil/attributes.h | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/libavutil/attributes.h b/libavutil/attributes.h
> > index 5c6b9de..1547033 100644
> > --- a/libavutil/attributes.h
> > +++ b/libavutil/attributes.h
> > @@ -58,6 +58,14 @@
> >  #    define av_warn_unused_result
> >  #endif
> >
> > +#if AV_GCC_VERSION_AT_LEAST(3,0)
> > +#    define av_likely(x) __builtin_expect(!!(x), 1)
> > +#    define av_unlikely(x) __builtin_expect(!!(x), 0)
> > +#else
> > +#    define av_likely(x) (x)
> > +#    define av_unlikely(x) (x)
> > +#endif
> > +
> >  #if AV_GCC_VERSION_AT_LEAST(3,1)
> >  #    define av_noinline __attribute__((noinline))
> >  #elif defined(_MSC_VER)
> >  
> 
> Ive used these builtins before and can confirm that they are useful
> (although requires devs to use them obviously). I will also point out that
> these are also supported by ICC/ICL as well.

They also make code ugly as fuck, and are more cargo-cult than anything
else. They might possibly be ok in some very critical parts of the
code, but otherwise not at all.



More information about the ffmpeg-devel mailing list