xref: /dpdk/lib/eal/include/rte_branch_prediction.h (revision ef64c2f311f66bf8fe563bf7777e5dba72fc57e6)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 /**
6  * @file
7  * Branch Prediction Helpers in RTE
8  */
9 
10 #ifndef _RTE_BRANCH_PREDICTION_H_
11 #define _RTE_BRANCH_PREDICTION_H_
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /**
18  * Check if a branch is likely to be taken.
19  *
20  * This compiler builtin allows the developer to indicate if a branch is
21  * likely to be taken. Example:
22  *
23  *   if (likely(x > 1))
24  *      do_stuff();
25  *
26  */
27 #ifndef likely
28 #define likely(x)	__builtin_expect(!!(x), 1)
29 #endif /* likely */
30 
31 /**
32  * Check if a branch is unlikely to be taken.
33  *
34  * This compiler builtin allows the developer to indicate if a branch is
35  * unlikely to be taken. Example:
36  *
37  *   if (unlikely(x < 1))
38  *      do_stuff();
39  *
40  */
41 #ifndef unlikely
42 #define unlikely(x)	__builtin_expect(!!(x), 0)
43 #endif /* unlikely */
44 
45 #ifdef __cplusplus
46 }
47 #endif
48 
49 #endif /* _RTE_BRANCH_PREDICTION_H_ */
50