Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:FMA

1244   case ISD::FMA:                return visitFMA(N);
6652 // FADD -> FMA combines:
6656 (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT))) {
6658 // fold (fadd (fmul x, y), z) -> (fma x, y, z)
6660 return DAG.getNode(ISD::FMA, SDLoc(N), VT,
6663 // fold (fadd x, (fmul y, z)) -> (fma y, z, x)
6666 return DAG.getNode(ISD::FMA, SDLoc(N), VT,
6729 // FSUB -> FMA combines:
6733 (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT))) {
6735 // fold (fsub (fmul x, y), z) -> (fma x, y, (fneg z))
6737 return DAG.getNode(ISD::FMA, dl, VT,
6741 // fold (fsub x, (fmul y, z)) -> (fma (fneg y), z, x)
6744 return DAG.getNode(ISD::FMA, dl, VT,
6749 // fold (fsub (fneg (fmul, x, y)), z) -> (fma (fneg x), y, (fneg z))
6755 return DAG.getNode(ISD::FMA, dl, VT,
6848 // Canonicalize (fma c, x, y) -> (fma x, c, y)
6850 return DAG.getNode(ISD::FMA, SDLoc(N), VT, N1, N0, N2);
6852 // (fma x, c1, (fmul x, c2)) -> (fmul x, c1+c2)
6862 // (fma (fmul x, c1), c2, y) -> (fma x, c1*c2, y)
6866 return DAG.getNode(ISD::FMA, dl, VT,
6872 // (fma x, 1, y) -> (fadd x, y)
6873 // (fma x, -1, y) -> (fadd (fneg x), y)
6886 // (fma x, c, x) -> (fmul x, (c+1))
6892 // (fma x, c, (fneg x)) -> (fmul x, (c-1))