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