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