base: Add M5_LIKELY and M5_UNLIKELY macros to compiler.hh.
authorGabe Black <gabeblack@google.com>
Fri, 18 Sep 2020 03:44:47 +0000 (20:44 -0700)
committerGabe Black <gabeblack@google.com>
Sun, 20 Sep 2020 01:03:24 +0000 (01:03 +0000)
The clang/gcc implementation uses the nonstandard __builtin_expect(). In
C++20, new standard attributes can be used instead. We can't use those
yet though.

Change-Id: Idd2541a7eca0d97ac6c643abbf2910cbc343d7e5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/34816
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/base/compiler.hh

index 38736ca5b58c5954ab1d1d4e58883b3edca57687..1eaebc80259bcb85f1ce73783eb453f864ec017b 100644 (file)
@@ -56,6 +56,8 @@
 #  define M5_UNREACHABLE __builtin_unreachable()
 #  define M5_PUBLIC __attribute__ ((visibility ("default")))
 #  define M5_LOCAL __attribute__ ((visibility ("hidden")))
+#  define M5_LIKELY(cond) __builtin_expect(!!(cond), 1)
+#  define M5_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
 #endif
 
 #if defined(__clang__)