xref: /freebsd/sys/contrib/dpdk_rte_lpm/rte_branch_prediction.h (revision 537d134373141c2d25bfb24af6d661d0e6102927)
1*537d1343SAlexander V. Chernikov /* SPDX-License-Identifier: BSD-3-Clause
2*537d1343SAlexander V. Chernikov  * Copyright(c) 2010-2014 Intel Corporation
3*537d1343SAlexander V. Chernikov  */
4*537d1343SAlexander V. Chernikov 
5*537d1343SAlexander V. Chernikov /**
6*537d1343SAlexander V. Chernikov  * @file
7*537d1343SAlexander V. Chernikov  * Branch Prediction Helpers in RTE
8*537d1343SAlexander V. Chernikov  */
9*537d1343SAlexander V. Chernikov 
10*537d1343SAlexander V. Chernikov #ifndef _RTE_BRANCH_PREDICTION_H_
11*537d1343SAlexander V. Chernikov #define _RTE_BRANCH_PREDICTION_H_
12*537d1343SAlexander V. Chernikov 
13*537d1343SAlexander V. Chernikov /**
14*537d1343SAlexander V. Chernikov  * Check if a branch is likely to be taken.
15*537d1343SAlexander V. Chernikov  *
16*537d1343SAlexander V. Chernikov  * This compiler builtin allows the developer to indicate if a branch is
17*537d1343SAlexander V. Chernikov  * likely to be taken. Example:
18*537d1343SAlexander V. Chernikov  *
19*537d1343SAlexander V. Chernikov  *   if (likely(x > 1))
20*537d1343SAlexander V. Chernikov  *      do_stuff();
21*537d1343SAlexander V. Chernikov  *
22*537d1343SAlexander V. Chernikov  */
23*537d1343SAlexander V. Chernikov #ifndef likely
24*537d1343SAlexander V. Chernikov #define likely(x)	__builtin_expect(!!(x), 1)
25*537d1343SAlexander V. Chernikov #endif /* likely */
26*537d1343SAlexander V. Chernikov 
27*537d1343SAlexander V. Chernikov /**
28*537d1343SAlexander V. Chernikov  * Check if a branch is unlikely to be taken.
29*537d1343SAlexander V. Chernikov  *
30*537d1343SAlexander V. Chernikov  * This compiler builtin allows the developer to indicate if a branch is
31*537d1343SAlexander V. Chernikov  * unlikely to be taken. Example:
32*537d1343SAlexander V. Chernikov  *
33*537d1343SAlexander V. Chernikov  *   if (unlikely(x < 1))
34*537d1343SAlexander V. Chernikov  *      do_stuff();
35*537d1343SAlexander V. Chernikov  *
36*537d1343SAlexander V. Chernikov  */
37*537d1343SAlexander V. Chernikov #ifndef unlikely
38*537d1343SAlexander V. Chernikov #define unlikely(x)	__builtin_expect(!!(x), 0)
39*537d1343SAlexander V. Chernikov #endif /* unlikely */
40*537d1343SAlexander V. Chernikov 
41*537d1343SAlexander V. Chernikov #endif /* _RTE_BRANCH_PREDICTION_H_ */
42