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