xref: /freebsd/sys/contrib/dpdk_rte_lpm/rte_branch_prediction.h (revision a03411e84728e9b267056fd31c7d1d9d1dc1b01e)
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 /**
14  * Check if a branch is likely to be taken.
15  *
16  * This compiler builtin allows the developer to indicate if a branch is
17  * likely to be taken. Example:
18  *
19  *   if (likely(x > 1))
20  *      do_stuff();
21  *
22  */
23 #ifndef likely
24 #define likely(x)	__builtin_expect(!!(x), 1)
25 #endif /* likely */
26 
27 /**
28  * Check if a branch is unlikely to be taken.
29  *
30  * This compiler builtin allows the developer to indicate if a branch is
31  * unlikely to be taken. Example:
32  *
33  *   if (unlikely(x < 1))
34  *      do_stuff();
35  *
36  */
37 #ifndef unlikely
38 #define unlikely(x)	__builtin_expect(!!(x), 0)
39 #endif /* unlikely */
40 
41 #endif /* _RTE_BRANCH_PREDICTION_H_ */
42