[llvm] r314017 - [InstCombine] Simplify check for RHS being a splat constant in foldICmpUsingKnownBits by just checking Op1Min==Op1Max rather than going through m_APInt.

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 22 11:57:22 PDT 2017


Author: ctopper
Date: Fri Sep 22 11:57:22 2017
New Revision: 314017

URL: http://llvm.org/viewvc/llvm-project?rev=314017&view=rev
Log:
[InstCombine] Simplify check for RHS being a splat constant in foldICmpUsingKnownBits by just checking Op1Min==Op1Max rather than going through m_APInt.

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

Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=314017&r1=314016&r2=314017&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Fri Sep 22 11:57:22 2017
@@ -4223,12 +4223,11 @@ Instruction *InstCombiner::foldICmpUsing
     if (Op1Min == Op0Max) // A <u B -> A != B if max(A) == min(B)
       return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1);
 
-    const APInt *CmpC;
-    if (match(Op1, m_APInt(CmpC))) {
+    if (Op1Min == Op1Max) {
       // A <u C -> A == C-1 if min(A)+1 == C
-      if (Op1Max == Op0Min + 1)
+      if (Op1Min == Op0Min + 1)
         return new ICmpInst(ICmpInst::ICMP_EQ, Op0,
-                            ConstantInt::get(Op0->getType(), *CmpC - 1));
+                            ConstantInt::get(Op0->getType(), Op1Min - 1));
     }
     break;
   }
@@ -4240,12 +4239,11 @@ Instruction *InstCombiner::foldICmpUsing
     if (Op1Max == Op0Min) // A >u B -> A != B if min(A) == max(B)
       return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1);
 
-    const APInt *CmpC;
-    if (match(Op1, m_APInt(CmpC))) {
+    if (Op1Min == Op1Max) {
       // A >u C -> A == C+1 if max(a)-1 == C
-      if (*CmpC == Op0Max - 1)
+      if (Op1Min == Op0Max - 1)
         return new ICmpInst(ICmpInst::ICMP_EQ, Op0,
-                            ConstantInt::get(Op1->getType(), *CmpC + 1));
+                            ConstantInt::get(Op1->getType(), Op1Min + 1));
     }
     break;
   }




More information about the llvm-commits mailing list