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

References

lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  702     if ((IsSigned && match(Op0, m_SDiv(m_Value(X), m_APInt(C1)))) ||
  703         (!IsSigned && match(Op0, m_UDiv(m_Value(X), m_APInt(C1))))) {
  704       APInt Product(C1->getBitWidth(), /*val=*/0ULL, IsSigned);
  705       if (!multiplyOverflows(*C1, *C2, Product, IsSigned))
  710     if ((IsSigned && match(Op0, m_NSWMul(m_Value(X), m_APInt(C1)))) ||
  711         (!IsSigned && match(Op0, m_NUWMul(m_Value(X), m_APInt(C1))))) {
  712       APInt Quotient(C1->getBitWidth(), /*val=*/0ULL, IsSigned);
  715       if (isMultiple(*C2, *C1, Quotient, IsSigned)) {
  723       if (isMultiple(*C1, *C2, Quotient, IsSigned)) {
  727         Mul->setHasNoUnsignedWrap(!IsSigned && OBO->hasNoUnsignedWrap());
  733     if ((IsSigned && match(Op0, m_NSWShl(m_Value(X), m_APInt(C1))) &&
  735         (!IsSigned && match(Op0, m_NUWShl(m_Value(X), m_APInt(C1))))) {
  736       APInt Quotient(C1->getBitWidth(), /*val=*/0ULL, IsSigned);
  741       if (isMultiple(*C2, C1Shifted, Quotient, IsSigned)) {
  749       if (isMultiple(C1Shifted, *C2, Quotient, IsSigned)) {
  753         Mul->setHasNoUnsignedWrap(!IsSigned && OBO->hasNoUnsignedWrap());
  766     if (IsSigned) {
  787     if ((IsSigned && match(Z, m_SRem(m_Specific(X), m_Specific(Op1)))) ||
  788         (!IsSigned && match(Z, m_URem(m_Specific(X), m_Specific(Op1)))))
  793   if (IsSigned && match(Op0, m_NSWShl(m_Specific(Op1), m_Value(Y))))
  795   if (!IsSigned && match(Op0, m_NUWShl(m_Specific(Op1), m_Value(Y))))
  802     if ((IsSigned && HasNSW) || (!IsSigned && HasNUW)) {
  802     if ((IsSigned && HasNSW) || (!IsSigned && HasNUW)) {