mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
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:
parent
d873a4b89b
commit
32d720bb2f
@ -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
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
Reference in New Issue
Block a user