From c138e6a4b23bf6e34a43e178fb4b09a13944f1d4 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 22 Apr 2010 11:02:56 -0700 Subject: [PATCH] ilog2: optimize use of bsr for x86-64 On x86-64 platforms, we can rely on BSR not changing the destination operand when the input is zero. Signed-off-by: H. Peter Anvin --- ilog2.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ilog2.c b/ilog2.c index df11561e..9c054fd2 100644 --- a/ilog2.c +++ b/ilog2.c @@ -48,9 +48,9 @@ int ilog2_32(uint32_t v) { int n; - __asm__("bsrl %1,%0 ; cmovel %2,%0" - : "=&r" (n) - : "rm" (v), "rm" (0)); + __asm__("bsrl %1,%0" + : "=r" (n) + : "rm" (v), "0" (0)); return n; } @@ -100,9 +100,9 @@ int ilog2_64(uint64_t v) { uint64_t n; - __asm__("bsrq %1,%0 ; cmoveq %2,%0" - : "=&r" (n) - : "rm" (v), "rm" (UINT64_C(0))); + __asm__("bsrq %1,%0" + : "=r" (n) + : "rm" (v), "0" (UINT64_C(0))); return n; }