Transform (xor (setcc), (setcc)) == / != 1 to
authorEvan Cheng <evan.cheng@apple.com>
Fri, 19 Feb 2010 00:34:39 +0000 (00:34 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 19 Feb 2010 00:34:39 +0000 (00:34 +0000)
commit97a35fc3a744c905e1aeed8542fae366c7940f95
treef2d7f0829e8f14fb19a76ee971e7f1da69f75f0c
parent853b919d93c62498ba30e7a78ab393291517cd42
Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.

e.g. On x86_64
  %0 = icmp eq i32 %x, 0
  %1 = icmp eq i32 %y, 0
  %2 = xor i1 %1, %0
  br i1 %2, label %bb, label %return
=>
testl   %edi, %edi
sete    %al
testl   %esi, %esi
sete    %cl
cmpb    %al, %cl
je      LBB1_2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96640 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/TargetLowering.cpp
test/CodeGen/X86/xor-icmp.ll