Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:FMUL

490   case ISD::FMUL:
494 // fold (fneg (fmul X, Y)) -> (fmul (fneg X), Y) or (fmul X, (fneg Y))
558 case ISD::FMUL:
562 // fold (fneg (fmul X, Y)) -> (fmul (fneg X), Y)
571 // fold (fneg (fmul X, Y)) -> (fmul X, (fneg Y))
1243 case ISD::FMUL: return visitFMUL(N);
6512 // (fadd (fmul c, x), x) -> (fmul c+1, x)
6530 TLI.isOperationLegalOrCustom(ISD::FMUL, VT) &&
6532 if (N0.getOpcode() == ISD::FMUL) {
6536 // (fadd (fmul c, x), x) -> (fmul x, c+1)
6541 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6545 // (fadd (fmul x, c), x) -> (fmul x, c+1)
6550 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6554 // (fadd (fmul c, x), (fadd x, x)) -> (fmul x, c+2)
6561 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6565 // (fadd (fmul x, c), (fadd x, x)) -> (fmul x, c+2)
6572 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6577 if (N1.getOpcode() == ISD::FMUL) {
6581 // (fadd x, (fmul c, x)) -> (fmul x, c+1)
6586 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6590 // (fadd x, (fmul x, c)) -> (fmul x, c+1)
6595 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6600 // (fadd (fadd x, x), (fmul c, x)) -> (fmul x, c+2)
6607 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6611 // (fadd (fadd x, x), (fmul x, c)) -> (fmul x, c+2)
6618 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6625 // (fadd (fadd x, x), x) -> (fmul x, 3.0)
6628 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6634 // (fadd x, (fadd x, x)) -> (fmul x, 3.0)
6637 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6641 // (fadd (fadd x, x), (fadd x, x)) -> (fmul x, 4.0)
6647 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6658 // fold (fadd (fmul x, y), z) -> (fma x, y, z)
6659 if (N0.getOpcode() == ISD::FMUL && N0->hasOneUse())
6663 // fold (fadd x, (fmul y, z)) -> (fma y, z, x)
6665 if (N1.getOpcode() == ISD::FMUL && N1->hasOneUse())
6735 // fold (fsub (fmul x, y), z) -> (fma x, y, (fneg z))
6736 if (N0.getOpcode() == ISD::FMUL && N0->hasOneUse())
6741 // fold (fsub x, (fmul y, z)) -> (fma (fneg y), z, x)
6743 if (N1.getOpcode() == ISD::FMUL && N1->hasOneUse())
6749 // fold (fsub (fneg (fmul, x, y)), z) -> (fma (fneg x), y, (fneg z))
6751 N0.getOperand(0).getOpcode() == ISD::FMUL &&
6778 // fold (fmul c1, c2) -> c1*c2
6780 return DAG.getNode(ISD::FMUL, SDLoc(N), VT, N0, N1);
6783 return DAG.getNode(ISD::FMUL, SDLoc(N), VT, N1, N0);
6784 // fold (fmul A, 0) -> 0
6788 // fold (fmul A, 0) -> 0, vector edition.
6792 // fold (fmul A, 1.0) -> A
6795 // fold (fmul X, 2.0) -> (fadd X, X)
6798 // fold (fmul X, -1.0) -> (fneg X)
6803 // fold (fmul (fneg X), (fneg Y)) -> (fmul X, Y)
6811 return DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6817 // If allowed, fold (fmul (fmul x, c1), c2) -> (fmul x, (fmul c1, c2))
6819 N1CFP && N0.getOpcode() == ISD::FMUL &&
6821 return DAG.getNode(ISD::FMUL, SDLoc(N), VT, N0.getOperand(0),
6822 DAG.getNode(ISD::FMUL, SDLoc(N), VT,
6852 // (fma x, c1, (fmul x, c2)) -> (fmul x, c1+c2)
6854 N2.getOpcode() == ISD::FMUL &&
6857 return DAG.getNode(ISD::FMUL, dl, VT, N0,
6862 // (fma (fmul x, c1), c2, y) -> (fma x, c1*c2, y)
6864 N0.getOpcode() == ISD::FMUL && N1CFP &&
6868 DAG.getNode(ISD::FMUL, dl, VT, N1, N0.getOperand(1)),
6886 // (fma x, c, x) -> (fmul x, (c+1))
6888 return DAG.getNode(ISD::FMUL, dl, VT, N0,
6892 // (fma x, c, (fneg x)) -> (fmul x, (c-1))
6895 return DAG.getNode(ISD::FMUL, dl, VT, N0,
6921 // fold (fdiv X, c2) -> fmul X, 1/c2 if losing precision is acceptable.
6936 return DAG.getNode(ISD::FMUL, SDLoc(N), VT, N0,
7264 // (fneg (fmul c, x)) -> (fmul -c, x)
7265 if (N0.getOpcode() == ISD::FMUL) {
7274 ISD::FMUL, SDLoc(N), VT, N0.getOperand(0),