diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-03-16 17:46:46 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-03-16 17:46:46 -0700 |
commit | 3245c24d1fd59c2d4a969570743f764022eb5033 (patch) | |
tree | 29ddc0ece0da6fab8c6045ff46401df1104235e8 /src/support/bits.cpp | |
parent | 41173e4fa1469a3b5a1d99da5f75148be89d5b9a (diff) | |
download | binaryen-3245c24d1fd59c2d4a969570743f764022eb5033.tar.gz binaryen-3245c24d1fd59c2d4a969570743f764022eb5033.tar.bz2 binaryen-3245c24d1fd59c2d4a969570743f764022eb5033.zip |
add Log2 and Pow2 support methods
Diffstat (limited to 'src/support/bits.cpp')
-rw-r--r-- | src/support/bits.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/support/bits.cpp b/src/support/bits.cpp index c1de4da8b..3d03b100c 100644 --- a/src/support/bits.cpp +++ b/src/support/bits.cpp @@ -15,6 +15,7 @@ */ #define wasm_support_bits_definitions +#include "../compiler-support.h" #include "support/bits.h" namespace wasm { @@ -99,4 +100,28 @@ int CountLeadingZeroes<uint64_t>(uint64_t v) { : 32 + CountLeadingZeroes((uint32_t)v); } +uint32_t Log2(uint32_t v) { + switch (v) { + default: WASM_UNREACHABLE(); + case 1: return 0; + case 2: return 1; + case 4: return 2; + case 8: return 3; + case 16: return 4; + case 32: return 5; + } +} + +uint32_t Pow2(uint32_t v) { + switch (v) { + default: WASM_UNREACHABLE(); + case 0: return 1; + case 1: return 2; + case 2: return 4; + case 3: return 8; + case 4: return 16; + case 5: return 32; + } +} + } // namespace wasm |