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

References

lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  188     BinaryOperator *BO = BinaryOperator::CreateNeg(Op0, I.getName());
  241         if (Op0->hasOneUse()) {
  244           if (match(Op0, m_Sub(m_Value(Y), m_Value(X))))
  246           else if (match(Op0, m_Add(m_Value(Y), m_ConstantInt(C1))))
  268     if (match(Op0, m_OneUse(m_Add(m_Value(X), m_Constant(C1))))) {
  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)))) {
  287         cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap() &&
  302     BinaryOperator *Div = dyn_cast<BinaryOperator>(Op0);
  305       Y = Op0;
  333     return BinaryOperator::CreateAnd(Op0, Op1);
  341     if (match(Op0, m_Shl(m_One(), m_Value(Y)))) {
  343       ShlNSW = cast<ShlOperator>(Op0)->hasNoSignedWrap();
  345       BO = BinaryOperator::CreateShl(Op0, Y);
  359   if (match(Op0, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1))
  362     return SelectInst::Create(X, Op0, ConstantInt::get(I.getType(), 0));
  371   if (match(Op0, m_LShr(m_Value(X), m_APInt(C))) && *C == C->getBitWidth() - 1)
  374     return BinaryOperator::CreateAnd(Builder.CreateAShr(X, *C), Op0);
  380   if (!I.hasNoSignedWrap() && willNotOverflowSignedMul(Op0, Op1, I)) {
  385   if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedMul(Op0, Op1, I)) {