Skip to content

Commit 7da8121

Browse files
committed
toolchain: Introduce likely() and unlikely() macros
The likely() and unlikely() macros may be used as hints to the compiler to indicate whether a branch is likely or unlikely to be taken so that it may generate code accordingly. Signed-off-by: Peter Mitsis <peter.mitsis@gmail.com>
1 parent 57c16bd commit 7da8121

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

code/globalincs/toolchain/clang.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,6 @@
6161
#define PTRDIFF_T_ARG "%zd"
6262

6363
#define NOEXCEPT noexcept
64+
65+
#define likely(x) __builtin_expect((long) !!(x), 1L)
66+
#define unlikely(x) __builtin_expect((long) !!(x), 0L)

code/globalincs/toolchain/gcc.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,6 @@
6060
#define PTRDIFF_T_ARG "%zd"
6161

6262
#define NOEXCEPT noexcept
63+
64+
#define likely(x) __builtin_expect((long) !!(x), 1L)
65+
#define unlikely(x) __builtin_expect((long) !!(x), 0L)

code/globalincs/toolchain/mingw.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,6 @@
5555
#define PTRDIFF_T_ARG "%zd"
5656

5757
#define NOEXCEPT noexcept
58+
59+
#define likely(x) __builtin_expect((long) !!(x), 1L)
60+
#define unlikely(x) __builtin_expect((long) !!(x), 0L)

code/globalincs/toolchain/msvc.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,6 @@
7979
#else
8080
# define NOEXCEPT noexcept
8181
#endif
82+
83+
#define likely(x)
84+
#define unlikely(x)

0 commit comments

Comments
 (0)