reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  187   if (match(Op1, m_AllOnes())) {
  232   if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1)) {
  264   if (isa<Constant>(Op1)) {
  269       Value *Mul = Builder.CreateMul(C1, Op1);
  273         return BinaryOperator::CreateAdd(Builder.CreateMul(X, Op1), Mul);
  280   if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Constant(Op1C)))
  284   if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Neg(m_Value(Y)))) {
  288         cast<OverflowingBinaryOperator>(Op1)->hasNoSignedWrap())
  301     Value *Y = Op1;
  306       Div = dyn_cast<BinaryOperator>(Op1);
  333     return BinaryOperator::CreateAnd(Op0, Op1);
  342       BO = BinaryOperator::CreateShl(Op1, Y);
  344     } else if (match(Op1, m_Shl(m_One(), m_Value(Y)))) {
  346       ShlNSW = cast<ShlOperator>(Op1)->hasNoSignedWrap();
  360     return SelectInst::Create(X, Op1, ConstantInt::get(I.getType(), 0));
  361   if (match(Op1, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1))
  372     return BinaryOperator::CreateAnd(Builder.CreateAShr(X, *C), Op1);
  373   if (match(Op1, m_LShr(m_Value(X), m_APInt(C))) && *C == C->getBitWidth() - 1)
  380   if (!I.hasNoSignedWrap() && willNotOverflowSignedMul(Op0, Op1, I)) {
  385   if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedMul(Op0, Op1, I)) {