summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2021-10-27 18:19:43 +0200
committerFlorin Coras <florin.coras@gmail.com>2021-11-02 04:44:06 +0000
commit31ee6f5d3069c23b4a11005b95ee3744b9720a17 (patch)
tree4e0b0a9504b8cb527ba739d9026c3f8fde8264ae
parent21aa673412b2abc1e113dae08e33eb8992308862 (diff)
vppinfra: add CLIB_ASSUME() macro
This macro privides a way to tell compiler that it is safe to assume that specified expression is true so it can optimize code accordingly. i.e. CLIB_ASSUME (n < 3); while (n) { /* ... */ } Will tell compiler that n is never going to be >= 3 so instead of creating loop it will just unroll loop 2 times. Type: improvement Change-Id: I718a9b95ff7980d7ac68eb9a88357a4ab6eee74a Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r--src/vppinfra/clib.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/vppinfra/clib.h b/src/vppinfra/clib.h
index 81b59e21a0b..52e721768bc 100644
--- a/src/vppinfra/clib.h
+++ b/src/vppinfra/clib.h
@@ -124,6 +124,13 @@
#define PREDICT_FALSE(x) __builtin_expect((x),0)
#define PREDICT_TRUE(x) __builtin_expect((x),1)
#define COMPILE_TIME_CONST(x) __builtin_constant_p (x)
+#define CLIB_ASSUME(x) \
+ do \
+ { \
+ if (!(x)) \
+ __builtin_unreachable (); \
+ } \
+ while (0)
/*
* Compiler barrier