[PATCH] D33585: [InstSimplify] Use commutable matchers to shorten some code

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 25 22:26:44 PDT 2017


craig.topper created this revision.

This code was replicated two additional times to handle commuted cases, but I think a commutable matcher can take care of it.


https://reviews.llvm.org/D33585

Files:
  lib/Analysis/InstructionSimplify.cpp


Index: lib/Analysis/InstructionSimplify.cpp
===================================================================
--- lib/Analysis/InstructionSimplify.cpp
+++ lib/Analysis/InstructionSimplify.cpp
@@ -1930,26 +1930,17 @@
       // If we have: ((V + N) & C1) | (V & C2)
       // .. and C2 = ~C1 and C2 is 0+1+ and (N & C2) == 0
       // replace with V+N.
-      Value *V1, *V2;
+      Value *N;
       if (C2->getValue().isMask() && // C2 == 0+1+
-          match(A, m_Add(m_Value(V1), m_Value(V2)))) {
-        // Add commutes, try both ways.
-        if (V1 == B &&
-            MaskedValueIsZero(V2, C2->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
-          return A;
-        if (V2 == B &&
-            MaskedValueIsZero(V1, C2->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
+          match(A, m_c_Add(m_Specific(B), m_Value(N)))) {
+        if (MaskedValueIsZero(N, C2->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
           return A;
       }
       // Or commutes, try both ways.
       if (C1->getValue().isMask() &&
-          match(B, m_Add(m_Value(V1), m_Value(V2)))) {
+          match(B, m_c_Add(m_Specific(A), m_Value(N)))) {
         // Add commutes, try both ways.
-        if (V1 == A &&
-            MaskedValueIsZero(V2, C1->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
-          return B;
-        if (V2 == A &&
-            MaskedValueIsZero(V1, C1->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
+        if (MaskedValueIsZero(N, C1->getValue(), Q.DL, 0, Q.AC, Q.CxtI, Q.DT))
           return B;
       }
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33585.100364.patch
Type: text/x-patch
Size: 1522 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170526/d7d64dc4/attachment.bin>


More information about the llvm-commits mailing list