<div dir="ltr"><div>Committed in revision 213662 !!<br><br></div>Thanks Duncan for the review.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 22, 2014 at 9:12 PM, suyog <span dir="ltr"><<a href="mailto:suyog.sarda@samsung.com" target="_blank">suyog.sarda@samsung.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Made minor change in comment as suggested by Duncan in :<br>
<br>
<a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140721/226719.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140721/226719.html</a><br>
<div class=""><br>
<a href="http://reviews.llvm.org/D4588" target="_blank">http://reviews.llvm.org/D4588</a><br>
<br>
Files:<br>
  lib/Transforms/InstCombine/InstCombineAndOrXor.cpp<br>
  test/Transforms/InstCombine/xor2.ll<br>
<br>
Index: lib/Transforms/InstCombine/InstCombineAndOrXor.cpp<br>
===================================================================<br>
--- lib/Transforms/InstCombine/InstCombineAndOrXor.cpp<br>
+++ lib/Transforms/InstCombine/InstCombineAndOrXor.cpp<br>
@@ -2446,6 +2446,12 @@<br>
     }<br>
   }<br>
<br>
</div>+  // (A | B)^(~A) -> (A | ~B)<br>
<div class="">+  Value *A = nullptr, *B = nullptr;<br>
+  if (match(Op0, m_Or(m_Value(A), m_Value(B))) &&<br>
+      match(Op1, m_Not(m_Specific(A))))<br>
+    return BinaryOperator::CreateOr(A, Builder->CreateNot(B));<br>
+<br>
   // (icmp1 A, B) ^ (icmp2 A, B) --> (icmp3 A, B)<br>
   if (ICmpInst *RHS = dyn_cast<ICmpInst>(I.getOperand(1)))<br>
     if (ICmpInst *LHS = dyn_cast<ICmpInst>(I.getOperand(0)))<br>
Index: test/Transforms/InstCombine/xor2.ll<br>
===================================================================<br>
--- test/Transforms/InstCombine/xor2.ll<br>
+++ test/Transforms/InstCombine/xor2.ll<br>
</div>@@ -82,3 +82,26 @@<br>
<div class="HOEnZb"><div class="h5"> ; CHECK: lshr i32 %x, 16<br>
 ; CHECK: ret<br>
 }<br>
+<br>
+<br>
+; (A | B) ^ (~A) -> (A | ~B)<br>
+define i32 @test7(i32 %a, i32 %b) #0 {<br>
+ %or = or i32 %a, %b<br>
+ %neg = xor i32 %a, -1<br>
+ %xor = xor i32 %or, %neg<br>
+ ret i32 %xor<br>
+; CHECK-LABEL: @test7(<br>
+; CHECK-NEXT: %1 = xor i32 %b, -1<br>
+; CHECK-NEXT: %xor = or i32 %a, %1<br>
+}<br>
+<br>
+; (~A) ^ (A | B) -> (A | ~B)<br>
+define i32 @test8(i32 %a, i32 %b) #0 {<br>
+ %neg = xor i32 %a, -1<br>
+ %or = or i32 %a, %b<br>
+ %xor = xor i32 %neg, %or<br>
+ ret i32 %xor<br>
+; CHECK-LABEL: @test8(<br>
+; CHECK-NEXT: %1 = xor i32 %b, -1<br>
+; CHECK-NEXT: %xor = or i32 %a, %1<br>
+}<br>
</div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>With regards,<br>Suyog Sarda<br>
</div>