opcodes: make use of __builtin_popcount when available
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 21 Jun 2021 14:10:14 +0000 (15:10 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 22 Jun 2021 08:53:13 +0000 (09:53 +0100)
commit46b8b3d6f87c0c65d908e3f6c83532d7286868b9
tree57add5491a7bfe6be32c0127311fbc4b544e1421
parentded5cb94441b2a47a75a0b1d26218f0d5e3dca28
opcodes: make use of __builtin_popcount when available

This commit provides a small performance improvement when starting up
CGEN based disassemblers by making use of __builtin_popcount.

The #if check used in this commit was copied from bfd/elf32-arm.c
where __builtin_popcount is also used.

I ran into this code while investigating some GDB tests that would
occasionally timeout.  One of the reason these tests were having
problems is that the m16c and m32c disassemblers take so long to
initialise themselves.  Speeding up count_decodable_bits helps, but is
not a total solution.  Still, this felt like an easy win which added
minimal extra complexity, so I figure its worth doing.

opcodes/ChangeLog:

* cgen-dis.c (count_decodable_bits): Use __builtin_popcount when
available.
opcodes/ChangeLog
opcodes/cgen-dis.c