Common: add macros for assisting branch prediction
This commit is contained in:
parent
16582a0459
commit
d398e9ef61
|
@ -15,7 +15,7 @@
|
||||||
#define __has_feature(x) 0
|
#define __has_feature(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SVN version number
|
// Git version number
|
||||||
extern const char *scm_desc_str;
|
extern const char *scm_desc_str;
|
||||||
extern const char *scm_branch_str;
|
extern const char *scm_branch_str;
|
||||||
extern const char *scm_rev_str;
|
extern const char *scm_rev_str;
|
||||||
|
@ -37,6 +37,28 @@ extern const char *netplay_dolphin_ver;
|
||||||
#define UNUSED
|
#define UNUSED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || __clang__
|
||||||
|
#define EXPECT(x, y) __builtin_expect(x, y)
|
||||||
|
#define LIKELY(x) __builtin_expect(!!(x), 1)
|
||||||
|
#define UNLIKELY(x) __builtin_expect(!!(x), 0)
|
||||||
|
// Careful, wrong assumptions result in undefined behavior!
|
||||||
|
#define UNREACHABLE __builtin_unreachable()
|
||||||
|
// Careful, wrong assumptions result in undefined behavior!
|
||||||
|
#define ASSUME(x) do { if (!x) __builtin_unreachable(); } while (0)
|
||||||
|
#else
|
||||||
|
#define EXPECT(x, y) (x)
|
||||||
|
#define LIKELY(x) (x)
|
||||||
|
#define UNLIKELY(x) (x)
|
||||||
|
// Careful, wrong assumptions result in undefined behavior!
|
||||||
|
#define UNREACHABLE ASSUME(0)
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
// Careful, wrong assumptions result in undefined behavior!
|
||||||
|
#define ASSUME(x) __assume(x)
|
||||||
|
#else
|
||||||
|
#define ASSUME(x) do { void(x); } while (0)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define STACKALIGN
|
#define STACKALIGN
|
||||||
|
|
||||||
#if __cplusplus >= 201103 || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__)
|
#if __cplusplus >= 201103 || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
|
Loading…
Reference in New Issue