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

References

lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  418   if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y))))
  419     return BinaryOperator::CreateFMulFMF(X, Y, &I);
  476     if (match(&I, m_c_FMul(m_OneUse(m_FDiv(m_Value(X), m_Value(Y))),
  480       return BinaryOperator::CreateFDivFMF(NewFMul, Y, &I);
  488         match(Op1, m_OneUse(m_Intrinsic<Intrinsic::sqrt>(m_Value(Y))))) {
  489       Value *XY = Builder.CreateFMulFMF(X, Y, &I);
  501                             m_Intrinsic<Intrinsic::sqrt>(m_Value(Y))))) {
  503         return BinaryOperator::CreateFDivFMF(XX, Y, &I);
  506       if (match(Op0, m_FDiv(m_Intrinsic<Intrinsic::sqrt>(m_Value(Y)),
  509         return BinaryOperator::CreateFDivFMF(Y, XX, &I);
  516         match(Op1, m_Intrinsic<Intrinsic::exp>(m_Value(Y))) &&
  518       Value *XY = Builder.CreateFAddFMF(X, Y, &I);
  526         match(Op1, m_Intrinsic<Intrinsic::exp2>(m_Value(Y))) &&
  528       Value *XY = Builder.CreateFAddFMF(X, Y, &I);
  540     if (match(Op0, m_OneUse(m_c_FMul(m_Specific(Op1), m_Value(Y)))) &&
  541         Op1 != Y) {
  543       return BinaryOperator::CreateFMulFMF(XX, Y, &I);
  545     if (match(Op1, m_OneUse(m_c_FMul(m_Specific(Op0), m_Value(Y)))) &&
  546         Op0 != Y) {
  548       return BinaryOperator::CreateFMulFMF(XX, Y, &I);
  558       Y = Op1;
  563       Y = Op0;
  568       Value *LogXTimesY = Builder.CreateFMulFMF(Log2, Y, &I);
  569       return BinaryOperator::CreateFSubFMF(LogXTimesY, Y, &I);