Lines Matching defs:FMA
1939 case ISD::FMA: return visitFMA<EmptyMatchContext>(N);
16297 /// Try to perform FMA combining on a given FADD node.
16316 (!LegalOperations || matcher.isOperationLegalOrCustom(ISD::FMA, VT)) &&
16339 // Always prefer FMAD to FMA for precision.
16340 unsigned PreferredFusedOpcode = HasFMAD ? ISD::FMAD : ISD::FMA;
16344 return matcher.match(N, ISD::FMA) || matcher.match(N, ISD::FMAD);
16385 SDValue FMA, E;
16387 FMA = N0;
16390 FMA = N1;
16394 SDValue TmpFMA = FMA;
16402 // Replacing the inner FMul could cause the outer FMA to be simplified
16404 return FMA.getOpcode() == ISD::DELETED_NODE ? SDValue(N, 0) : FMA;
16534 /// Try to perform FMA combining on a given FSUB node.
16553 (!LegalOperations || matcher.isOperationLegalOrCustom(ISD::FMA, VT)) &&
16571 // Always prefer FMAD to FMA for precision.
16572 unsigned PreferredFusedOpcode = HasFMAD ? ISD::FMAD : ISD::FMA;
16727 return matcher.match(N, ISD::FMA) || matcher.match(N, ISD::FMAD);
16862 /// Try to perform FMA combining on a given FMUL node based on the distributive
16884 (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT)) &&
16896 // Always prefer FMAD to FMA for precision.
16897 unsigned PreferredFusedOpcode = HasFMAD ? ISD::FMAD : ISD::FMA;
16916 if (SDValue FMA = FuseFADD(N0, N1))
16917 return FMA;
16918 if (SDValue FMA = FuseFADD(N1, N0))
16919 return FMA;
16949 if (SDValue FMA = FuseFSUB(N0, N1))
16950 return FMA;
16951 if (SDValue FMA = FuseFSUB(N1, N0))
16952 return FMA;
16960 // FADD -> FMA combines:
17147 // FADD -> FMA combines:
17258 // FSUB -> FMA combines:
17507 // FMUL -> FMA combines:
17513 // Don't do `combineFMulOrFDivWithIntPow2` until after FMUL -> FMA has been
17530 // FMA nodes have flags that propagate to the created nodes.
17534 // Constant fold FMA.
17552 return matcher.getNode(ISD::FMA, DL, VT, NegN0, NegN1, N2);
17572 return matcher.getNode(ISD::FMA, DL, VT, N1, N0, N2);
17591 ISD::FMA, DL, VT, N0.getOperand(0),
17614 return matcher.getNode(ISD::FMA, DL, VT, N0.getOperand(0),
17920 MLA = DAG.getNode(ISD::FMA, DL, VT, DAG.getNode(ISD::FNEG, DL, VT, Rnd),
27285 // FSUB -> FMA combines: