diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2011-04-01 20:09:10 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2011-04-01 20:09:10 +0000 |
commit | d121765e6452c11ce17714feb2caa2d154d5e22b (patch) | |
tree | 53decde5ec547162a6d5989642448dc513cb5cc9 /llvm/lib/CodeGen/MachineModuleInfo.cpp | |
parent | 398b8c5faff9ea9aa7adc586d2b52e0e1ce16fde (diff) | |
download | llvm-d121765e6452c11ce17714feb2caa2d154d5e22b.zip llvm-d121765e6452c11ce17714feb2caa2d154d5e22b.tar.gz llvm-d121765e6452c11ce17714feb2caa2d154d5e22b.tar.bz2 |
InstCombine: Turn icmp + sext into bitwise/integer ops when the input has only one unknown bit.
int test1(unsigned x) { return (x&8) ? 0 : -1; }
int test3(unsigned x) { return (x&8) ? -1 : 0; }
before (x86_64):
_test1:
andl $8, %edi
cmpl $1, %edi
sbbl %eax, %eax
ret
_test3:
andl $8, %edi
cmpl $1, %edi
sbbl %eax, %eax
notl %eax
ret
after:
_test1:
shrl $3, %edi
andl $1, %edi
leal -1(%rdi), %eax
ret
_test3:
shll $28, %edi
movl %edi, %eax
sarl $31, %eax
ret
llvm-svn: 128732
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfo.cpp')
0 files changed, 0 insertions, 0 deletions