From 0cc4ed1ca504c9e5631d16ababb8baceb4fce6ea Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 12 Jul 2010 12:35:49 +0000 Subject: [PATCH] Revert r108136 until I figure out why it broke selfhost. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108139 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../InstCombine/InstCombineAndOrXor.cpp | 17 ----------------- test/Transforms/InstCombine/or.ll | 14 -------------- test/Transforms/InstCombine/xor2.ll | 14 -------------- 3 files changed, 45 deletions(-) diff --git a/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp index 3bfeba11cc2..8586054fce0 100644 --- a/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ b/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -1584,14 +1584,6 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { if ((match(A, m_Not(m_Specific(B))) && match(D, m_Not(m_Specific(C))))) return BinaryOperator::CreateXor(C, B); - - // (A & ~C) | (B & C) -> ((B ^ A) & C) ^ A - if (Op0->hasOneUse() && Op1->hasOneUse() && - match(C, m_Not(m_Specific(D)))) { - Value *Xor = Builder->CreateXor(B, A, "xor"); - Value *And = Builder->CreateAnd(Xor, D, "and"); - return BinaryOperator::CreateXor(And, A); - } } // (X >> Z) | (Y >> Z) -> (X|Y) >> Z for all shifts. @@ -1928,15 +1920,6 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) { return BinaryOperator::CreateAnd(NewOp, X); } } - - // (A & ~C) ^ (B & C) -> ((B ^ A) & C) ^ A - if (Op0->hasOneUse() && Op1->hasOneUse() && - match(Op0I, m_And(m_Value(A), m_Not(m_Value(D)))) && - match(Op1I, m_And(m_Value(B), m_Value(D)))) { - Value *Xor = Builder->CreateXor(B, A, "xor"); - Value *And = Builder->CreateAnd(Xor, D, "and"); - return BinaryOperator::CreateXor(And, A); - } } // (icmp1 A, B) ^ (icmp2 A, B) --> (icmp3 A, B) diff --git a/test/Transforms/InstCombine/or.ll b/test/Transforms/InstCombine/or.ll index 86fca14dbdf..c3526b77f6a 100644 --- a/test/Transforms/InstCombine/or.ll +++ b/test/Transforms/InstCombine/or.ll @@ -350,17 +350,3 @@ define <4 x i32> @test32(<4 x i1> %and.i1352, <4 x i32> %vecinit6.i176, <4 x i32 ; CHECK: or <4 x i32> %and.i, %and.i129 } -; PR6773 -define i32 @test33(i32 %x, i32 %y, i32 %z) nounwind readnone { - %and = and i32 %y, %x - %not = xor i32 %x, -1 - %and2 = and i32 %z, %not - %xor = xor i32 %and2, %and - ret i32 %xor -; CHECK: @test33 -; CHECK: xor i32 -; CHECK: and i32 -; CHECK: xor i32 -; CHECK: ret i32 -} - diff --git a/test/Transforms/InstCombine/xor2.ll b/test/Transforms/InstCombine/xor2.ll index 27ce3bff471..67f05efa23d 100644 --- a/test/Transforms/InstCombine/xor2.ll +++ b/test/Transforms/InstCombine/xor2.ll @@ -51,17 +51,3 @@ define i32 @test4(i32 %A, i32 %B) { ; CHECK: %1 = ashr i32 %A, %B ; CHECK: ret i32 %1 } - -; PR6773 -define i32 @test5(i32 %x, i32 %y, i32 %z) nounwind readnone { - %and = and i32 %y, %x - %not = xor i32 %x, -1 - %and2 = and i32 %z, %not - %or = or i32 %and2, %and - ret i32 %or -; CHECK: @test5 -; CHECK: xor i32 -; CHECK: and i32 -; CHECK: xor i32 -; CHECK: ret i32 -}