]> git.ipfire.org Git - thirdparty/haproxy.git/commit
IMPORT: ebtree: implement and use flsnz_long() to count bits
authorWilly Tarreau <w@1wt.eu>
Sun, 17 Dec 2023 15:43:25 +0000 (16:43 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 6 Jan 2024 12:35:13 +0000 (13:35 +0100)
commit9afe3b59a7d8d57ad315155b012201c97ea75f18
tree12a0c8db70f4e48809afba558b66a5f28f94be21
parent57f8a4e8795be1cd983297c42f2b4adc794c7b4d
IMPORT: ebtree: implement and use flsnz_long() to count bits

The asm code shows multiple conversions. Gcc has always been terribly
bad at dealing with chars, which are constantly converted to ints for
every operation and zero-extended after each operation. But here in
addition there are conversions before and after the flsnz(). Let's
just mark the variables as long and use flsnz_long() to process them
without any conversion. This shortens the code and makes it slightly
faster.

Note that the fls operations could make use of __builtin_clz() on
gcc 4.6 and above, and it would be useful to implement native support
for ARM as well.

This is cbtree commit 1f0f83ba26f2279c8bba0080a2e09a803dddde47.
This is ebtree commit 9c38dcae22a84f0b0d9c5a56facce1ca2ad0aaef.
include/import/ebtree.h