From: TimePath <andrew.hardaker1995@gmail.com>
Date: Tue, 12 May 2015 04:03:37 +0000 (+1000)
Subject: Branchless BITSET
X-Git-Tag: xonotic-v0.8.1~53^2~14
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=59a9dc3b623aab62b0e8ce120cc88780c3dbc941;p=xonotic%2Fxonotic-data.pk3dir.git

Branchless BITSET
Kudos to graphitemaster
---

diff --git a/qcsrc/common/util-pre.qh b/qcsrc/common/util-pre.qh
index 91094e11f..fbc43bdc5 100644
--- a/qcsrc/common/util-pre.qh
+++ b/qcsrc/common/util-pre.qh
@@ -80,6 +80,10 @@
 #define MAP_20(f, it, ...) f(it)MAP_19(f, __VA_ARGS__)
 
 #define BIT(n) (1 << (n))
-#define BITSET(var, mask, flag) (flag ? (var) | (mask) : (var) &~ (mask))
+#ifndef BRANCHLESS_BITSET
+    #define BITSET(var, mask, flag) (flag ? (var) | (mask) : (var) &~ (mask))
+#else
+    #define BITSET(var, mask, flag) ((var) ^ (-(flag) ^ (var)) & (mask))
+#endif
 
 #endif