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

References

lib/Transforms/InstCombine/InstCombineAddSub.cpp
 1202   if (Value *V = SimplifyAddInst(I.getOperand(0), I.getOperand(1),
 1202   if (Value *V = SimplifyAddInst(I.getOperand(0), I.getOperand(1),
 1203                                  I.hasNoSignedWrap(), I.hasNoUnsignedWrap(),
 1203                                  I.hasNoSignedWrap(), I.hasNoUnsignedWrap(),
 1204                                  SQ.getWithInstruction(&I)))
 1205     return replaceInstUsesWith(I, V);
 1207   if (SimplifyAssociativeOrCommutative(I))
 1208     return &I;
 1210   if (Instruction *X = foldVectorBinop(I))
 1214   if (Value *V = SimplifyUsingDistributiveLaws(I))
 1215     return replaceInstUsesWith(I, V);
 1217   if (Instruction *X = foldAddWithConstant(I))
 1220   if (Instruction *X = foldNoWrapAdd(I, Builder))
 1225   Value *LHS = I.getOperand(0), *RHS = I.getOperand(1);
 1225   Value *LHS = I.getOperand(0), *RHS = I.getOperand(1);
 1226   Type *Ty = I.getType();
 1244         if (!MaskedValueIsZero(XorLHS, Mask, 0, &I))
 1257         KnownBits LHSKnown = computeKnownBits(XorLHS, 0, &I);
 1276     Shl->setHasNoSignedWrap(I.hasNoSignedWrap());
 1277     Shl->setHasNoUnsignedWrap(I.hasNoUnsignedWrap());
 1293   if (match(&I, m_c_Add(m_Value(A), m_OneUse(m_SExt(m_Value(B))))) &&
 1301   if (Value *V = checkForNegativeOperand(I, Builder))
 1302     return replaceInstUsesWith(I, V);
 1308   if (match(&I, m_c_BinOp(m_Add(m_Value(A), m_One()), m_Not(m_Value(B)))) ||
 1309       match(&I, m_BinOp(m_c_Add(m_Not(m_Value(B)), m_Value(A)), m_One())))
 1313   if (Value *V = SimplifyAddWithRemainder(I)) return replaceInstUsesWith(I, V);
 1313   if (Value *V = SimplifyAddWithRemainder(I)) return replaceInstUsesWith(I, V);
 1316   if (haveNoCommonBitsSet(LHS, RHS, DL, &AC, &I, &DT))
 1372   if (Instruction *Ext = narrowMathIfNoOverflow(I))
 1377   if (match(&I, m_c_BinOp(m_Xor(m_Value(A), m_Value(B)),
 1383   if (match(&I, m_c_BinOp(m_Or(m_Value(A), m_Value(B)),
 1385     I.setOperand(0, A);
 1386     I.setOperand(1, B);
 1387     return &I;
 1394   if (!I.hasNoSignedWrap() && willNotOverflowSignedAdd(LHS, RHS, I)) {
 1394   if (!I.hasNoSignedWrap() && willNotOverflowSignedAdd(LHS, RHS, I)) {
 1396     I.setHasNoSignedWrap(true);
 1398   if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedAdd(LHS, RHS, I)) {
 1398   if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedAdd(LHS, RHS, I)) {
 1400     I.setHasNoUnsignedWrap(true);
 1403   if (Instruction *V = canonicalizeLowbitMask(I, Builder))
 1407           canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(I))
 1410   if (Instruction *SatAdd = foldToUnsignedSaturatedAdd(I))
 1413   return Changed ? &I : nullptr;