OSDN Git Service

X86: optimization for -(x != 0)
authorManman Ren <mren@apple.com>
Mon, 7 May 2012 18:06:23 +0000 (18:06 +0000)
committerManman Ren <mren@apple.com>
Mon, 7 May 2012 18:06:23 +0000 (18:06 +0000)
commited57984483b9268c30c71031fca07e71b985f169
tree67d0c1880ab9bd3282fc83194b620a1abca336da
parentaf97f73ca03d16ffa069af65a494d0933665ce11
X86: optimization for -(x != 0)

This patch will optimize -(x != 0) on X86
FROM
cmpl $0x01,%edi
sbbl %eax,%eax
notl %eax
TO
negl %edi
sbbl %eax %eax

In order to generate negl, I added patterns in Target/X86/X86InstrCompiler.td:
def : Pat<(X86sub_flag 0, GR32:$src), (NEG32r GR32:$src)>;

rdar: 10961709

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156312 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrCompiler.td
test/CodeGen/X86/select.ll