[InstCombine] refactor sdiv by APInt transforms (NFC)

There's at least one more fold to do here:
https://llvm.org/bugs/show_bug.cgi?id=28153

llvm-svn: 273904
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
index d7bd802..4e5bf78 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
@@ -1139,16 +1139,17 @@
   if (Instruction *Common = commonIDivTransforms(I))
     return Common;
 
-  // sdiv X, -1 == -X
-  if (match(Op1, m_AllOnes()))
-    return BinaryOperator::CreateNeg(Op0);
-
-  // sdiv exact X, C  -->  ashr exact X, log2(C)
   const APInt *Op1C;
-  if (match(Op1, m_APInt(Op1C)) && I.isExact() && Op1C->isNonNegative() &&
-      Op1C->isPowerOf2()) {
-    Value *ShAmt = ConstantInt::get(Op1->getType(), Op1C->exactLogBase2());
-    return BinaryOperator::CreateExactAShr(Op0, ShAmt, I.getName());
+  if (match(Op1, m_APInt(Op1C))) {
+    // sdiv X, -1 == -X
+    if (Op1C->isAllOnesValue())
+      return BinaryOperator::CreateNeg(Op0);
+
+    // sdiv exact X, C  -->  ashr exact X, log2(C)
+    if (I.isExact() && Op1C->isNonNegative() && Op1C->isPowerOf2()) {
+      Value *ShAmt = ConstantInt::get(Op1->getType(), Op1C->exactLogBase2());
+      return BinaryOperator::CreateExactAShr(Op0, ShAmt, I.getName());
+    }
   }
 
   if (Constant *RHS = dyn_cast<Constant>(Op1)) {