]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: tools: fix direction of my_ffsl()
authorWilly Tarreau <w@1wt.eu>
Mon, 29 Oct 2018 15:09:57 +0000 (16:09 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 29 Oct 2018 15:09:57 +0000 (16:09 +0100)
Commit 27346b01a ("OPTIM: tools: optimize my_ffsl() for x86_64") optimized
my_ffsl() for intensive use cases in the scheduler, but as half of the times
I got it wrong so it counted bits the reverse way. It doesn't matter for the
scheduler nor fd cache but it broke cpu-map with threads which heavily relies
on proper ordering.

We should probably consider dropping support for gcc < 3.4 and switching
to builtins for these ones, though often they are as ambiguous.

No backport is needed.

include/common/standard.h

index 3f8d2d0729c9d499614e9bbcdb53c9bf56392146..53d7f9f3b3b4433ac4ecff251600bb8e770f17ac 100644 (file)
@@ -815,7 +815,7 @@ static inline unsigned int my_ffsl(unsigned long a)
        unsigned long cnt;
 
 #if defined(__x86_64__)
-       __asm__("bsr %1,%0\n" : "=r" (cnt) : "rm" (a));
+       __asm__("bsf %1,%0\n" : "=r" (cnt) : "rm" (a));
        cnt++;
 #else