[llvm] r315762 - [InstCombine] use m_Neg() to reduce code; NFCI

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 13 14:28:51 PDT 2017


Author: spatel
Date: Fri Oct 13 14:28:50 2017
New Revision: 315762

URL: http://llvm.org/viewvc/llvm-project?rev=315762&view=rev
Log:
[InstCombine] use m_Neg() to reduce code; NFCI

Modified:
    llvm/trunk/lib/Transforms/InstCombine/InstCombineAddSub.cpp

Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineAddSub.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineAddSub.cpp?rev=315762&r1=315761&r2=315762&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineAddSub.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineAddSub.cpp Fri Oct 13 14:28:50 2017
@@ -1098,22 +1098,19 @@ Instruction *InstCombiner::visitAdd(Bina
     return Shl;
   }
 
-  // -A + B  -->  B - A
-  // -A + -B  -->  -(A + B)
-  if (Value *LHSV = dyn_castNegVal(LHS)) {
-    if (!isa<Constant>(RHS))
-      if (Value *RHSV = dyn_castNegVal(RHS)) {
-        Value *NewAdd = Builder.CreateAdd(LHSV, RHSV, "sum");
-        return BinaryOperator::CreateNeg(NewAdd);
-      }
+  Value *A, *B;
+  if (match(LHS, m_Neg(m_Value(A)))) {
+    // -A + -B --> -(A + B)
+    if (match(RHS, m_Neg(m_Value(B))))
+      return BinaryOperator::CreateNeg(Builder.CreateAdd(A, B));
 
-    return BinaryOperator::CreateSub(RHS, LHSV);
+    // -A + B --> B - A
+    return BinaryOperator::CreateSub(RHS, A);
   }
 
   // A + -B  -->  A - B
-  if (!isa<Constant>(RHS))
-    if (Value *V = dyn_castNegVal(RHS))
-      return BinaryOperator::CreateSub(LHS, V);
+  if (match(RHS, m_Neg(m_Value(B))))
+    return BinaryOperator::CreateSub(LHS, B);
 
   if (Value *V = checkForNegativeOperand(I, Builder))
     return replaceInstUsesWith(I, V);
@@ -1247,7 +1244,6 @@ Instruction *InstCombiner::visitAdd(Bina
     }
   }
 
-  Value *A, *B;
   // (add (xor A, B) (and A, B)) --> (or A, B)
   if (match(LHS, m_Xor(m_Value(A), m_Value(B))) &&
       match(RHS, m_c_And(m_Specific(A), m_Specific(B))))




More information about the llvm-commits mailing list