diff options
| author | 2019-03-15 22:50:57 -0400 | |
|---|---|---|
| committer | 2019-03-27 14:33:44 -0400 | |
| commit | 522957f9f302b9521507a365da5871849a03594d (patch) | |
| tree | 6d5d9626cb3b5e58fe6fc344917df96d16e52dc8 /src/common/bit_util.h | |
| parent | Merge pull request #2285 from lioncash/unused-struct (diff) | |
| download | yuzu-522957f9f302b9521507a365da5871849a03594d.tar.gz yuzu-522957f9f302b9521507a365da5871849a03594d.tar.xz yuzu-522957f9f302b9521507a365da5871849a03594d.zip | |
Implement a MultiLevelQueue
Diffstat (limited to '')
| -rw-r--r-- | src/common/bit_util.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/common/bit_util.h b/src/common/bit_util.h index 1eea17ba1..14e53c273 100644 --- a/src/common/bit_util.h +++ b/src/common/bit_util.h | |||
| @@ -58,4 +58,23 @@ inline u64 CountLeadingZeroes64(u64 value) { | |||
| 58 | return __builtin_clzll(value); | 58 | return __builtin_clzll(value); |
| 59 | } | 59 | } |
| 60 | #endif | 60 | #endif |
| 61 | |||
| 62 | inline u32 CountTrailingZeroes32(u32 value) { | ||
| 63 | u32 count = 0; | ||
| 64 | while (((value >> count) & 0xf) == 0 && count < 32) | ||
| 65 | count += 4; | ||
| 66 | while (((value >> count) & 1) == 0 && count < 32) | ||
| 67 | count++; | ||
| 68 | return count; | ||
| 69 | } | ||
| 70 | |||
| 71 | inline u64 CountTrailingZeroes64(u64 value) { | ||
| 72 | u64 count = 0; | ||
| 73 | while (((value >> count) & 0xf) == 0 && count < 64) | ||
| 74 | count += 4; | ||
| 75 | while (((value >> count) & 1) == 0 && count < 64) | ||
| 76 | count++; | ||
| 77 | return count; | ||
| 78 | } | ||
| 79 | |||
| 61 | } // namespace Common | 80 | } // namespace Common |