Chandler fixed this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147247 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer 2011-12-24 11:23:32 +00:00
parent d873a4b89b
commit 32d720bb2f

View File

@ -2060,35 +2060,3 @@ Instead we could generate:
The trick is to match "fetch_and_add(X, -C) == C".
//===---------------------------------------------------------------------===//
unsigned log2(unsigned x) {
return x > 1 ? 32-__builtin_clz(x-1) : 0;
}
generates (x86_64):
xorl %eax, %eax
cmpl $2, %edi
jb LBB0_2
## BB#1:
decl %edi
movl $63, %ecx
bsrl %edi, %eax
cmovel %ecx, %eax
xorl $-32, %eax
addl $33, %eax
LBB0_2:
ret
The cmov and the early test are redundant:
xorl %eax, %eax
cmpl $2, %edi
jb LBB0_2
## BB#1:
decl %edi
bsrl %edi, %eax
xorl $-32, %eax
addl $33, %eax
LBB0_2:
ret
//===---------------------------------------------------------------------===//