add zbb check macro

This commit is contained in:
anthony-zy
2025-11-10 10:37:19 +08:00
parent e92cb6ae8a
commit 30dbdc2728
2 changed files with 15 additions and 4 deletions

View File

@@ -304,8 +304,8 @@ class Bits {
void operator=(const Bits&);
};
// In RISC-V, CLZ is supported by instructions from the ZBB bit-manipulation extension.
#if HAVE_BUILTIN_CTZ
inline int Bits::Log2FloorNonZero(uint32_t n) {
assert(n != 0);
// (31 ^ x) is equivalent to (31 - x) for x in [0, 31]. An easy proof
@@ -393,6 +393,7 @@ inline int Bits::FindLSBSetNonZero(uint32_t n) {
#endif // End portable versions.
// the Zbb bit-manipulation extension where ctz is guaranteed.
#if HAVE_BUILTIN_CTZ
inline int Bits::FindLSBSetNonZero64(uint64_t n) {