diff options
Diffstat (limited to 'disas/libvixl/utils.cc')
-rw-r--r-- | disas/libvixl/utils.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/disas/libvixl/utils.cc b/disas/libvixl/utils.cc index 21965d7a1f..80b132a11e 100644 --- a/disas/libvixl/utils.cc +++ b/disas/libvixl/utils.cc @@ -135,4 +135,17 @@ bool IsPowerOf2(int64_t value) { return (value != 0) && ((value & (value - 1)) == 0); } + +unsigned CountClearHalfWords(uint64_t imm, unsigned reg_size) { + VIXL_ASSERT((reg_size % 8) == 0); + int count = 0; + for (unsigned i = 0; i < (reg_size / 16); i++) { + if ((imm & 0xffff) == 0) { + count++; + } + imm >>= 16; + } + return count; +} + } // namespace vixl |