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

Ganesh Ajjanagadde gajjanag at gmail.com
Thu Feb 25 03:20:09 CET 2016


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)
-- 
2.7.1



More information about the ffmpeg-devel mailing list