Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:FADD

467   case ISD::FADD:
476 // fold (fneg (fadd A, B)) -> (fsub (fneg A), B)
480 // fold (fneg (fadd A, B)) -> (fsub (fneg B), A)
528 case ISD::FADD:
532 // fold (fneg (fadd A, B)) -> (fsub (fneg A), B)
540 // fold (fneg (fadd A, B)) -> (fsub (fneg B), A)
1241 case ISD::FADD: return visitFADD(N);
6476 // fold (fadd c1, c2) -> c1 + c2
6478 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N0, N1);
6481 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N1, N0);
6482 // fold (fadd A, 0) -> A
6486 // fold (fadd A, (fneg B)) -> (fsub A, B)
6491 // fold (fadd (fneg A), B) -> (fsub B, A)
6497 // If allowed, fold (fadd (fadd x, c1), c2) -> (fadd x, (fadd c1, c2))
6499 N0.getOpcode() == ISD::FADD && N0.getNode()->hasOneUse() &&
6501 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N0.getOperand(0),
6502 DAG.getNode(ISD::FADD, SDLoc(N), VT,
6512 // (fadd (fmul c, x), x) -> (fmul c+1, x)
6516 // If allow, fold (fadd (fneg x), x) -> 0.0
6521 // If allow, fold (fadd x, (fneg x)) -> 0.0
6526 // In unsafe math mode, we can fold chains of FADD's of the same value
6536 // (fadd (fmul c, x), x) -> (fmul x, c+1)
6538 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6545 // (fadd (fmul x, c), x) -> (fmul x, c+1)
6547 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6554 // (fadd (fmul c, x), (fadd x, x)) -> (fmul x, c+2)
6555 if (CFP00 && !CFP01 && N1.getOpcode() == ISD::FADD &&
6558 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6565 // (fadd (fmul x, c), (fadd x, x)) -> (fmul x, c+2)
6566 if (CFP01 && !CFP00 && N1.getOpcode() == ISD::FADD &&
6569 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6581 // (fadd x, (fmul c, x)) -> (fmul x, c+1)
6583 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6590 // (fadd x, (fmul x, c)) -> (fmul x, c+1)
6592 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6600 // (fadd (fadd x, x), (fmul c, x)) -> (fmul x, c+2)
6601 if (CFP10 && !CFP11 && N0.getOpcode() == ISD::FADD &&
6604 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6611 // (fadd (fadd x, x), (fmul x, c)) -> (fmul x, c+2)
6612 if (CFP11 && !CFP10 && N0.getOpcode() == ISD::FADD &&
6615 SDValue NewCFP = DAG.getNode(ISD::FADD, SDLoc(N), VT,
6623 if (N0.getOpcode() == ISD::FADD && AllowNewFpConst) {
6625 // (fadd (fadd x, x), x) -> (fmul x, 3.0)
6632 if (N1.getOpcode() == ISD::FADD && AllowNewFpConst) {
6634 // (fadd x, (fadd x, x)) -> (fmul x, 3.0)
6641 // (fadd (fadd x, x), (fadd x, x)) -> (fmul x, 4.0)
6643 N0.getOpcode() == ISD::FADD && N1.getOpcode() == ISD::FADD &&
6652 // FADD -> FMA combines:
6658 // fold (fadd (fmul x, y), z) -> (fma x, y, z)
6663 // fold (fadd x, (fmul y, z)) -> (fma y, z, x)
6664 // Note: Commutes FADD operands.
6702 // fold (fsub A, (fneg B)) -> (fadd A, B)
6704 return DAG.getNode(ISD::FADD, dl, VT, N0,
6709 // (fsub x, (fadd x, y)) -> (fneg y) &
6710 // (fsub x, (fadd y, x)) -> (fneg y)
6715 if (N1.getOpcode() == ISD::FADD) {
6795 // fold (fmul X, 2.0) -> (fadd X, X)
6797 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N0, N0);
6844 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N1, N2);
6846 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N0, N2);
6858 DAG.getNode(ISD::FADD, dl, VT, N1, N2.getOperand(1)));
6872 // (fma x, 1, y) -> (fadd x, y)
6873 // (fma x, -1, y) -> (fadd (fneg x), y)
6876 return DAG.getNode(ISD::FADD, dl, VT, N0, N2);
6882 return DAG.getNode(ISD::FADD, dl, VT, N2, RHSNeg);
6889 DAG.getNode(ISD::FADD, dl, VT,
6896 DAG.getNode(ISD::FADD, dl, VT,