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

References

lib/Transforms/InstCombine/InstCombineAddSub.cpp
 2091   if (Value *V = SimplifyFSubInst(I.getOperand(0), I.getOperand(1),
 2091   if (Value *V = SimplifyFSubInst(I.getOperand(0), I.getOperand(1),
 2092                                   I.getFastMathFlags(),
 2093                                   SQ.getWithInstruction(&I)))
 2094     return replaceInstUsesWith(I, V);
 2096   if (Instruction *X = foldVectorBinop(I))
 2101   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 2101   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 2102   if (I.hasNoSignedZeros() && match(Op0, m_PosZeroFP()))
 2103     return BinaryOperator::CreateFNegFMF(Op1, &I);
 2105   if (Instruction *X = foldFNegIntoConstant(I))
 2108   if (Instruction *R = hoistFNegAboveFMulFDiv(I, Builder))
 2120   if (I.hasNoSignedZeros() || CannotBeNegativeZero(Op0, SQ.TLI)) {
 2122       Value *NewSub = Builder.CreateFSubFMF(Y, X, &I);
 2123       return BinaryOperator::CreateFAddFMF(Op0, NewSub, &I);
 2129       if (Instruction *NV = FoldOpIntoSelect(I, SI))
 2136     return BinaryOperator::CreateFAddFMF(Op0, ConstantExpr::getFNeg(C), &I);
 2140     return BinaryOperator::CreateFAddFMF(Op0, Y, &I);
 2144   Type *Ty = I.getType();
 2146     return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPTrunc(Y, Ty), &I);
 2150     return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPExt(Y, Ty), &I);
 2156     Value *FMul = Builder.CreateFMulFMF(X, Y, &I);
 2157     return BinaryOperator::CreateFAddFMF(Op0, FMul, &I);
 2163     Value *FDiv = Builder.CreateFDivFMF(X, Y, &I);
 2164     return BinaryOperator::CreateFAddFMF(Op0, FDiv, &I);
 2168   if (Value *V = SimplifySelectsFeedingBinaryOp(I, Op0, Op1))
 2169     return replaceInstUsesWith(I, V);
 2171   if (I.hasAllowReassoc() && I.hasNoSignedZeros()) {
 2171   if (I.hasAllowReassoc() && I.hasNoSignedZeros()) {
 2174       return BinaryOperator::CreateFNegFMF(X, &I);
 2179       return BinaryOperator::CreateFNegFMF(X, &I);
 2184       return BinaryOperator::CreateFMulFMF(Op1, CSubOne, &I);
 2189       return BinaryOperator::CreateFMulFMF(Op0, OneSubC, &I);
 2192     if (Instruction *F = factorizeFAddFSub(I, Builder))
 2199     if (Value *V = FAddCombine(Builder).simplify(&I))
 2200       return replaceInstUsesWith(I, V);