diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2013-03-05 15:48:57 -0600 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2013-03-05 15:48:57 -0600 |
| commit | fe3a54d7fd8c85960fed04d28d5dedbc1d94845d (patch) | |
| tree | 7942c99de3dc5212b16af991364de97789a8586d /Source/Core | |
| parent | 10d57a3402cc698cffc4bf3299113073264eb314 (diff) | |
Buildfix!
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Common/Src/MathUtil.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Source/Core/Common/Src/MathUtil.h b/Source/Core/Common/Src/MathUtil.h index c6c29ff368..ec9c9cc8a3 100644 --- a/Source/Core/Common/Src/MathUtil.h +++ b/Source/Core/Common/Src/MathUtil.h @@ -152,18 +152,17 @@ float MathFloatVectorSum(const std::vector<float>&); #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) #define ROUND_DOWN(x, a) ((x) & ~((a) - 1)) -template <typename T> -T Log2(T val) +// Rounds down. 0 -> undefined +inline u64 Log2(u64 val) { -#if defined(_M_X64) - T result; - asm - ( - "bsr %1, %0" - : "=r"(result) - : "r"(val) - ); +#if defined(__GNUC__) + return 63 - __builtin_clzll(val); + +#elif defined(_MSC_VER) + unsigned long result = -1; + _BitScanReverse64(&result, val); return result; + #else T result = -1; while (val != 0) |
