Lines Matching refs:getNode
689 AddToWorklist(Op.getNode()); in deleteAndRecombine()
777 const SDNodeFlags Flags = Op.getNode()->getFlags(); in GetNegatedExpression()
792 return DAG.getNode(ISD::FSUB, SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
797 return DAG.getNode(ISD::FSUB, SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
808 return DAG.getNode(ISD::FSUB, SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
816 return DAG.getNode(Op.getOpcode(), SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
822 return DAG.getNode(Op.getOpcode(), SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
829 return DAG.getNode(Op.getOpcode(), SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
833 return DAG.getNode(ISD::FP_ROUND, SDLoc(Op), Op.getValueType(), in GetNegatedExpression()
864 !TLI.isConstTrueVal(N.getOperand(2).getNode()) || in isSetCCEquivalent()
865 !TLI.isConstFalseVal(N.getOperand(3).getNode())) in isSetCCEquivalent()
883 if (isSetCCEquivalent(N, N0, N1, N2) && N.getNode()->hasOneUse()) in isOneUseSetCC()
892 return N.getNode(); in isConstantFPBuildVectorOrConstantFP()
893 if (ISD::isBuildVectorOfConstantFPSDNodes(N.getNode())) in isConstantFPBuildVectorOrConstantFP()
894 return N.getNode(); in isConstantFPBuildVectorOrConstantFP()
924 ISD::isBuildVectorOfConstantFPSDNodes(V.getNode()); in isAnyConstantBuildVector()
939 return DAG.getNode(Opc, DL, VT, N0.getOperand(0), OpNode); in ReassociateOps()
945 SDValue OpNode = DAG.getNode(Opc, SDLoc(N0), VT, N0.getOperand(0), N1); in ReassociateOps()
946 if (!OpNode.getNode()) in ReassociateOps()
948 AddToWorklist(OpNode.getNode()); in ReassociateOps()
949 return DAG.getNode(Opc, DL, VT, OpNode, N0.getOperand(1)); in ReassociateOps()
959 return DAG.getNode(Opc, DL, VT, N1.getOperand(0), OpNode); in ReassociateOps()
965 SDValue OpNode = DAG.getNode(Opc, SDLoc(N0), VT, N0, N1.getOperand(0)); in ReassociateOps()
966 if (!OpNode.getNode()) in ReassociateOps()
968 AddToWorklist(OpNode.getNode()); in ReassociateOps()
969 return DAG.getNode(Opc, DL, VT, OpNode, N1.getOperand(1)); in ReassociateOps()
982 To[0].getNode()->dump(&DAG); in CombineTo()
985 assert((!To[i].getNode() || in CombineTo()
994 if (To[i].getNode()) { in CombineTo()
995 AddToWorklist(To[i].getNode()); in CombineTo()
996 AddUsersToWorklist(To[i].getNode()); in CombineTo()
1017 AddToWorklist(TLO.New.getNode()); in CommitTargetLoweringOpt()
1018 AddUsersToWorklist(TLO.New.getNode()); in CommitTargetLoweringOpt()
1023 if (TLO.Old.getNode()->use_empty()) in CommitTargetLoweringOpt()
1024 deleteAndRecombine(TLO.Old.getNode()); in CommitTargetLoweringOpt()
1036 AddToWorklist(Op.getNode()); in SimplifyDemandedBits()
1040 LLVM_DEBUG(dbgs() << "\nReplacing.2 "; TLO.Old.getNode()->dump(&DAG); in SimplifyDemandedBits()
1041 dbgs() << "\nWith: "; TLO.New.getNode()->dump(&DAG); in SimplifyDemandedBits()
1060 AddToWorklist(Op.getNode()); in SimplifyDemandedVectorElts()
1064 LLVM_DEBUG(dbgs() << "\nReplacing.2 "; TLO.Old.getNode()->dump(&DAG); in SimplifyDemandedVectorElts()
1065 dbgs() << "\nWith: "; TLO.New.getNode()->dump(&DAG); in SimplifyDemandedVectorElts()
1075 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, VT, SDValue(ExtLoad, 0)); in ReplaceLoadWithPromotedLoad()
1078 Trunc.getNode()->dump(&DAG); dbgs() << '\n'); in ReplaceLoadWithPromotedLoad()
1083 AddToWorklist(Trunc.getNode()); in ReplaceLoadWithPromotedLoad()
1089 if (ISD::isUNINDEXEDLoad(Op.getNode())) { in PromoteOperand()
1105 return DAG.getNode(ISD::AssertSext, DL, PVT, Op0, Op.getOperand(1)); in PromoteOperand()
1109 return DAG.getNode(ISD::AssertZext, DL, PVT, Op0, Op.getOperand(1)); in PromoteOperand()
1114 return DAG.getNode(ExtOpc, DL, PVT, Op); in PromoteOperand()
1120 return DAG.getNode(ISD::ANY_EXTEND, DL, PVT, Op); in PromoteOperand()
1130 if (!NewOp.getNode()) in SExtPromoteOperand()
1132 AddToWorklist(NewOp.getNode()); in SExtPromoteOperand()
1135 ReplaceLoadWithPromotedLoad(Op.getNode(), NewOp.getNode()); in SExtPromoteOperand()
1136 return DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, NewOp.getValueType(), NewOp, in SExtPromoteOperand()
1145 if (!NewOp.getNode()) in ZExtPromoteOperand()
1147 AddToWorklist(NewOp.getNode()); in ZExtPromoteOperand()
1150 ReplaceLoadWithPromotedLoad(Op.getNode(), NewOp.getNode()); in ZExtPromoteOperand()
1177 LLVM_DEBUG(dbgs() << "\nPromoting "; Op.getNode()->dump(&DAG)); in PromoteIntBinOp()
1189 DAG.getNode(ISD::TRUNCATE, DL, VT, DAG.getNode(Opc, DL, PVT, NN0, NN1)); in PromoteIntBinOp()
1197 CombineTo(Op.getNode(), RV); in PromoteIntBinOp()
1201 if (Replace0 && Replace1 && N0.getNode()->isPredecessorOf(N1.getNode())) { in PromoteIntBinOp()
1207 AddToWorklist(NN0.getNode()); in PromoteIntBinOp()
1208 ReplaceLoadWithPromotedLoad(N0.getNode(), NN0.getNode()); in PromoteIntBinOp()
1211 AddToWorklist(NN1.getNode()); in PromoteIntBinOp()
1212 ReplaceLoadWithPromotedLoad(N1.getNode(), NN1.getNode()); in PromoteIntBinOp()
1242 LLVM_DEBUG(dbgs() << "\nPromoting "; Op.getNode()->dump(&DAG)); in PromoteIntShiftOp()
1254 if (!N0.getNode()) in PromoteIntShiftOp()
1259 DAG.getNode(ISD::TRUNCATE, DL, VT, DAG.getNode(Opc, DL, PVT, N0, N1)); in PromoteIntShiftOp()
1261 AddToWorklist(N0.getNode()); in PromoteIntShiftOp()
1263 ReplaceLoadWithPromotedLoad(Op.getOperand(0).getNode(), N0.getNode()); in PromoteIntShiftOp()
1294 LLVM_DEBUG(dbgs() << "\nPromoting "; Op.getNode()->dump(&DAG)); in PromoteExtend()
1295 return DAG.getNode(Op.getOpcode(), SDLoc(Op), VT, Op.getOperand(0)); in PromoteExtend()
1304 if (!ISD::isUNINDEXEDLoad(Op.getNode())) in PromoteLoad()
1324 SDNode *N = Op.getNode(); in PromoteLoad()
1332 SDValue Result = DAG.getNode(ISD::TRUNCATE, DL, VT, NewLD); in PromoteLoad()
1335 Result.getNode()->dump(&DAG); dbgs() << '\n'); in PromoteLoad()
1340 AddToWorklist(Result.getNode()); in PromoteLoad()
1365 Nodes.insert(ChildN.getNode()); in recursivelyDeleteUnusedNodes()
1437 if (!CombinedNodes.count(ChildN.getNode())) in Run()
1438 AddToWorklist(ChildN.getNode()); in Run()
1442 if (!RV.getNode()) in Run()
1451 if (RV.getNode() == N) in Run()
1458 LLVM_DEBUG(dbgs() << " ... into: "; RV.getNode()->dump(&DAG)); in Run()
1460 if (N->getNumValues() == RV.getNode()->getNumValues()) in Run()
1461 DAG.ReplaceAllUsesWith(N, RV.getNode()); in Run()
1469 AddToWorklist(RV.getNode()); in Run()
1470 AddUsersToWorklist(RV.getNode()); in Run()
1603 if (!RV.getNode()) { in combine()
1619 if (!RV.getNode()) { in combine()
1649 if (!RV.getNode() && TLI.isCommutativeBinOp(N->getOpcode()) && in combine()
1686 if (getInputChainForNode(N->getOperand(0).getNode()) == N->getOperand(1)) in visitTokenFactor()
1688 if (getInputChainForNode(N->getOperand(1).getNode()) == N->getOperand(0)) in visitTokenFactor()
1719 if (Op.hasOneUse() && !is_contained(TFs, Op.getNode())) { in visitTokenFactor()
1721 TFs.push_back(Op.getNode()); in visitTokenFactor()
1723 AddToWorklist(Op.getNode()); in visitTokenFactor()
1731 if (SeenOps.insert(Op.getNode()).second) in visitTokenFactor()
1754 Worklist.push_back(std::make_pair(Op.getNode(), NumLeftToConsider++)); in visitTokenFactor()
1765 while (OrigOpNumber < Ops.size() && Ops[OrigOpNumber].getNode() != Op) in visitTokenFactor()
1804 AddToWorklist(i, Op.getNode(), CurOpNumber); in visitTokenFactor()
1808 AddToWorklist(i, CurNode->getOperand(0).getNode(), CurOpNumber); in visitTokenFactor()
1812 AddToWorklist(i, MemNode->getChain().getNode(), CurOpNumber); in visitTokenFactor()
1831 if (SeenChains.count(Op.getNode()) == 0) in visitTokenFactor()
1834 Result = DAG.getNode(ISD::TokenFactor, SDLoc(N), MVT::Other, PrunedOps); in visitTokenFactor()
1836 Result = DAG.getNode(ISD::TokenFactor, SDLoc(N), MVT::Other, Ops); in visitTokenFactor()
1929 SDValue NewCT = SelOpNo ? DAG.getNode(BinOpcode, DL, VT, CBO, CT) in foldBinOpIntoSelect()
1930 : DAG.getNode(BinOpcode, DL, VT, CT, CBO); in foldBinOpIntoSelect()
1936 SDValue NewCF = SelOpNo ? DAG.getNode(BinOpcode, DL, VT, CBO, CF) in foldBinOpIntoSelect()
1937 : DAG.getNode(BinOpcode, DL, VT, CF, CBO); in foldBinOpIntoSelect()
1982 return DAG.getNode(IsAdd ? ISD::SUB : ISD::ADD, DL, VT, C1, LowBit); in foldAddSubBoolOfMaskedVal()
2017 SDValue NewShift = DAG.getNode(ShOpcode, DL, VT, Not.getOperand(0), ShAmt); in foldAddSubOfSignBit()
2019 return DAG.getNode(ISD::ADD, DL, VT, NewShift, DAG.getConstant(NewC, DL, VT)); in foldAddSubOfSignBit()
2034 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitADD()
2036 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitADD()
2050 return DAG.getNode(ISD::ADD, DL, VT, N1, N0); in visitADD()
2052 return DAG.FoldConstantArithmetic(ISD::ADD, DL, VT, N0.getNode(), in visitADD()
2053 N1.getNode()); in visitADD()
2065 return DAG.getNode(ISD::SUB, DL, VT, in visitADD()
2066 DAG.getNode(ISD::ADD, DL, VT, N1, N0.getOperand(0)), in visitADD()
2082 return DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Not); in visitADD()
2091 SDValue Add0 = DAG.getNode(ISD::ADD, DL, VT, N1, N0.getOperand(1)); in visitADD()
2092 return DAG.getNode(ISD::ADD, DL, VT, N0.getOperand(0), Add0); in visitADD()
2105 return DAG.getNode(ISD::SUB, DL, VT, N1, N0.getOperand(1)); in visitADD()
2109 return DAG.getNode(ISD::SUB, DL, VT, N0, N1.getOperand(1)); in visitADD()
2122 return DAG.getNode(ISD::SUB, DL, VT, N1.getOperand(0), in visitADD()
2128 return DAG.getNode(ISD::SUB, DL, VT, N1.getOperand(0), in visitADD()
2135 return DAG.getNode(N1.getOpcode(), DL, VT, N1.getOperand(0).getOperand(0), in visitADD()
2146 return DAG.getNode(ISD::SUB, DL, VT, in visitADD()
2147 DAG.getNode(ISD::ADD, SDLoc(N0), VT, N00, N10), in visitADD()
2148 DAG.getNode(ISD::ADD, SDLoc(N1), VT, N01, N11)); in visitADD()
2163 return DAG.getNode(ISD::OR, DL, VT, N0, N1); in visitADD()
2167 return DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, VT), in visitADD()
2191 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitADDSAT()
2193 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitADDSAT()
2204 return DAG.getNode(Opcode, DL, VT, N1, N0); in visitADDSAT()
2206 return DAG.FoldConstantArithmetic(Opcode, DL, VT, N0.getNode(), in visitADDSAT()
2207 N1.getNode()); in visitADDSAT()
2217 return DAG.getNode(ISD::ADD, DL, VT, N0, N1); in visitADDSAT()
2267 return DAG.getNode(ISD::SUB, DL, VT, N0, in visitADDLike()
2268 DAG.getNode(ISD::SHL, DL, VT, in visitADDLike()
2280 return DAG.getNode(ISD::SUB, DL, VT, N0, AndOp0); in visitADDLike()
2287 SDValue ZExt = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, N0.getOperand(0)); in visitADDLike()
2288 return DAG.getNode(ISD::SUB, DL, VT, N1, ZExt); in visitADDLike()
2295 SDValue ZExt = DAG.getNode(ISD::AND, DL, VT, N1.getOperand(0), in visitADDLike()
2297 return DAG.getNode(ISD::SUB, DL, VT, N0, ZExt); in visitADDLike()
2304 return DAG.getNode(ISD::ADDCARRY, DL, N1->getVTList(), in visitADDLike()
2310 return DAG.getNode(ISD::ADDCARRY, DL, in visitADDLike()
2325 return CombineTo(N, DAG.getNode(ISD::ADD, DL, VT, N0, N1), in visitADDC()
2326 DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitADDC()
2332 return DAG.getNode(ISD::ADDC, DL, N->getVTList(), N1, N0); in visitADDC()
2336 return CombineTo(N, N0, DAG.getNode(ISD::CARRY_FALSE, in visitADDC()
2341 return CombineTo(N, DAG.getNode(ISD::ADD, DL, VT, N0, N1), in visitADDC()
2342 DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitADDC()
2360 return DAG.getNode(ISD::XOR, DL, VT, V, Cst); in flipBoolean()
2391 return CombineTo(N, DAG.getNode(ISD::ADD, DL, VT, N0, N1), in visitUADDO()
2398 return DAG.getNode(ISD::UADDO, DL, N->getVTList(), N1, N0); in visitUADDO()
2406 return CombineTo(N, DAG.getNode(ISD::ADD, DL, VT, N0, N1), in visitUADDO()
2411 SDValue Sub = DAG.getNode(ISD::USUBO, DL, N->getVTList(), in visitUADDO()
2436 return DAG.getNode(ISD::ADDCARRY, SDLoc(N), N->getVTList(), N0, Y, in visitUADDOLike()
2443 return DAG.getNode(ISD::ADDCARRY, SDLoc(N), N->getVTList(), N0, in visitUADDOLike()
2458 return DAG.getNode(ISD::ADDE, SDLoc(N), N->getVTList(), in visitADDE()
2463 return DAG.getNode(ISD::ADDC, SDLoc(N), N->getVTList(), N0, N1); in visitADDE()
2478 return DAG.getNode(ISD::ADDCARRY, DL, N->getVTList(), N1, N0, CarryIn); in visitADDCARRY()
2484 return DAG.getNode(ISD::UADDO, DL, N->getVTList(), N0, N1); in visitADDCARRY()
2493 AddToWorklist(CarryExt.getNode()); in visitADDCARRY()
2494 return CombineTo(N, DAG.getNode(ISD::AND, DL, VT, CarryExt, in visitADDCARRY()
2502 SDValue Sub = DAG.getNode(ISD::SUBCARRY, DL, N->getVTList(), in visitADDCARRY()
2525 return DAG.getNode(ISD::ADDCARRY, SDLoc(N), N->getVTList(), in visitADDCARRYLike()
2553 auto NewY = DAG.getNode(ISD::ADDCARRY, SDLoc(N), Y->getVTList(), in visitADDCARRYLike()
2556 AddToWorklist(NewY.getNode()); in visitADDCARRYLike()
2557 return DAG.getNode(ISD::ADDCARRY, SDLoc(N), N->getVTList(), N0, in visitADDCARRYLike()
2589 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitSUB()
2600 return DAG.FoldConstantArithmetic(ISD::SUB, DL, VT, N0.getNode(), in visitSUB()
2601 N1.getNode()); in visitSUB()
2611 return DAG.getNode(ISD::ADD, DL, VT, N0, in visitSUB()
2626 return DAG.getNode(NewSh, DL, VT, N1.getOperand(0), N1.getOperand(1)); in visitSUB()
2647 return DAG.getNode(ISD::XOR, DL, VT, N1, N0); in visitSUB()
2651 return DAG.getNode(ISD::ADD, DL, VT, N0, N1.getOperand(1)); in visitSUB()
2670 SDValue NewC = DAG.getNode(ISD::SUB, DL, VT, N0, N11); in visitSUB()
2671 return DAG.getNode(ISD::SUB, DL, VT, NewC, N1.getOperand(0)); in visitSUB()
2680 return DAG.getNode(N0.getOperand(1).getOpcode(), DL, VT, N0.getOperand(0), in visitSUB()
2686 return DAG.getNode(ISD::ADD, DL, VT, N0.getOperand(0), in visitSUB()
2692 return DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), in visitSUB()
2697 return DAG.getNode(ISD::ADD, DL, VT, N0, in visitSUB()
2698 DAG.getNode(ISD::SUB, DL, VT, N1.getOperand(1), in visitSUB()
2705 SDValue Mul = DAG.getNode(ISD::MUL, DL, VT, in visitSUB()
2708 return DAG.getNode(ISD::ADD, DL, VT, N0, Mul); in visitSUB()
2712 SDValue Mul = DAG.getNode(ISD::MUL, DL, VT, in visitSUB()
2715 return DAG.getNode(ISD::ADD, DL, VT, N0, Mul); in visitSUB()
2740 return DAG.getNode(ISD::ABS, SDLoc(N), VT, S0); in visitSUB()
2764 SDValue ZExt = DAG.getNode(ISD::AND, DL, VT, N1.getOperand(0), in visitSUB()
2766 return DAG.getNode(ISD::ADD, DL, VT, N0, ZExt); in visitSUB()
2776 SDValue SRA = DAG.getNode(ISD::SRA, DL, VT, N1.getOperand(0), ShAmt); in visitSUB()
2777 return DAG.getNode(ISD::ADD, DL, VT, N0, SRA); in visitSUB()
2795 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitSUBSAT()
2810 return DAG.FoldConstantArithmetic(N->getOpcode(), DL, VT, N0.getNode(), in visitSUBSAT()
2811 N1.getNode()); in visitSUBSAT()
2829 return CombineTo(N, DAG.getNode(ISD::SUB, DL, VT, N0, N1), in visitSUBC()
2830 DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitSUBC()
2835 DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitSUBC()
2839 return CombineTo(N, N0, DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitSUBC()
2843 return CombineTo(N, DAG.getNode(ISD::XOR, DL, VT, N1, N0), in visitSUBC()
2844 DAG.getNode(ISD::CARRY_FALSE, DL, MVT::Glue)); in visitSUBC()
2861 return CombineTo(N, DAG.getNode(ISD::SUB, DL, VT, N0, N1), in visitUSUBO()
2875 return CombineTo(N, DAG.getNode(ISD::XOR, DL, VT, N1, N0), in visitUSUBO()
2888 return DAG.getNode(ISD::SUBC, SDLoc(N), N->getVTList(), N0, N1); in visitSUBE()
2902 return DAG.getNode(ISD::USUBO, SDLoc(N), N->getVTList(), N0, N1); in visitSUBCARRY()
2927 N0IsConst = ISD::isConstantSplatVector(N0.getNode(), ConstValue0); in visitMUL()
2928 N1IsConst = ISD::isConstantSplatVector(N1.getNode(), ConstValue1); in visitMUL()
2951 N0.getNode(), N1.getNode()); in visitMUL()
2956 return DAG.getNode(ISD::MUL, SDLoc(N), VT, N1, N0); in visitMUL()
2970 return DAG.getNode(ISD::SUB, DL, VT, in visitMUL()
2981 return DAG.getNode(ISD::SHL, DL, VT, N0, Trunc); in visitMUL()
2989 return DAG.getNode(ISD::SUB, DL, VT, in visitMUL()
2991 DAG.getNode(ISD::SHL, DL, VT, N0, in visitMUL()
3020 SDValue Shl = DAG.getNode(ISD::SHL, DL, VT, N0, in visitMUL()
3022 SDValue R = DAG.getNode(MathOp, DL, VT, Shl, N0); in visitMUL()
3024 R = DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, VT), R); in visitMUL()
3033 SDValue C3 = DAG.getNode(ISD::SHL, SDLoc(N), VT, N1, N0.getOperand(1)); in visitMUL()
3035 return DAG.getNode(ISD::MUL, SDLoc(N), VT, N0.getOperand(0), C3); in visitMUL()
3046 N0.getNode()->hasOneUse()) { in visitMUL()
3050 N1.getNode()->hasOneUse()) { in visitMUL()
3054 if (Sh.getNode()) { in visitMUL()
3055 SDValue Mul = DAG.getNode(ISD::MUL, SDLoc(N), VT, Sh.getOperand(0), Y); in visitMUL()
3056 return DAG.getNode(ISD::SHL, SDLoc(N), VT, Mul, Sh.getOperand(1)); in visitMUL()
3065 return DAG.getNode(ISD::ADD, SDLoc(N), VT, in visitMUL()
3066 DAG.getNode(ISD::MUL, SDLoc(N0), VT, in visitMUL()
3068 DAG.getNode(ISD::MUL, SDLoc(N1), VT, in visitMUL()
3135 for (SDNode::use_iterator UI = Op0.getNode()->use_begin(), in useDivRem()
3136 UE = Op0.getNode()->use_end(); UI != UE; ++UI) { in useDivRem()
3151 combined = DAG.getNode(DivRemOpc, SDLoc(Node), VTs, Op0, Op1); in useDivRem()
3234 return DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, VT), N0); in visitSDIV()
3250 return DAG.getNode(ISD::UDIV, DL, N1.getValueType(), N0, N1); in visitSDIV()
3257 SDValue Mul = DAG.getNode(ISD::MUL, DL, VT, V, N1); in visitSDIV()
3258 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0, Mul); in visitSDIV()
3259 AddToWorklist(Mul.getNode()); in visitSDIV()
3260 AddToWorklist(Sub.getNode()); in visitSDIV()
3307 SDValue C1 = DAG.getNode(ISD::CTTZ, DL, VT, N1); in visitSDIVLike()
3309 SDValue Inexact = DAG.getNode(ISD::SUB, DL, ShiftAmtTy, Bits, C1); in visitSDIVLike()
3314 SDValue Sign = DAG.getNode(ISD::SRA, DL, VT, N0, in visitSDIVLike()
3316 AddToWorklist(Sign.getNode()); in visitSDIVLike()
3319 SDValue Srl = DAG.getNode(ISD::SRL, DL, VT, Sign, Inexact); in visitSDIVLike()
3320 AddToWorklist(Srl.getNode()); in visitSDIVLike()
3321 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N0, Srl); in visitSDIVLike()
3322 AddToWorklist(Add.getNode()); in visitSDIVLike()
3323 SDValue Sra = DAG.getNode(ISD::SRA, DL, VT, Add, C1); in visitSDIVLike()
3324 AddToWorklist(Sra.getNode()); in visitSDIVLike()
3332 SDValue IsOneOrAllOnes = DAG.getNode(ISD::OR, DL, CCVT, IsOne, IsAllOnes); in visitSDIVLike()
3338 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, Zero, Sra); in visitSDIVLike()
3395 SDValue Mul = DAG.getNode(ISD::MUL, DL, VT, V, N1); in visitUDIV()
3396 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0, Mul); in visitUDIV()
3397 AddToWorklist(Mul.getNode()); in visitUDIV()
3398 AddToWorklist(Sub.getNode()); in visitUDIV()
3423 AddToWorklist(LogBase2.getNode()); in visitUDIVLike()
3427 AddToWorklist(Trunc.getNode()); in visitUDIVLike()
3428 return DAG.getNode(ISD::SRL, DL, VT, N0, Trunc); in visitUDIVLike()
3437 AddToWorklist(LogBase2.getNode()); in visitUDIVLike()
3441 AddToWorklist(Trunc.getNode()); in visitUDIVLike()
3442 SDValue Add = DAG.getNode(ISD::ADD, DL, ADDVT, N1.getOperand(1), Trunc); in visitUDIVLike()
3443 AddToWorklist(Add.getNode()); in visitUDIVLike()
3444 return DAG.getNode(ISD::SRL, DL, VT, N0, Add); in visitUDIVLike()
3490 return DAG.getNode(ISD::UREM, DL, VT, N0, N1); in visitREM()
3495 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N1, NegOne); in visitREM()
3496 AddToWorklist(Add.getNode()); in visitREM()
3497 return DAG.getNode(ISD::AND, DL, VT, N0, Add); in visitREM()
3502 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N1, NegOne); in visitREM()
3503 AddToWorklist(Add.getNode()); in visitREM()
3504 return DAG.getNode(ISD::AND, DL, VT, N0, Add); in visitREM()
3520 if (OptimizedDiv.getNode()) { in visitREM()
3526 SDValue Mul = DAG.getNode(ISD::MUL, DL, VT, OptimizedDiv, N1); in visitREM()
3527 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0, Mul); in visitREM()
3528 AddToWorklist(OptimizedDiv.getNode()); in visitREM()
3529 AddToWorklist(Mul.getNode()); in visitREM()
3549 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitMULHS()
3551 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitMULHS()
3560 return DAG.getNode(ISD::SRA, DL, N0.getValueType(), N0, in visitMULHS()
3575 N0 = DAG.getNode(ISD::SIGN_EXTEND, DL, NewVT, N0); in visitMULHS()
3576 N1 = DAG.getNode(ISD::SIGN_EXTEND, DL, NewVT, N1); in visitMULHS()
3577 N1 = DAG.getNode(ISD::MUL, DL, NewVT, N0, N1); in visitMULHS()
3578 N1 = DAG.getNode(ISD::SRL, DL, NewVT, N1, in visitMULHS()
3581 return DAG.getNode(ISD::TRUNCATE, DL, VT, N1); in visitMULHS()
3596 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitMULHU()
3598 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitMULHU()
3618 SDValue SRLAmt = DAG.getNode( in visitMULHU()
3622 return DAG.getNode(ISD::SRL, DL, VT, N0, Trunc); in visitMULHU()
3632 N0 = DAG.getNode(ISD::ZERO_EXTEND, DL, NewVT, N0); in visitMULHU()
3633 N1 = DAG.getNode(ISD::ZERO_EXTEND, DL, NewVT, N1); in visitMULHU()
3634 N1 = DAG.getNode(ISD::MUL, DL, NewVT, N0, N1); in visitMULHU()
3635 N1 = DAG.getNode(ISD::SRL, DL, NewVT, N1, in visitMULHU()
3638 return DAG.getNode(ISD::TRUNCATE, DL, VT, N1); in visitMULHU()
3654 SDValue Res = DAG.getNode(LoOp, SDLoc(N), N->getValueType(0), N->ops()); in SimplifyNodeWithTwoResults()
3662 SDValue Res = DAG.getNode(HiOp, SDLoc(N), N->getValueType(1), N->ops()); in SimplifyNodeWithTwoResults()
3672 SDValue Lo = DAG.getNode(LoOp, SDLoc(N), N->getValueType(0), N->ops()); in SimplifyNodeWithTwoResults()
3673 AddToWorklist(Lo.getNode()); in SimplifyNodeWithTwoResults()
3674 SDValue LoOpt = combine(Lo.getNode()); in SimplifyNodeWithTwoResults()
3675 if (LoOpt.getNode() && LoOpt.getNode() != Lo.getNode() && in SimplifyNodeWithTwoResults()
3682 SDValue Hi = DAG.getNode(HiOp, SDLoc(N), N->getValueType(1), N->ops()); in SimplifyNodeWithTwoResults()
3683 AddToWorklist(Hi.getNode()); in SimplifyNodeWithTwoResults()
3684 SDValue HiOpt = combine(Hi.getNode()); in SimplifyNodeWithTwoResults()
3685 if (HiOpt.getNode() && HiOpt != Hi && in SimplifyNodeWithTwoResults()
3708 SDValue Lo = DAG.getNode(ISD::SIGN_EXTEND, DL, NewVT, N->getOperand(0)); in visitSMUL_LOHI()
3709 SDValue Hi = DAG.getNode(ISD::SIGN_EXTEND, DL, NewVT, N->getOperand(1)); in visitSMUL_LOHI()
3710 Lo = DAG.getNode(ISD::MUL, DL, NewVT, Lo, Hi); in visitSMUL_LOHI()
3712 Hi = DAG.getNode(ISD::SRL, DL, NewVT, Lo, in visitSMUL_LOHI()
3715 Hi = DAG.getNode(ISD::TRUNCATE, DL, VT, Hi); in visitSMUL_LOHI()
3717 Lo = DAG.getNode(ISD::TRUNCATE, DL, VT, Lo); in visitSMUL_LOHI()
3739 SDValue Lo = DAG.getNode(ISD::ZERO_EXTEND, DL, NewVT, N->getOperand(0)); in visitUMUL_LOHI()
3740 SDValue Hi = DAG.getNode(ISD::ZERO_EXTEND, DL, NewVT, N->getOperand(1)); in visitUMUL_LOHI()
3741 Lo = DAG.getNode(ISD::MUL, DL, NewVT, Lo, Hi); in visitUMUL_LOHI()
3743 Hi = DAG.getNode(ISD::SRL, DL, NewVT, Lo, in visitUMUL_LOHI()
3746 Hi = DAG.getNode(ISD::TRUNCATE, DL, VT, Hi); in visitUMUL_LOHI()
3748 Lo = DAG.getNode(ISD::TRUNCATE, DL, VT, Lo); in visitUMUL_LOHI()
3760 return DAG.getNode(ISD::SADDO, SDLoc(N), N->getVTList(), in visitSMULO()
3770 return DAG.getNode(ISD::UADDO, SDLoc(N), N->getVTList(), in visitUMULO()
3795 return DAG.getNode(N->getOpcode(), SDLoc(N), VT, N1, N0); in visitIMINMAX()
3813 return DAG.getNode(AltOpcode, SDLoc(N), VT, N0, N1); in visitIMINMAX()
3862 SDValue Logic = DAG.getNode(LogicOpcode, DL, XVT, X, Y); in hoistLogicOpWithSameOpcodeHands()
3863 return DAG.getNode(HandOpcode, DL, VT, Logic); in hoistLogicOpWithSameOpcodeHands()
3884 SDValue Logic = DAG.getNode(LogicOpcode, DL, XVT, X, Y); in hoistLogicOpWithSameOpcodeHands()
3885 return DAG.getNode(HandOpcode, DL, VT, Logic); in hoistLogicOpWithSameOpcodeHands()
3896 SDValue Logic = DAG.getNode(LogicOpcode, DL, XVT, X, Y); in hoistLogicOpWithSameOpcodeHands()
3897 return DAG.getNode(HandOpcode, DL, VT, Logic, N0.getOperand(1)); in hoistLogicOpWithSameOpcodeHands()
3905 SDValue Logic = DAG.getNode(LogicOpcode, DL, XVT, X, Y); in hoistLogicOpWithSameOpcodeHands()
3906 return DAG.getNode(HandOpcode, DL, VT, Logic); in hoistLogicOpWithSameOpcodeHands()
3920 SDValue Logic = DAG.getNode(LogicOpcode, DL, XVT, X, Y); in hoistLogicOpWithSameOpcodeHands()
3921 return DAG.getNode(HandOpcode, DL, VT, Logic); in hoistLogicOpWithSameOpcodeHands()
3958 if (N0.getOperand(1) == N1.getOperand(1) && ShOp.getNode()) { in hoistLogicOpWithSameOpcodeHands()
3959 SDValue Logic = DAG.getNode(LogicOpcode, DL, VT, in hoistLogicOpWithSameOpcodeHands()
3971 if (N0.getOperand(0) == N1.getOperand(0) && ShOp.getNode()) { in hoistLogicOpWithSameOpcodeHands()
3972 SDValue Logic = DAG.getNode(LogicOpcode, DL, VT, N0.getOperand(1), in hoistLogicOpWithSameOpcodeHands()
4027 SDValue Or = DAG.getNode(ISD::OR, SDLoc(N0), OpVT, LL, RL); in foldLogicOfSetCCs()
4028 AddToWorklist(Or.getNode()); in foldLogicOfSetCCs()
4046 SDValue And = DAG.getNode(ISD::AND, SDLoc(N0), OpVT, LL, RL); in foldLogicOfSetCCs()
4047 AddToWorklist(And.getNode()); in foldLogicOfSetCCs()
4060 SDValue Add = DAG.getNode(ISD::ADD, SDLoc(N0), OpVT, LL, One); in foldLogicOfSetCCs()
4061 AddToWorklist(Add.getNode()); in foldLogicOfSetCCs()
4072 SDValue XorL = DAG.getNode(ISD::XOR, SDLoc(N0), OpVT, LL, LR); in foldLogicOfSetCCs()
4073 SDValue XorR = DAG.getNode(ISD::XOR, SDLoc(N1), OpVT, RL, RR); in foldLogicOfSetCCs()
4074 SDValue Or = DAG.getNode(ISD::OR, DL, OpVT, XorL, XorR); in foldLogicOfSetCCs()
4136 DAG.getNode(ISD::ADD, DL0, VT, in visitANDLike()
4138 CombineTo(N0.getNode(), NewAdd); in visitANDLike()
4184 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SL, HalfVT, in visitANDLike()
4189 SDValue Shift = DAG.getNode(ISD::SRL, SL, HalfVT, Trunc, ShiftK); in visitANDLike()
4190 SDValue And = DAG.getNode(ISD::AND, SL, HalfVT, Shift, NewMask); in visitANDLike()
4191 return DAG.getNode(ISD::ZERO_EXTEND, SL, VT, And); in visitANDLike()
4373 if (!SearchForAndLoads(Op.getNode(), Loads, NodesWithConsts, Mask, in SearchForAndLoads()
4384 NodeToMask = Op.getNode(); in SearchForAndLoads()
4429 SDValue And = DAG.getNode(ISD::AND, SDLoc(FixupNode), in BackwardsPropagateMask()
4434 DAG.UpdateNodeOperands(And.getNode(), SDValue(FixupNode, 0), MaskOp); in BackwardsPropagateMask()
4445 SDValue And = DAG.getNode(ISD::AND, SDLoc(Op1), Op1.getValueType(), in BackwardsPropagateMask()
4454 SDValue And = DAG.getNode(ISD::AND, SDLoc(Load), Load->getValueType(0), in BackwardsPropagateMask()
4459 DAG.UpdateNodeOperands(And.getNode(), SDValue(Load, 0), MaskOp), 0); in BackwardsPropagateMask()
4460 SDValue NewLoad = ReduceLoadWidth(And.getNode()); in BackwardsPropagateMask()
4465 DAG.ReplaceAllUsesWith(N, N->getOperand(0).getNode()); in BackwardsPropagateMask()
4518 SDValue T0 = DAG.getNode(InnerShift, DL, VT, X, Y); in unfoldExtremeBitClearingToShifts()
4520 SDValue T1 = DAG.getNode(OuterShift, DL, VT, T0, Y); in unfoldExtremeBitClearingToShifts()
4540 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitAND()
4544 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitAND()
4550 if (ISD::isBuildVectorAllOnes(N0.getNode())) in visitAND()
4552 if (ISD::isBuildVectorAllOnes(N1.getNode())) in visitAND()
4564 return DAG.getNode(ISD::AND, SDLoc(N), VT, N1, N0); in visitAND()
4599 SDValue Zext = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N), in visitAND()
4608 CombineTo(N0.getNode(), Zext); in visitAND()
4695 CombineTo(N, (N0.getNode() == Load) ? NewLoad : N0); in visitAND()
4766 return DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N), VT, SubRHS.getOperand(0)); in visitAND()
4776 if (ISD::isEXTLoad(N0.getNode()) && ISD::isUNINDEXEDLoad(N0.getNode())) { in visitAND()
4790 CombineTo(N0.getNode(), ExtLoad, ExtLoad.getValue(1)); in visitAND()
4795 if (ISD::isSEXTLoad(N0.getNode()) && ISD::isUNINDEXEDLoad(N0.getNode()) && in visitAND()
4810 CombineTo(N0.getNode(), ExtLoad, ExtLoad.getValue(1)); in visitAND()
4816 if (SDValue BSwap = MatchBSwapHWordLow(N0.getNode(), N0.getOperand(0), in visitAND()
4847 if (!N0.getNode()->hasOneUse()) in MatchBSwapHWordLow()
4860 if (!N1.getNode()->hasOneUse()) in MatchBSwapHWordLow()
4873 if (!N0.getNode()->hasOneUse() || !N1.getNode()->hasOneUse()) in MatchBSwapHWordLow()
4886 if (!N00.getNode()->hasOneUse()) in MatchBSwapHWordLow()
4897 if (!N10.getNode()->hasOneUse()) in MatchBSwapHWordLow()
4930 SDValue Res = DAG.getNode(ISD::BSWAP, SDLoc(N), VT, N00); in MatchBSwapHWordLow()
4933 Res = DAG.getNode(ISD::SRL, DL, VT, Res, in MatchBSwapHWordLow()
4947 if (!N.getNode()->hasOneUse()) in isBSwapHWordElement()
5026 Parts[MaskByteOffset] = N0.getOperand(0).getNode(); in isBSwapHWordElement()
5090 SDValue BSwap = DAG.getNode(ISD::BSWAP, DL, VT, in MatchBSwapHWord()
5097 return DAG.getNode(ISD::ROTL, DL, VT, BSwap, ShAmt); in MatchBSwapHWord()
5099 return DAG.getNode(ISD::ROTR, DL, VT, BSwap, ShAmt); in MatchBSwapHWord()
5100 return DAG.getNode(ISD::OR, DL, VT, in MatchBSwapHWord()
5101 DAG.getNode(ISD::SHL, DL, VT, BSwap, ShAmt), in MatchBSwapHWord()
5102 DAG.getNode(ISD::SRL, DL, VT, BSwap, ShAmt)); in MatchBSwapHWord()
5121 (N0.getNode()->hasOneUse() || N1.getNode()->hasOneUse())) { in visitORLike()
5135 SDValue X = DAG.getNode(ISD::OR, SDLoc(N0), VT, in visitORLike()
5137 return DAG.getNode(ISD::AND, DL, VT, X, in visitORLike()
5149 (N0.getNode()->hasOneUse() || N1.getNode()->hasOneUse())) { in visitORLike()
5150 SDValue X = DAG.getNode(ISD::OR, SDLoc(N0), VT, in visitORLike()
5152 return DAG.getNode(ISD::AND, DL, VT, N0.getOperand(0), X); in visitORLike()
5173 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitOR()
5175 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitOR()
5179 if (ISD::isBuildVectorAllOnes(N0.getNode())) in visitOR()
5182 if (ISD::isBuildVectorAllOnes(N1.getNode())) in visitOR()
5192 bool ZeroN00 = ISD::isBuildVectorAllZeros(N0.getOperand(0).getNode()); in visitOR()
5193 bool ZeroN01 = ISD::isBuildVectorAllZeros(N0.getOperand(1).getNode()); in visitOR()
5194 bool ZeroN10 = ISD::isBuildVectorAllZeros(N1.getOperand(0).getNode()); in visitOR()
5195 bool ZeroN11 = ISD::isBuildVectorAllZeros(N1.getOperand(1).getNode()); in visitOR()
5262 return DAG.getNode(ISD::OR, SDLoc(N), VT, N1, N0); in visitOR()
5295 if (N0.getOpcode() == ISD::AND && N0.getNode()->hasOneUse() && in visitOR()
5298 ISD::OR, SDLoc(N1), VT, N1.getNode(), N0.getOperand(1).getNode())) { in visitOR()
5299 SDValue IOR = DAG.getNode(ISD::OR, SDLoc(N0), VT, N0.getOperand(0), N1); in visitOR()
5300 AddToWorklist(IOR.getNode()); in visitOR()
5301 return DAG.getNode(ISD::AND, SDLoc(N), VT, COR, IOR); in visitOR()
5455 return DAG.getNode(Opcode, DL, ResVT, OppShiftLHS, NewShiftNode); in extractShiftForRotate()
5589 return DAG.getNode(HasPos ? PosOpcode : NegOpcode, DL, VT, Shifted, in MatchRotatePosNeg()
5590 HasPos ? Pos : Neg).getNode(); in MatchRotatePosNeg()
5614 return DAG.getNode(ISD::TRUNCATE, SDLoc(LHS), LHS.getValueType(), in MatchRotate()
5615 SDValue(Rot, 0)).getNode(); in MatchRotate()
5683 SDValue Rot = DAG.getNode(HasROTL ? ISD::ROTL : ISD::ROTR, DL, VT, in MatchRotate()
5687 if (LHSMask.getNode() || RHSMask.getNode()) { in MatchRotate()
5691 if (LHSMask.getNode()) { in MatchRotate()
5692 SDValue RHSBits = DAG.getNode(ISD::SRL, DL, VT, AllOnes, RHSShiftAmt); in MatchRotate()
5693 Mask = DAG.getNode(ISD::AND, DL, VT, Mask, in MatchRotate()
5694 DAG.getNode(ISD::OR, DL, VT, LHSMask, RHSBits)); in MatchRotate()
5696 if (RHSMask.getNode()) { in MatchRotate()
5697 SDValue LHSBits = DAG.getNode(ISD::SHL, DL, VT, AllOnes, LHSShiftAmt); in MatchRotate()
5698 Mask = DAG.getNode(ISD::AND, DL, VT, Mask, in MatchRotate()
5699 DAG.getNode(ISD::OR, DL, VT, RHSMask, LHSBits)); in MatchRotate()
5702 Rot = DAG.getNode(ISD::AND, DL, VT, Rot, Mask); in MatchRotate()
5705 return Rot.getNode(); in MatchRotate()
5710 if (LHSMask.getNode() || RHSMask.getNode()) in MatchRotate()
5852 auto L = cast<LoadSDNode>(Op.getNode()); in calculateByteProvider()
6033 DAG.ReplaceAllUsesOfValueWith(SDValue(L, 1), SDValue(NewLoad.getNode(), 1)); in MatchLoadCombine()
6035 return NeedsBswap ? DAG.getNode(ISD::BSWAP, SDLoc(N), VT, NewLoad) : NewLoad; in MatchLoadCombine()
6093 if (isa<ConstantSDNode>(M.getNode())) in unfoldMaskedMerge()
6107 SDValue LHS = DAG.getNode(ISD::AND, DL, VT, NotX, M); in unfoldMaskedMerge()
6109 SDValue RHS = DAG.getNode(ISD::OR, DL, VT, M, Y); in unfoldMaskedMerge()
6110 return DAG.getNode(ISD::AND, DL, VT, NotLHS, RHS); in unfoldMaskedMerge()
6113 SDValue LHS = DAG.getNode(ISD::AND, DL, VT, X, M); in unfoldMaskedMerge()
6115 SDValue RHS = DAG.getNode(ISD::AND, DL, VT, Y, NotM); in unfoldMaskedMerge()
6117 return DAG.getNode(ISD::OR, DL, VT, LHS, RHS); in unfoldMaskedMerge()
6131 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitXOR()
6133 if (ISD::isBuildVectorAllZeros(N1.getNode())) in visitXOR()
6154 return DAG.getNode(ISD::XOR, DL, VT, N1, N0); in visitXOR()
6169 if (TLI.isConstTrueVal(N1.getNode()) && isSetCCEquivalent(N0, LHS, RHS, CC)) { in visitXOR()
6191 V = DAG.getNode(ISD::XOR, DL0, V.getValueType(), V, in visitXOR()
6193 AddToWorklist(V.getNode()); in visitXOR()
6194 return DAG.getNode(ISD::ZERO_EXTEND, DL, VT, V); in visitXOR()
6203 LHS = DAG.getNode(ISD::XOR, SDLoc(LHS), VT, LHS, N1); // LHS = ~LHS in visitXOR()
6204 RHS = DAG.getNode(ISD::XOR, SDLoc(RHS), VT, RHS, N1); // RHS = ~RHS in visitXOR()
6205 AddToWorklist(LHS.getNode()); AddToWorklist(RHS.getNode()); in visitXOR()
6206 return DAG.getNode(NewOpcode, DL, VT, LHS, RHS); in visitXOR()
6215 LHS = DAG.getNode(ISD::XOR, SDLoc(LHS), VT, LHS, N1); // LHS = ~LHS in visitXOR()
6216 RHS = DAG.getNode(ISD::XOR, SDLoc(RHS), VT, RHS, N1); // RHS = ~RHS in visitXOR()
6217 AddToWorklist(LHS.getNode()); AddToWorklist(RHS.getNode()); in visitXOR()
6218 return DAG.getNode(NewOpcode, DL, VT, LHS, RHS); in visitXOR()
6225 AddToWorklist(NotX.getNode()); in visitXOR()
6226 return DAG.getNode(ISD::AND, DL, VT, NotX, N1); in visitXOR()
6245 return DAG.getNode(N0Opcode, DL, VT, Not, N0.getOperand(1)); in visitXOR()
6262 return DAG.getNode(ISD::ABS, DL, VT, S0); in visitXOR()
6291 return DAG.getNode(ISD::ROTL, DL, VT, DAG.getConstant(~1, DL, VT), in visitXOR()
6318 SDNode *LHS = N->getOperand(0).getNode(); in visitShiftByConstant()
6349 SDNode *BinOpLHSVal = LHS->getOperand(0).getNode(); in visitShiftByConstant()
6379 SDValue NewRHS = DAG.getNode(N->getOpcode(), SDLoc(LHS->getOperand(1)), in visitShiftByConstant()
6385 SDValue NewShift = DAG.getNode(N->getOpcode(), in visitShiftByConstant()
6390 return DAG.getNode(LHS->getOpcode(), SDLoc(N), VT, NewShift, NewRHS); in visitShiftByConstant()
6404 SDValue Trunc00 = DAG.getNode(ISD::TRUNCATE, DL, TruncVT, N00); in distributeTruncateThroughAnd()
6405 SDValue Trunc01 = DAG.getNode(ISD::TRUNCATE, DL, TruncVT, N01); in distributeTruncateThroughAnd()
6406 AddToWorklist(Trunc00.getNode()); in distributeTruncateThroughAnd()
6407 AddToWorklist(Trunc01.getNode()); in distributeTruncateThroughAnd()
6408 return DAG.getNode(ISD::AND, DL, TruncVT, Trunc00, Trunc01); in distributeTruncateThroughAnd()
6437 return DAG.getNode(N->getOpcode(), dl, VT, N0, in visitRotate()
6445 if (SDValue NewOp1 = distributeTruncateThroughAnd(N1.getNode())) in visitRotate()
6446 return DAG.getNode(N->getOpcode(), dl, VT, N0, NewOp1); in visitRotate()
6462 ISD::SREM, dl, ShiftVT, CombinedShift.getNode(), in visitRotate()
6463 BitsizeC.getNode()); in visitRotate()
6464 return DAG.getNode(N->getOpcode(), dl, VT, N0->getOperand(0), in visitRotate()
6500 return DAG.getNode(ISD::AND, SDLoc(N), VT, N00, C); in visitSHL()
6523 if (SDValue NewOp1 = distributeTruncateThroughAnd(N1.getNode())) in visitSHL()
6524 return DAG.getNode(ISD::SHL, SDLoc(N), VT, N0, NewOp1); in visitSHL()
6552 SDValue Sum = DAG.getNode(ISD::ADD, DL, ShiftVT, N1, N0.getOperand(1)); in visitSHL()
6553 return DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0), Sum); in visitSHL()
6580 return DAG.getNode( in visitSHL()
6582 DAG.getNode(N0.getOpcode(), DL, VT, N0Op0->getOperand(0)), in visitSHL()
6602 SDValue NewSHL = DAG.getNode(ISD::SHL, DL, NewOp0.getValueType(), in visitSHL()
6605 AddToWorklist(NewSHL.getNode()); in visitSHL()
6606 return DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N0), VT, NewSHL); in visitSHL()
6621 return DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0), in visitSHL()
6623 return DAG.getNode(N0.getOpcode(), DL, VT, N0.getOperand(0), in visitSHL()
6643 Shift = DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0), in visitSHL()
6648 Shift = DAG.getNode(ISD::SRL, DL, VT, N0.getOperand(0), in visitSHL()
6652 return DAG.getNode(ISD::AND, DL, VT, Shift, in visitSHL()
6663 SDValue HiBitsMask = DAG.getNode(ISD::SHL, DL, VT, AllBits, N1); in visitSHL()
6664 return DAG.getNode(ISD::AND, DL, VT, N0.getOperand(0), HiBitsMask); in visitSHL()
6672 N0.getNode()->hasOneUse() && in visitSHL()
6676 SDValue Shl0 = DAG.getNode(ISD::SHL, SDLoc(N0), VT, N0.getOperand(0), N1); in visitSHL()
6677 SDValue Shl1 = DAG.getNode(ISD::SHL, SDLoc(N1), VT, N0.getOperand(1), N1); in visitSHL()
6678 AddToWorklist(Shl0.getNode()); in visitSHL()
6679 AddToWorklist(Shl1.getNode()); in visitSHL()
6680 return DAG.getNode(N0.getOpcode(), SDLoc(N), VT, Shl0, Shl1); in visitSHL()
6684 if (N0.getOpcode() == ISD::MUL && N0.getNode()->hasOneUse() && in visitSHL()
6687 SDValue Shl = DAG.getNode(ISD::SHL, SDLoc(N1), VT, N0.getOperand(1), N1); in visitSHL()
6689 return DAG.getNode(ISD::MUL, SDLoc(N), VT, N0.getOperand(0), Shl); in visitSHL()
6739 return DAG.getNode(ISD::SIGN_EXTEND_INREG, SDLoc(N), VT, in visitSRA()
6767 return DAG.getNode(ISD::SRA, DL, VT, N0.getOperand(0), ShiftValue); in visitSRA()
6801 SDValue Shift = DAG.getNode(ISD::SRL, DL, VT, in visitSRA()
6803 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, TruncVT, in visitSRA()
6805 return DAG.getNode(ISD::SIGN_EXTEND, DL, in visitSRA()
6814 if (SDValue NewOp1 = distributeTruncateThroughAnd(N1.getNode())) in visitSRA()
6815 return DAG.getNode(ISD::SRA, SDLoc(N), VT, N0, NewOp1); in visitSRA()
6836 SDValue SRA = DAG.getNode(ISD::SRA, DL, LargeVT, in visitSRA()
6838 return DAG.getNode(ISD::TRUNCATE, DL, VT, SRA); in visitSRA()
6849 return DAG.getNode(ISD::SRL, SDLoc(N), VT, N0, N1); in visitSRA()
6909 SDValue Sum = DAG.getNode(ISD::ADD, DL, ShiftVT, N1, N0.getOperand(1)); in visitSRL()
6910 return DAG.getNode(ISD::SRL, DL, VT, N0.getOperand(0), Sum); in visitSRL()
6928 return DAG.getNode(ISD::TRUNCATE, DL, VT, in visitSRL()
6929 DAG.getNode(ISD::SRL, DL, InnerShiftVT, in visitSRL()
6942 DAG.getNode(ISD::SRL, DL, VT, DAG.getAllOnesConstant(DL, VT), N1); in visitSRL()
6943 AddToWorklist(Mask.getNode()); in visitSRL()
6944 return DAG.getNode(ISD::AND, DL, VT, N0.getOperand(0), Mask); in visitSRL()
6958 SDValue SmallShift = DAG.getNode(ISD::SRL, DL0, SmallVT, in visitSRL()
6962 AddToWorklist(SmallShift.getNode()); in visitSRL()
6965 return DAG.getNode(ISD::AND, DL, VT, in visitSRL()
6966 DAG.getNode(ISD::ANY_EXTEND, DL, VT, SmallShift), in visitSRL()
6975 return DAG.getNode(ISD::SRL, SDLoc(N), VT, N0.getOperand(0), N1); in visitSRL()
7003 Op = DAG.getNode(ISD::SRL, DL, VT, Op, in visitSRL()
7006 AddToWorklist(Op.getNode()); in visitSRL()
7010 return DAG.getNode(ISD::XOR, DL, VT, in visitSRL()
7018 if (SDValue NewOp1 = distributeTruncateThroughAnd(N1.getNode())) in visitSRL()
7019 return DAG.getNode(ISD::SRL, SDLoc(N), VT, N0, NewOp1); in visitSRL()
7086 return DAG.getNode(N->getOpcode(), SDLoc(N), VT, N0, N1, in visitFunnelShift()
7097 return DAG.getNode(RotOpc, SDLoc(N), VT, N0, N2); in visitFunnelShift()
7108 return DAG.getNode(ISD::ABS, SDLoc(N), VT, N0); in visitABS()
7124 return DAG.getNode(ISD::BSWAP, SDLoc(N), VT, N0); in visitBSWAP()
7137 return DAG.getNode(ISD::BITREVERSE, SDLoc(N), VT, N0); in visitBITREVERSE()
7150 return DAG.getNode(ISD::CTLZ, SDLoc(N), VT, N0); in visitCTLZ()
7155 return DAG.getNode(ISD::CTLZ_ZERO_UNDEF, SDLoc(N), VT, N0); in visitCTLZ()
7167 return DAG.getNode(ISD::CTLZ_ZERO_UNDEF, SDLoc(N), VT, N0); in visitCTLZ_ZERO_UNDEF()
7177 return DAG.getNode(ISD::CTTZ, SDLoc(N), VT, N0); in visitCTTZ()
7182 return DAG.getNode(ISD::CTTZ_ZERO_UNDEF, SDLoc(N), VT, N0); in visitCTTZ()
7194 return DAG.getNode(ISD::CTTZ_ZERO_UNDEF, SDLoc(N), VT, N0); in visitCTTZ_ZERO_UNDEF()
7204 return DAG.getNode(ISD::CTPOP, SDLoc(N), VT, N0); in visitCTPOP()
7239 return DAG.getNode(IEEEOpcode, DL, VT, LHS, RHS); in combineMinNumMaxNum()
7243 return DAG.getNode(Opcode, DL, VT, LHS, RHS); in combineMinNumMaxNum()
7254 return DAG.getNode(IEEEOpcode, DL, VT, LHS, RHS); in combineMinNumMaxNum()
7258 return DAG.getNode(Opcode, DL, VT, LHS, RHS); in combineMinNumMaxNum()
7291 NotCond = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, NotCond); in foldSelectOfConstants()
7298 NotCond = DAG.getNode(ISD::SIGN_EXTEND, DL, VT, NotCond); in foldSelectOfConstants()
7304 Cond = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Cond); in foldSelectOfConstants()
7310 Cond = DAG.getNode(ISD::SIGN_EXTEND, DL, VT, Cond); in foldSelectOfConstants()
7321 Cond = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Cond); in foldSelectOfConstants()
7322 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
7327 Cond = DAG.getNode(ISD::SIGN_EXTEND, DL, VT, Cond); in foldSelectOfConstants()
7328 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
7351 DAG.getNode(ISD::XOR, DL, CondVT, Cond, DAG.getConstant(1, DL, CondVT)); in foldSelectOfConstants()
7374 return DAG.getNode(ISD::OR, DL, VT, N0, N2); in visitSELECT()
7382 AddToWorklist(NOTNode.getNode()); in visitSELECT()
7383 return DAG.getNode(ISD::AND, DL, VT, NOTNode, N2); in visitSELECT()
7388 AddToWorklist(NOTNode.getNode()); in visitSELECT()
7389 return DAG.getNode(ISD::OR, DL, VT, NOTNode, N1); in visitSELECT()
7394 return DAG.getNode(ISD::AND, DL, VT, N0, N1); in visitSELECT()
7417 DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond1, N1, N2); in visitSELECT()
7419 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0, in visitSELECT()
7427 DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond1, N1, N2); in visitSELECT()
7429 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0, N1, in visitSELECT()
7441 SDValue And = DAG.getNode(ISD::AND, DL, N0.getValueType(), N0, N1_0); in visitSELECT()
7442 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), And, N1_1, N2); in visitSELECT()
7446 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Combined, N1_1, in visitSELECT()
7458 SDValue Or = DAG.getNode(ISD::OR, DL, N0.getValueType(), N0, N2_0); in visitSELECT()
7459 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Or, N1, N2_2); in visitSELECT()
7463 return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Combined, N1, in visitSELECT()
7472 return DAG.getNode(ISD::SELECT, DL, VT, N0->getOperand(0), N2, N1); in visitSELECT()
7513 SDValue UAO = DAG.getNode(ISD::UADDO, DL, VTs, Cond0, N2.getOperand(1)); in visitSELECT()
7520 return DAG.getNode(ISD::SELECT_CC, DL, VT, Cond0, Cond1, N1, N2, in visitSELECT()
7540 Lo = DAG.getNode(N->getOpcode(), DL, LoVT, LL, RL, N->getOperand(2)); in SplitVSETCC()
7541 Hi = DAG.getNode(N->getOpcode(), DL, HiVT, LH, RH, N->getOperand(2)); in SplitVSETCC()
7576 else if (Cond->getOperand(i).getNode() != BottomHalf) in ConvertSelectToConcatVector()
7588 else if (Cond->getOperand(i).getNode() != TopHalf) in ConvertSelectToConcatVector()
7595 return DAG.getNode( in ConvertSelectToConcatVector()
7622 std::tie(MaskLo, MaskHi) = SplitVSETCC(Mask.getNode(), DAG); in visitMSCATTER()
7681 std::tie(MaskLo, MaskHi) = SplitVSETCC(Mask.getNode(), DAG); in visitMSTORE()
7722 AddToWorklist(Lo.getNode()); in visitMSTORE()
7723 AddToWorklist(Hi.getNode()); in visitMSTORE()
7725 return DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Lo, Hi); in visitMSTORE()
7754 std::tie(MaskLo, MaskHi) = SplitVSETCC(Mask.getNode(), DAG); in visitMGATHER()
7789 AddToWorklist(Lo.getNode()); in visitMGATHER()
7790 AddToWorklist(Hi.getNode()); in visitMGATHER()
7794 Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Lo.getValue(1), in visitMGATHER()
7801 SDValue GatherRes = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Lo, Hi); in visitMGATHER()
7828 std::tie(MaskLo, MaskHi) = SplitVSETCC(Mask.getNode(), DAG); in visitMLOAD()
7871 AddToWorklist(Lo.getNode()); in visitMLOAD()
7872 AddToWorklist(Hi.getNode()); in visitMLOAD()
7876 Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Lo.getValue(1), in visitMLOAD()
7883 SDValue LoadRes = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Lo, Hi); in visitMLOAD()
7900 !ISD::isBuildVectorOfConstantSDNodes(N1.getNode()) || in foldVSelectOfConstants()
7901 !ISD::isBuildVectorOfConstantSDNodes(N2.getNode())) in foldVSelectOfConstants()
7931 SDValue ExtendedCond = DAG.getNode(ExtendOpcode, DL, VT, Cond); in foldVSelectOfConstants()
7932 return DAG.getNode(ISD::ADD, DL, VT, ExtendedCond, N2); in foldVSelectOfConstants()
7960 bool RHSIsAllZeros = ISD::isBuildVectorAllZeros(RHS.getNode()); in visitVSELECT()
7963 (ISD::isBuildVectorAllOnes(RHS.getNode()) && CC == ISD::SETGT)) && in visitVSELECT()
7965 isAbs = ISD::isBuildVectorAllZeros(N2.getOperand(0).getNode()); in visitVSELECT()
7968 isAbs = ISD::isBuildVectorAllZeros(N1.getOperand(0).getNode()); in visitVSELECT()
7973 return DAG.getNode(ISD::ABS, DL, VT, LHS); in visitVSELECT()
7975 SDValue Shift = DAG.getNode( in visitVSELECT()
7978 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, LHS, Shift); in visitVSELECT()
7979 AddToWorklist(Shift.getNode()); in visitVSELECT()
7980 AddToWorklist(Add.getNode()); in visitVSELECT()
7981 return DAG.getNode(ISD::XOR, DL, VT, Add, Shift); in visitVSELECT()
8020 SDValue WideLHS = DAG.getNode(ExtOpcode, DL, WideVT, LHS); in visitVSELECT()
8021 SDValue WideRHS = DAG.getNode(ExtOpcode, DL, WideVT, RHS); in visitVSELECT()
8033 if (ISD::isBuildVectorAllOnes(N0.getNode())) in visitVSELECT()
8036 if (ISD::isBuildVectorAllZeros(N0.getNode())) in visitVSELECT()
8044 ISD::isBuildVectorOfConstantSDNodes(N0.getNode())) { in visitVSELECT()
8070 AddToWorklist(SCC.getNode()); in visitSELECT_CC()
8072 if (ConstantSDNode *SCCC = dyn_cast<ConstantSDNode>(SCC.getNode())) { in visitSELECT_CC()
8083 return DAG.getNode(ISD::SELECT_CC, SDLoc(N), N2.getValueType(), in visitSELECT_CC()
8117 if (NewSetCC.getNode() == N) in visitSETCC()
8135 return DAG.getNode(ISD::SETCC, SDLoc(N), N->getVTList(), LHS, RHS, Cond); in visitSETCCCARRY()
8161 return DAG.getNode(Opcode, SDLoc(N), VT, N0); in tryToFoldExtendOfConstant()
8168 ISD::isBuildVectorOfConstantSDNodes(N0.getNode()))) in tryToFoldExtendOfConstant()
8213 for (SDNode::use_iterator UI = N0.getNode()->use_begin(), in ExtendUsesToFormExtLoad()
8214 UE = N0.getNode()->use_end(); in ExtendUsesToFormExtLoad()
8280 Ops.push_back(DAG.getNode(ExtType, DL, ExtLoad->getValueType(0), SOp)); in ExtendSetCCUses()
8284 CombineTo(SetCC, DAG.getNode(ISD::SETCC, DL, SetCC->getValueType(0), Ops)); in ExtendSetCCUses()
8361 BasePtr = DAG.getNode(ISD::ADD, DL, BasePtr.getValueType(), BasePtr, in CombineExtLoad()
8368 SDValue NewChain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Chains); in CombineExtLoad()
8369 SDValue NewValue = DAG.getNode(ISD::CONCAT_VECTORS, DL, DstVT, Loads); in CombineExtLoad()
8372 AddToWorklist(NewChain.getNode()); in CombineExtLoad()
8379 DAG.getNode(ISD::TRUNCATE, SDLoc(N0), N0.getValueType(), NewValue); in CombineExtLoad()
8381 CombineTo(N0.getNode(), Trunc, NewChain); in CombineExtLoad()
8425 if (!ExtendUsesToFormExtLoad(VT, N1.getNode(), N1.getOperand(0), in CombineZExtLogicopShiftLoad()
8435 SDValue Shift = DAG.getNode(N1.getOpcode(), DL1, VT, ExtLoad, in CombineZExtLogicopShiftLoad()
8441 SDValue And = DAG.getNode(N0.getOpcode(), DL0, VT, Shift, in CombineZExtLogicopShiftLoad()
8449 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SDLoc(Load), in CombineZExtLogicopShiftLoad()
8492 CastA = DAG.getNode(CastOpcode, DL, VT, A, Cast->getOperand(1)); in matchVSelectOpSizesWithSetCC()
8493 CastB = DAG.getNode(CastOpcode, DL, VT, B, Cast->getOperand(1)); in matchVSelectOpSizesWithSetCC()
8495 CastA = DAG.getNode(CastOpcode, DL, VT, A); in matchVSelectOpSizesWithSetCC()
8496 CastB = DAG.getNode(CastOpcode, DL, VT, B); in matchVSelectOpSizesWithSetCC()
8498 return DAG.getNode(ISD::VSELECT, DL, VT, SetCC, CastA, CastB); in matchVSelectOpSizesWithSetCC()
8507 SDNode *N0Node = N0.getNode(); in tryToFoldExtOfExtload()
8536 if (!ISD::isNON_EXTLoad(N0.getNode()) || in tryToFoldExtOfLoad()
8537 !ISD::isUNINDEXEDLoad(N0.getNode()) || in tryToFoldExtOfLoad()
8564 DAG.getNode(ISD::TRUNCATE, SDLoc(N0), N0.getValueType(), ExtLoad); in tryToFoldExtOfLoad()
8596 return DAG.getNode(ShiftOpcode, DL, VT, NotX, ShiftAmount); in foldExtendedSignBitTest()
8612 return DAG.getNode(ISD::SIGN_EXTEND, DL, VT, N0.getOperand(0)); in visitSIGN_EXTEND()
8617 if (SDValue NarrowLoad = ReduceLoadWidth(N0.getNode())) { in visitSIGN_EXTEND()
8618 SDNode *oye = N0.getOperand(0).getNode(); in visitSIGN_EXTEND()
8619 if (NarrowLoad.getNode() != N0.getNode()) { in visitSIGN_EXTEND()
8620 CombineTo(N0.getNode(), NarrowLoad); in visitSIGN_EXTEND()
8644 return DAG.getNode(ISD::SIGN_EXTEND, DL, VT, Op); in visitSIGN_EXTEND()
8649 return DAG.getNode(ISD::TRUNCATE, DL, VT, Op); in visitSIGN_EXTEND()
8656 Op = DAG.getNode(ISD::ANY_EXTEND, SDLoc(N0), VT, Op); in visitSIGN_EXTEND()
8658 Op = DAG.getNode(ISD::TRUNCATE, SDLoc(N0), VT, Op); in visitSIGN_EXTEND()
8659 return DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, VT, Op, in visitSIGN_EXTEND()
8692 bool DoXform = ExtendUsesToFormExtLoad(VT, N0.getNode(), N0.getOperand(0), in visitSIGN_EXTEND()
8701 SDValue And = DAG.getNode(N0.getOpcode(), DL, VT, in visitSIGN_EXTEND()
8710 DAG.getNode(ISD::TRUNCATE, DL, N0.getValueType(), And); in visitSIGN_EXTEND()
8711 CombineTo(N0.getNode(), TruncAnd); in visitSIGN_EXTEND()
8716 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SDLoc(LN00), in visitSIGN_EXTEND()
8802 return DAG.getNode(ISD::ZERO_EXTEND, DL, VT, N0); in visitSIGN_EXTEND()
8853 return DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N), VT, in visitZERO_EXTEND()
8877 if (SDValue NarrowLoad = ReduceLoadWidth(N0.getNode())) { in visitZERO_EXTEND()
8878 SDNode *oye = N0.getOperand(0).getNode(); in visitZERO_EXTEND()
8879 if (NarrowLoad.getNode() != N0.getNode()) { in visitZERO_EXTEND()
8880 CombineTo(N0.getNode(), NarrowLoad); in visitZERO_EXTEND()
8897 AddToWorklist(Op.getNode()); in visitZERO_EXTEND()
8907 AddToWorklist(Op.getNode()); in visitZERO_EXTEND()
8929 return DAG.getNode(ISD::AND, DL, VT, in visitZERO_EXTEND()
8969 DoXform = ExtendUsesToFormExtLoad(VT, N0.getNode(), N0.getOperand(0), in visitZERO_EXTEND()
8979 SDValue And = DAG.getNode(N0.getOpcode(), DL, VT, in visitZERO_EXTEND()
8988 DAG.getNode(ISD::TRUNCATE, DL, N0.getValueType(), And); in visitZERO_EXTEND()
8989 CombineTo(N0.getNode(), TruncAnd); in visitZERO_EXTEND()
8994 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SDLoc(LN00), in visitZERO_EXTEND()
9033 SDValue VSetCC = DAG.getNode(ISD::SETCC, DL, VT, N0.getOperand(0), in visitZERO_EXTEND()
9035 return DAG.getNode(ISD::AND, DL, VT, VSetCC, VecOnes); in visitZERO_EXTEND()
9043 DAG.getNode(ISD::SETCC, DL, MatchingVectorType, N0.getOperand(0), in visitZERO_EXTEND()
9045 return DAG.getNode(ISD::AND, DL, VT, DAG.getSExtOrTrunc(VsetCC, DL, VT), in visitZERO_EXTEND()
9079 ShAmt = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i32, ShAmt); in visitZERO_EXTEND()
9081 return DAG.getNode(N0.getOpcode(), DL, VT, in visitZERO_EXTEND()
9082 DAG.getNode(ISD::ZERO_EXTEND, DL, VT, N0.getOperand(0)), in visitZERO_EXTEND()
9105 return DAG.getNode(N0.getOpcode(), SDLoc(N), VT, N0.getOperand(0)); in visitANY_EXTEND()
9110 if (SDValue NarrowLoad = ReduceLoadWidth(N0.getNode())) { in visitANY_EXTEND()
9111 SDNode *oye = N0.getOperand(0).getNode(); in visitANY_EXTEND()
9112 if (NarrowLoad.getNode() != N0.getNode()) { in visitANY_EXTEND()
9113 CombineTo(N0.getNode(), NarrowLoad); in visitANY_EXTEND()
9137 return DAG.getNode(ISD::AND, DL, VT, in visitANY_EXTEND()
9145 if (ISD::isNON_EXTLoad(N0.getNode()) && !VT.isVector() && in visitANY_EXTEND()
9146 ISD::isUNINDEXEDLoad(N0.getNode()) && in visitANY_EXTEND()
9166 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SDLoc(N0), in visitANY_EXTEND()
9177 if (N0.getOpcode() == ISD::LOAD && !ISD::isNON_EXTLoad(N0.getNode()) && in visitANY_EXTEND()
9178 ISD::isUNINDEXEDLoad(N0.getNode()) && N0.hasOneUse()) { in visitANY_EXTEND()
9263 SDValue NewAssert = DAG.getNode(Opcode, DL, BigA.getValueType(), in visitAssertExt()
9265 return DAG.getNode(ISD::TRUNCATE, DL, N->getValueType(0), NewAssert); in visitAssertExt()
9282 SDValue NewAssert = DAG.getNode(Opcode, DL, BigA.getValueType(), in visitAssertExt()
9284 return DAG.getNode(ISD::TRUNCATE, DL, N->getValueType(0), NewAssert); in visitAssertExt()
9443 SDValue NewPtr = DAG.getNode(ISD::ADD, DL, in ReduceLoadWidth()
9447 AddToWorklist(NewPtr.getNode()); in ReduceLoadWidth()
9478 Result = DAG.getNode(ISD::SHL, DL, VT, in ReduceLoadWidth()
9493 Result = DAG.getNode(ISD::SHL, DL, VT, Result, ShiftC); in ReduceLoadWidth()
9514 return DAG.getNode(ISD::SIGN_EXTEND_INREG, SDLoc(N), VT, N0, N1); in visitSIGN_EXTEND_INREG()
9523 return DAG.getNode(ISD::SIGN_EXTEND_INREG, SDLoc(N), VT, in visitSIGN_EXTEND_INREG()
9536 return DAG.getNode(ISD::SIGN_EXTEND, SDLoc(N), VT, N00); in visitSIGN_EXTEND_INREG()
9546 return DAG.getNode(ISD::SIGN_EXTEND_VECTOR_INREG, SDLoc(N), VT, in visitSIGN_EXTEND_INREG()
9556 return DAG.getNode(ISD::SIGN_EXTEND, SDLoc(N), VT, N00, N1); in visitSIGN_EXTEND_INREG()
9583 return DAG.getNode(ISD::SRA, SDLoc(N), VT, in visitSIGN_EXTEND_INREG()
9592 if (ISD::isEXTLoad(N0.getNode()) && in visitSIGN_EXTEND_INREG()
9593 ISD::isUNINDEXEDLoad(N0.getNode()) && in visitSIGN_EXTEND_INREG()
9604 CombineTo(N0.getNode(), ExtLoad, ExtLoad.getValue(1)); in visitSIGN_EXTEND_INREG()
9605 AddToWorklist(ExtLoad.getNode()); in visitSIGN_EXTEND_INREG()
9609 if (ISD::isZEXTLoad(N0.getNode()) && ISD::isUNINDEXEDLoad(N0.getNode()) && in visitSIGN_EXTEND_INREG()
9620 CombineTo(N0.getNode(), ExtLoad, ExtLoad.getValue(1)); in visitSIGN_EXTEND_INREG()
9626 if (SDValue BSwap = MatchBSwapHWordLow(N0.getNode(), N0.getOperand(0), in visitSIGN_EXTEND_INREG()
9628 return DAG.getNode(ISD::SIGN_EXTEND_INREG, SDLoc(N), VT, in visitSIGN_EXTEND_INREG()
9678 return DAG.getNode(ISD::TRUNCATE, SDLoc(N), VT, N0.getOperand(0)); in visitTRUNCATE()
9682 SDValue C = DAG.getNode(ISD::TRUNCATE, SDLoc(N), VT, N0); in visitTRUNCATE()
9683 if (C.getNode() != N) in visitTRUNCATE()
9693 return DAG.getNode(N0.getOpcode(), SDLoc(N), VT, N0.getOperand(0)); in visitTRUNCATE()
9696 return DAG.getNode(ISD::TRUNCATE, SDLoc(N), VT, N0.getOperand(0)); in visitTRUNCATE()
9735 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, TrTy, in visitTRUNCATE()
9748 SDValue TruncOp0 = DAG.getNode(ISD::TRUNCATE, SL, VT, N0.getOperand(1)); in visitTRUNCATE()
9749 SDValue TruncOp1 = DAG.getNode(ISD::TRUNCATE, SL, VT, N0.getOperand(2)); in visitTRUNCATE()
9750 return DAG.getNode(ISD::SELECT, SDLoc(N), VT, Cond, TruncOp0, TruncOp1); in visitTRUNCATE()
9765 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SL, VT, N0.getOperand(0)); in visitTRUNCATE()
9768 AddToWorklist(Amt.getNode()); in visitTRUNCATE()
9770 return DAG.getNode(ISD::SHL, SL, VT, Trunc, Amt); in visitTRUNCATE()
9813 return DAG.getNode(ISD::TRUNCATE, SDLoc(N), VT, Shorter); in visitTRUNCATE()
9824 if (N0.hasOneUse() && ISD::isUNINDEXEDLoad(N0.getNode())) { in visitTRUNCATE()
9865 assert(V.getNode() && "The single defined operand is empty!"); in visitTRUNCATE()
9872 SDValue NV = DAG.getNode(ISD::TRUNCATE, SDLoc(V), VTs[i], V); in visitTRUNCATE()
9873 AddToWorklist(NV.getNode()); in visitTRUNCATE()
9876 return DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(N), VT, Opnds); in visitTRUNCATE()
9894 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SL, VT, in visitTRUNCATE()
9908 N0.hasOneUse() && !N0.getNode()->hasAnyUseOfValue(1) && in visitTRUNCATE()
9911 auto X = DAG.getNode(ISD::TRUNCATE, SL, VT, N0.getOperand(0)); in visitTRUNCATE()
9912 auto Y = DAG.getNode(ISD::TRUNCATE, SL, VT, N0.getOperand(1)); in visitTRUNCATE()
9914 return DAG.getNode(N0.getOpcode(), SL, VTs, X, Y, N0.getOperand(2)); in visitTRUNCATE()
9928 return DAG.getNode(ISD::EXTRACT_SUBVECTOR, SDLoc(N0->getOperand(0)), VT, in visitTRUNCATE()
9955 SDValue NarrowL = DAG.getNode(ISD::TRUNCATE, DL, VT, N0.getOperand(0)); in visitTRUNCATE()
9956 SDValue NarrowR = DAG.getNode(ISD::TRUNCATE, DL, VT, N0.getOperand(1)); in visitTRUNCATE()
9957 return DAG.getNode(N0.getOpcode(), DL, VT, NarrowL, NarrowR); in visitTRUNCATE()
9968 return Elt.getNode(); in getBuildPairElt()
9969 return Elt.getOperand(Elt.getResNo()).getNode(); in getBuildPairElt()
10055 SDValue FPOp = DAG.getNode(FPOpcode, SDLoc(N), VT, LogicOp0.getOperand(0)); in foldBitcastedFPLogic()
10058 return DAG.getNode(ISD::FNEG, SDLoc(N), VT, FPOp); in foldBitcastedFPLogic()
10079 N0.getOpcode() == ISD::BUILD_VECTOR && N0.getNode()->hasOneUse() && in visitBITCAST()
10081 return ConstantFoldBITCASTofBUILD_VECTOR(N0.getNode(), in visitBITCAST()
10095 if (C.getNode() != N) in visitBITCAST()
10106 if (ISD::isNormalLoad(N0.getNode()) && N0.hasOneUse() && in visitBITCAST()
10151 N0.getNode()->hasOneUse() && VT.isInteger() && in visitBITCAST()
10154 AddToWorklist(NewConv.getNode()); in visitBITCAST()
10164 AddToWorklist(FlipBit.getNode()); in visitBITCAST()
10168 DAG.getNode(ISD::EXTRACT_ELEMENT, SDLoc(NewConv), MVT::i64, NewConv, in visitBITCAST()
10171 AddToWorklist(Hi.getNode()); in visitBITCAST()
10172 FlipBit = DAG.getNode(ISD::AND, SDLoc(N0), MVT::i64, Hi, SignBit); in visitBITCAST()
10173 AddToWorklist(FlipBit.getNode()); in visitBITCAST()
10176 DAG.getNode(ISD::BUILD_PAIR, SDLoc(N0), VT, FlipBit, FlipBit); in visitBITCAST()
10177 AddToWorklist(FlipBits.getNode()); in visitBITCAST()
10178 return DAG.getNode(ISD::XOR, DL, VT, NewConv, FlipBits); in visitBITCAST()
10182 return DAG.getNode(ISD::XOR, DL, VT, in visitBITCAST()
10185 return DAG.getNode(ISD::AND, DL, VT, in visitBITCAST()
10200 if (N0.getOpcode() == ISD::FCOPYSIGN && N0.getNode()->hasOneUse() && in visitBITCAST()
10207 AddToWorklist(X.getNode()); in visitBITCAST()
10212 X = DAG.getNode(ISD::SIGN_EXTEND, SDLoc(N), VT, X); in visitBITCAST()
10213 AddToWorklist(X.getNode()); in visitBITCAST()
10218 X = DAG.getNode(ISD::SRL, DL, in visitBITCAST()
10222 AddToWorklist(X.getNode()); in visitBITCAST()
10223 X = DAG.getNode(ISD::TRUNCATE, SDLoc(X), VT, X); in visitBITCAST()
10224 AddToWorklist(X.getNode()); in visitBITCAST()
10230 AddToWorklist(Cst.getNode()); in visitBITCAST()
10232 AddToWorklist(X.getNode()); in visitBITCAST()
10233 SDValue XorResult = DAG.getNode(ISD::XOR, SDLoc(N0), VT, Cst, X); in visitBITCAST()
10234 AddToWorklist(XorResult.getNode()); in visitBITCAST()
10235 SDValue XorResult64 = DAG.getNode( in visitBITCAST()
10239 AddToWorklist(XorResult64.getNode()); in visitBITCAST()
10241 DAG.getNode(ISD::AND, SDLoc(XorResult64), MVT::i64, XorResult64, in visitBITCAST()
10243 AddToWorklist(FlipBit.getNode()); in visitBITCAST()
10245 DAG.getNode(ISD::BUILD_PAIR, SDLoc(N0), VT, FlipBit, FlipBit); in visitBITCAST()
10246 AddToWorklist(FlipBits.getNode()); in visitBITCAST()
10247 return DAG.getNode(ISD::XOR, SDLoc(N), VT, Cst, FlipBits); in visitBITCAST()
10250 X = DAG.getNode(ISD::AND, SDLoc(X), VT, in visitBITCAST()
10252 AddToWorklist(X.getNode()); in visitBITCAST()
10255 Cst = DAG.getNode(ISD::AND, SDLoc(Cst), VT, in visitBITCAST()
10257 AddToWorklist(Cst.getNode()); in visitBITCAST()
10259 return DAG.getNode(ISD::OR, SDLoc(N), VT, X, Cst); in visitBITCAST()
10265 if (SDValue CombineLD = CombineConsecutiveLoads(N0.getNode(), VT)) in visitBITCAST()
10284 if (Op.isUndef() || ISD::isBuildVectorOfConstantSDNodes(Op.getNode()) || in visitBITCAST()
10285 ISD::isBuildVectorOfConstantFPSDNodes(Op.getNode())) in visitBITCAST()
10344 Op = DAG.getNode(ISD::TRUNCATE, SDLoc(BV), SrcEltVT, Op); in ConstantFoldBITCASTofBUILD_VECTOR()
10346 AddToWorklist(Ops.back().getNode()); in ConstantFoldBITCASTofBUILD_VECTOR()
10360 BV = ConstantFoldBITCASTofBUILD_VECTOR(BV, IntVT).getNode(); in ConstantFoldBITCASTofBUILD_VECTOR()
10368 SDNode *Tmp = ConstantFoldBITCASTofBUILD_VECTOR(BV, TmpVT).getNode(); in ConstantFoldBITCASTofBUILD_VECTOR()
10486 return AllowFusionGlobally || isContractable(N.getNode()); in visitFADDForFMACombine()
10491 if (N0.getNode()->use_size() > N1.getNode()->use_size()) in visitFADDForFMACombine()
10497 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10504 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10515 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10516 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFADDForFMACombine()
10518 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFADDForFMACombine()
10529 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10530 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFADDForFMACombine()
10532 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFADDForFMACombine()
10544 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10546 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10557 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10559 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10571 return DAG.getNode(PreferredFusedOpcode, SL, VT, X, Y, in visitFADDForFMACombine()
10572 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10573 DAG.getNode(ISD::FP_EXTEND, SL, VT, U), in visitFADDForFMACombine()
10574 DAG.getNode(ISD::FP_EXTEND, SL, VT, V), in visitFADDForFMACombine()
10598 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10599 DAG.getNode(ISD::FP_EXTEND, SL, VT, X), in visitFADDForFMACombine()
10600 DAG.getNode(ISD::FP_EXTEND, SL, VT, Y), in visitFADDForFMACombine()
10601 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFADDForFMACombine()
10602 DAG.getNode(ISD::FP_EXTEND, SL, VT, U), in visitFADDForFMACombine()
10603 DAG.getNode(ISD::FP_EXTEND, SL, VT, V), in visitFADDForFMACombine()
10698 return AllowFusionGlobally || isContractable(N.getNode()); in visitFSUBForFMACombine()
10703 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10705 DAG.getNode(ISD::FNEG, SL, VT, N1), Flags); in visitFSUBForFMACombine()
10711 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10712 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10722 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10723 DAG.getNode(ISD::FNEG, SL, VT, N00), N01, in visitFSUBForFMACombine()
10724 DAG.getNode(ISD::FNEG, SL, VT, N1), Flags); in visitFSUBForFMACombine()
10735 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10736 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10738 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10740 DAG.getNode(ISD::FNEG, SL, VT, N1), Flags); in visitFSUBForFMACombine()
10751 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10752 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10753 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10755 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10773 return DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10774 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10775 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10777 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10796 return DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10797 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10798 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10800 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10814 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10816 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10819 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10829 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10830 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10833 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10834 DAG.getNode(ISD::FNEG, SL, VT, N20), in visitFSUBForFMACombine()
10847 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10849 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10850 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10852 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10854 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10872 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10873 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10875 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10877 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10878 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10880 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10882 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10897 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10898 DAG.getNode(ISD::FNEG, SL, VT, N1.getOperand(0)), in visitFSUBForFMACombine()
10900 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10901 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10902 DAG.getNode(ISD::FP_EXTEND, SL, in visitFSUBForFMACombine()
10904 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10926 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10927 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10928 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10930 DAG.getNode(ISD::FP_EXTEND, SL, VT, N101), in visitFSUBForFMACombine()
10931 DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFSUBForFMACombine()
10932 DAG.getNode(ISD::FNEG, SL, VT, in visitFSUBForFMACombine()
10933 DAG.getNode(ISD::FP_EXTEND, SL, in visitFSUBForFMACombine()
10935 DAG.getNode(ISD::FP_EXTEND, SL, VT, in visitFSUBForFMACombine()
10989 return DAG.getNode(PreferredFusedOpcode, SL, VT, X.getOperand(0), Y, in visitFMULForFMADistributiveCombine()
10992 return DAG.getNode(PreferredFusedOpcode, SL, VT, X.getOperand(0), Y, in visitFMULForFMADistributiveCombine()
10993 DAG.getNode(ISD::FNEG, SL, VT, Y), Flags); in visitFMULForFMADistributiveCombine()
11012 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFMULForFMADistributiveCombine()
11013 DAG.getNode(ISD::FNEG, SL, VT, X.getOperand(1)), Y, in visitFMULForFMADistributiveCombine()
11016 return DAG.getNode(PreferredFusedOpcode, SL, VT, in visitFMULForFMADistributiveCombine()
11017 DAG.getNode(ISD::FNEG, SL, VT, X.getOperand(1)), Y, in visitFMULForFMADistributiveCombine()
11018 DAG.getNode(ISD::FNEG, SL, VT, Y), Flags); in visitFMULForFMADistributiveCombine()
11022 return DAG.getNode(PreferredFusedOpcode, SL, VT, X.getOperand(0), Y, in visitFMULForFMADistributiveCombine()
11023 DAG.getNode(ISD::FNEG, SL, VT, Y), Flags); in visitFMULForFMADistributiveCombine()
11025 return DAG.getNode(PreferredFusedOpcode, SL, VT, X.getOperand(0), Y, in visitFMULForFMADistributiveCombine()
11057 return DAG.getNode(ISD::FADD, DL, VT, N0, N1, Flags); in visitFADD()
11061 return DAG.getNode(ISD::FADD, DL, VT, N1, N0, Flags); in visitFADD()
11075 return DAG.getNode(ISD::FSUB, DL, VT, N0, in visitFADD()
11081 return DAG.getNode(ISD::FSUB, DL, VT, N1, in visitFADD()
11094 SDValue Add = DAG.getNode(ISD::FADD, DL, VT, B, B, Flags); in visitFADD()
11095 return DAG.getNode(ISD::FSUB, DL, VT, N1, Add, Flags); in visitFADD()
11100 SDValue Add = DAG.getNode(ISD::FADD, DL, VT, B, B, Flags); in visitFADD()
11101 return DAG.getNode(ISD::FSUB, DL, VT, N0, Add, Flags); in visitFADD()
11128 SDValue NewC = DAG.getNode(ISD::FADD, DL, VT, N0.getOperand(1), N1, Flags); in visitFADD()
11129 return DAG.getNode(ISD::FADD, DL, VT, N0.getOperand(0), NewC, Flags); in visitFADD()
11142 SDValue NewCFP = DAG.getNode(ISD::FADD, DL, VT, N0.getOperand(1), in visitFADD()
11144 return DAG.getNode(ISD::FMUL, DL, VT, N1, NewCFP, Flags); in visitFADD()
11151 SDValue NewCFP = DAG.getNode(ISD::FADD, DL, VT, N0.getOperand(1), in visitFADD()
11153 return DAG.getNode(ISD::FMUL, DL, VT, N0.getOperand(0), NewCFP, Flags); in visitFADD()
11163 SDValue NewCFP = DAG.getNode(ISD::FADD, DL, VT, N1.getOperand(1), in visitFADD()
11165 return DAG.getNode(ISD::FMUL, DL, VT, N0, NewCFP, Flags); in visitFADD()
11172 SDValue NewCFP = DAG.getNode(ISD::FADD, DL, VT, N1.getOperand(1), in visitFADD()
11174 return DAG.getNode(ISD::FMUL, DL, VT, N1.getOperand(0), NewCFP, Flags); in visitFADD()
11183 return DAG.getNode(ISD::FMUL, DL, VT, in visitFADD()
11193 return DAG.getNode(ISD::FMUL, DL, VT, in visitFADD()
11203 return DAG.getNode(ISD::FMUL, DL, VT, N0.getOperand(0), in visitFADD()
11211 AddToWorklist(Fused.getNode()); in visitFADD()
11234 return DAG.getNode(ISD::FSUB, DL, VT, N0, N1, Flags); in visitFSUB()
11260 return DAG.getNode(ISD::FNEG, DL, VT, N1, Flags); in visitFSUB()
11269 return DAG.getNode(ISD::FNEG, DL, VT, N1->getOperand(1), Flags); in visitFSUB()
11272 return DAG.getNode(ISD::FNEG, DL, VT, N1->getOperand(0), Flags); in visitFSUB()
11277 return DAG.getNode(ISD::FADD, DL, VT, N0, in visitFSUB()
11282 AddToWorklist(Fused.getNode()); in visitFSUB()
11308 return DAG.getNode(ISD::FMUL, DL, VT, N0, N1, Flags); in visitFMUL()
11313 return DAG.getNode(ISD::FMUL, DL, VT, N1, N0, Flags); in visitFMUL()
11339 SDValue MulConsts = DAG.getNode(ISD::FMUL, DL, VT, N01, N1, Flags); in visitFMUL()
11340 return DAG.getNode(ISD::FMUL, DL, VT, N00, MulConsts, Flags); in visitFMUL()
11349 SDValue MulConsts = DAG.getNode(ISD::FMUL, DL, VT, Two, N1, Flags); in visitFMUL()
11350 return DAG.getNode(ISD::FMUL, DL, VT, N0.getOperand(0), MulConsts, Flags); in visitFMUL()
11356 return DAG.getNode(ISD::FADD, DL, VT, N0, N0, Flags); in visitFMUL()
11361 return DAG.getNode(ISD::FNEG, DL, VT, N0); in visitFMUL()
11369 return DAG.getNode(ISD::FMUL, DL, VT, in visitFMUL()
11412 return DAG.getNode(ISD::FNEG, DL, VT, in visitFMUL()
11413 DAG.getNode(ISD::FABS, DL, VT, X)); in visitFMUL()
11415 return DAG.getNode(ISD::FABS, DL, VT, X); in visitFMUL()
11424 AddToWorklist(Fused.getNode()); in visitFMUL()
11449 return DAG.getNode(ISD::FMA, DL, VT, N0, N1, N2); in visitFMA()
11460 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N1, N2); in visitFMA()
11462 return DAG.getNode(ISD::FADD, SDLoc(N), VT, N0, N2); in visitFMA()
11467 return DAG.getNode(ISD::FMA, SDLoc(N), VT, N1, N0, N2); in visitFMA()
11474 return DAG.getNode(ISD::FMUL, DL, VT, N0, in visitFMA()
11475 DAG.getNode(ISD::FADD, DL, VT, N1, N2.getOperand(1), in visitFMA()
11483 return DAG.getNode(ISD::FMA, DL, VT, in visitFMA()
11485 DAG.getNode(ISD::FMUL, DL, VT, N1, N0.getOperand(1), in visitFMA()
11496 return DAG.getNode(ISD::FADD, DL, VT, N0, N2); in visitFMA()
11500 SDValue RHSNeg = DAG.getNode(ISD::FNEG, DL, VT, N0); in visitFMA()
11501 AddToWorklist(RHSNeg.getNode()); in visitFMA()
11503 return DAG.getNode(ISD::FADD, DL, VT, N2, RHSNeg); in visitFMA()
11510 return DAG.getNode(ISD::FMA, DL, VT, N0.getOperand(0), in visitFMA()
11511 DAG.getNode(ISD::FNEG, DL, VT, N1, Flags), N2); in visitFMA()
11518 return DAG.getNode(ISD::FMUL, DL, VT, N0, in visitFMA()
11519 DAG.getNode(ISD::FADD, DL, VT, N1, in visitFMA()
11526 return DAG.getNode(ISD::FMUL, DL, VT, N0, in visitFMA()
11527 DAG.getNode(ISD::FADD, DL, VT, N1, in visitFMA()
11582 SDValue Reciprocal = DAG.getNode(ISD::FDIV, DL, VT, FPOne, N1, Flags); in combineRepeatedFPDivisors()
11588 SDValue NewNode = DAG.getNode(ISD::FMUL, SDLoc(U), VT, Dividend, in combineRepeatedFPDivisors()
11591 } else if (U != Reciprocal.getNode()) { in combineRepeatedFPDivisors()
11617 return DAG.getNode(ISD::FDIV, SDLoc(N), VT, N0, N1, Flags); in visitFDIV()
11638 return DAG.getNode(ISD::FMUL, DL, VT, N0, in visitFDIV()
11646 return DAG.getNode(ISD::FMUL, DL, VT, N0, RV, Flags); in visitFDIV()
11652 RV = DAG.getNode(ISD::FP_EXTEND, SDLoc(N1), VT, RV); in visitFDIV()
11653 AddToWorklist(RV.getNode()); in visitFDIV()
11654 return DAG.getNode(ISD::FMUL, DL, VT, N0, RV, Flags); in visitFDIV()
11660 RV = DAG.getNode(ISD::FP_ROUND, SDLoc(N1), VT, RV, N1.getOperand(1)); in visitFDIV()
11661 AddToWorklist(RV.getNode()); in visitFDIV()
11662 return DAG.getNode(ISD::FMUL, DL, VT, N0, RV, Flags); in visitFDIV()
11676 if (SqrtOp.getNode()) { in visitFDIV()
11680 RV = DAG.getNode(ISD::FDIV, SDLoc(N1), VT, RV, OtherOp, Flags); in visitFDIV()
11681 AddToWorklist(RV.getNode()); in visitFDIV()
11682 return DAG.getNode(ISD::FMUL, DL, VT, N0, RV, Flags); in visitFDIV()
11689 AddToWorklist(RV.getNode()); in visitFDIV()
11690 return DAG.getNode(ISD::FMUL, DL, VT, N0, RV, Flags); in visitFDIV()
11700 return DAG.getNode(ISD::FDIV, SDLoc(N), VT, in visitFDIV()
11722 return DAG.getNode(ISD::FREM, SDLoc(N), VT, N0, N1, N->getFlags()); in visitFREM()
11769 return DAG.getNode(ISD::FCOPYSIGN, SDLoc(N), VT, N0, N1); in visitFCOPYSIGN()
11777 return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0); in visitFCOPYSIGN()
11780 return DAG.getNode(ISD::FNEG, SDLoc(N), VT, in visitFCOPYSIGN()
11781 DAG.getNode(ISD::FABS, SDLoc(N0), VT, N0)); in visitFCOPYSIGN()
11790 return DAG.getNode(ISD::FCOPYSIGN, SDLoc(N), VT, N0.getOperand(0), N1); in visitFCOPYSIGN()
11794 return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0); in visitFCOPYSIGN()
11798 return DAG.getNode(ISD::FCOPYSIGN, SDLoc(N), VT, N0, N1.getOperand(1)); in visitFCOPYSIGN()
11803 return DAG.getNode(ISD::FCOPYSIGN, SDLoc(N), VT, N0, N1.getOperand(0)); in visitFCOPYSIGN()
11838 return DAG.getNode(ISD::FCBRT, SDLoc(N), VT, N->getOperand(0), Flags); in visitFPOW()
11867 SDValue Sqrt = DAG.getNode(ISD::FSQRT, DL, VT, N->getOperand(0), Flags); in visitFPOW()
11868 return DAG.getNode(ISD::FSQRT, DL, VT, Sqrt, Flags); in visitFPOW()
11900 return DAG.getNode(ISD::FTRUNC, SDLoc(N), VT, N0.getOperand(0)); in foldFPToIntToFP()
11904 return DAG.getNode(ISD::FTRUNC, SDLoc(N), VT, N0.getOperand(0)); in foldFPToIntToFP()
11919 return DAG.getNode(ISD::SINT_TO_FP, SDLoc(N), VT, N0); in visitSINT_TO_FP()
11927 return DAG.getNode(ISD::UINT_TO_FP, SDLoc(N), VT, N0); in visitSINT_TO_FP()
11942 return DAG.getNode(ISD::SELECT_CC, DL, VT, Ops); in visitSINT_TO_FP()
11956 return DAG.getNode(ISD::SELECT_CC, DL, VT, Ops); in visitSINT_TO_FP()
11976 return DAG.getNode(ISD::UINT_TO_FP, SDLoc(N), VT, N0); in visitUINT_TO_FP()
11984 return DAG.getNode(ISD::SINT_TO_FP, SDLoc(N), VT, N0); in visitUINT_TO_FP()
11998 return DAG.getNode(ISD::SELECT_CC, DL, VT, Ops); in visitUINT_TO_FP()
12041 return DAG.getNode(ExtOp, SDLoc(N), VT, Src); in FoldIntToFPToInt()
12044 return DAG.getNode(ISD::TRUNCATE, SDLoc(N), VT, Src); in FoldIntToFPToInt()
12056 return DAG.getNode(ISD::FP_TO_SINT, SDLoc(N), VT, N0); in visitFP_TO_SINT()
12067 return DAG.getNode(ISD::FP_TO_UINT, SDLoc(N), VT, N0); in visitFP_TO_UINT()
12080 return DAG.getNode(ISD::FP_ROUND, SDLoc(N), VT, N0, N1); in visitFP_ROUND()
12108 return DAG.getNode(ISD::FP_ROUND, DL, VT, N0.getOperand(0), in visitFP_ROUND()
12114 if (N0.getOpcode() == ISD::FCOPYSIGN && N0.getNode()->hasOneUse()) { in visitFP_ROUND()
12115 SDValue Tmp = DAG.getNode(ISD::FP_ROUND, SDLoc(N0), VT, in visitFP_ROUND()
12117 AddToWorklist(Tmp.getNode()); in visitFP_ROUND()
12118 return DAG.getNode(ISD::FCOPYSIGN, SDLoc(N), VT, in visitFP_ROUND()
12138 return DAG.getNode(ISD::FP_EXTEND, DL, VT, Round); in visitFP_ROUND_INREG()
12155 return DAG.getNode(ISD::FP_EXTEND, SDLoc(N), VT, N0); in visitFP_EXTEND()
12160 return DAG.getNode(ISD::FP16_TO_FP, SDLoc(N), VT, N0.getOperand(0)); in visitFP_EXTEND()
12169 return DAG.getNode(ISD::FP_ROUND, SDLoc(N), VT, in visitFP_EXTEND()
12171 return DAG.getNode(ISD::FP_EXTEND, SDLoc(N), VT, In); in visitFP_EXTEND()
12175 if (ISD::isNormalLoad(N0.getNode()) && N0.hasOneUse() && in visitFP_EXTEND()
12183 CombineTo(N0.getNode(), in visitFP_EXTEND()
12184 DAG.getNode(ISD::FP_ROUND, SDLoc(N0), in visitFP_EXTEND()
12203 return DAG.getNode(ISD::FCEIL, SDLoc(N), VT, N0); in visitFCEIL()
12214 return DAG.getNode(ISD::FTRUNC, SDLoc(N), VT, N0); in visitFTRUNC()
12238 return DAG.getNode(ISD::FFLOOR, SDLoc(N), VT, N0); in visitFFLOOR()
12250 return DAG.getNode(ISD::FNEG, SDLoc(N), VT, N0); in visitFNEG()
12260 N0.getNode()->hasOneUse()) { in visitFNEG()
12275 Int = DAG.getNode(ISD::XOR, DL0, IntVT, Int, in visitFNEG()
12277 AddToWorklist(Int.getNode()); in visitFNEG()
12284 (N0.getNode()->hasOneUse() || !TLI.isFNegFree(VT))) { in visitFNEG()
12292 return DAG.getNode( in visitFNEG()
12294 DAG.getNode(ISD::FNEG, SDLoc(N), VT, N0.getOperand(1)), in visitFNEG()
12319 return DAG.getNode(N->getOpcode(), SDLoc(N), VT, N1, N0); in visitFMinMax()
12346 return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0); in visitFABS()
12355 return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0.getOperand(0)); in visitFABS()
12373 Int = DAG.getNode(ISD::AND, DL, IntVT, Int, in visitFABS()
12375 AddToWorklist(Int.getNode()); in visitFABS()
12399 return DAG.getNode(ISD::BR_CC, SDLoc(N), MVT::Other, in visitBRCOND()
12406 return DAG.getNode(ISD::BRCOND, SDLoc(N), MVT::Other, Chain, NewN1, N2); in visitBRCOND()
12468 SDValue Tmp = visitXOR(N.getNode()); in rebuildSetCC()
12470 if (!Tmp.getNode()) in rebuildSetCC()
12474 if (Tmp.getNode() == N.getNode()) in rebuildSetCC()
12483 SDNode *TheXor = N.getNode(); in rebuildSetCC()
12492 TheXor = Op0.getNode(); in rebuildSetCC()
12524 if (Simp.getNode()) AddToWorklist(Simp.getNode()); in visitBR_CC()
12527 if (Simp.getNode() && Simp.getOpcode() == ISD::SETCC) in visitBR_CC()
12528 return DAG.getNode(ISD::BR_CC, SDLoc(N), MVT::Other, in visitBR_CC()
12545 if (LD->isIndexed() || LD->getBasePtr().getNode() != N) in canFoldInAddressingMode()
12550 if (ST->isIndexed() || ST->getBasePtr().getNode() != N) in canFoldInAddressingMode()
12617 Ptr.getNode()->hasOneUse()) in CombineToPreIndexedLoadStore()
12656 if (Val == BasePtr || BasePtr.getNode()->isPredecessorOf(Val.getNode())) in CombineToPreIndexedLoadStore()
12670 for (SDNode::use_iterator UI = BasePtr.getNode()->use_begin(), in CombineToPreIndexedLoadStore()
12671 UE = BasePtr.getNode()->use_end(); in CombineToPreIndexedLoadStore()
12676 if (Use.getUser() == Ptr.getNode() || Use != BasePtr) in CombineToPreIndexedLoadStore()
12709 for (SDNode *Use : Ptr.getNode()->uses()) { in CombineToPreIndexedLoadStore()
12717 if (!canFoldInAddressingMode(Ptr.getNode(), Use, DAG, TLI)) in CombineToPreIndexedLoadStore()
12734 Result.getNode()->dump(&DAG); dbgs() << '\n'); in CombineToPreIndexedLoadStore()
12752 if (OtherUses[i]->getOperand(OffsetIdx).getNode() == BasePtr.getNode()) in CombineToPreIndexedLoadStore()
12754 assert(OtherUses[i]->getOperand(!OffsetIdx).getNode() == in CombineToPreIndexedLoadStore()
12755 BasePtr.getNode() && "Expected BasePtr operand"); in CombineToPreIndexedLoadStore()
12792 SDValue NewUse = DAG.getNode(Opcode, in CombineToPreIndexedLoadStore()
12801 deleteAndRecombine(Ptr.getNode()); in CombineToPreIndexedLoadStore()
12802 AddToWorklist(Result.getNode()); in CombineToPreIndexedLoadStore()
12839 if (Ptr.getNode()->hasOneUse()) in CombineToPostIndexedLoadStore()
12842 for (SDNode *Op : Ptr.getNode()->uses()) { in CombineToPostIndexedLoadStore()
12867 for (SDNode *Use : BasePtr.getNode()->uses()) { in CombineToPostIndexedLoadStore()
12868 if (Use == Ptr.getNode()) in CombineToPostIndexedLoadStore()
12894 Visited.insert(Ptr.getNode()); in CombineToPostIndexedLoadStore()
12907 dbgs() << "\nWith: "; Result.getNode()->dump(&DAG); in CombineToPostIndexedLoadStore()
12953 return DAG.getNode(Opc, SDLoc(LD), BP.getSimpleValueType(), BP, Inc); in SplitIndexingFromLoad()
12970 Val = DAG.getNode(ISD::FTRUNC, SDLoc(ST), STMemType, Val); in getTruncatedStoreValue()
12975 Val = DAG.getNode(ISD::TRUNCATE, SDLoc(ST), STMemType, Val); in getTruncatedStoreValue()
12998 Val = DAG.getNode(ISD::ANY_EXTEND, SDLoc(LD), LDType, Val); in extendLoadedValueToExtension()
13001 Val = DAG.getNode(ISD::SIGN_EXTEND, SDLoc(LD), LDType, Val); in extendLoadedValueToExtension()
13004 Val = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(LD), LDType, Val); in extendLoadedValueToExtension()
13015 StoreSDNode *ST = dyn_cast<StoreSDNode>(Chain.getNode()); in ForwardStoreValueToDirectLoad()
13048 SDValue Idx = DAG.getNode(Opc, SDLoc(LD), LD->getOperand(1).getValueType(), in ForwardStoreValueToDirectLoad()
13072 auto Val = DAG.getNode(ISD::AND, SDLoc(LD), LDType, ST->getValue(), Mask); in ForwardStoreValueToDirectLoad()
13092 Val = DAG.getNode(ISD::TRUNCATE, SDLoc(LD), LDMemType, Val); in ForwardStoreValueToDirectLoad()
13103 deleteAndRecombine(Val.getNode()); in ForwardStoreValueToDirectLoad()
13126 dbgs() << "\nWith chain: "; Chain.getNode()->dump(&DAG); in visitLOAD()
13130 AddUsersToWorklist(Chain.getNode()); in visitLOAD()
13159 dbgs() << "\nWith: "; Undef.getNode()->dump(&DAG); in visitLOAD()
13185 assert(NewLoad.getNode() == N); in visitLOAD()
13211 SDValue Token = DAG.getNode(ISD::TokenFactor, SDLoc(N), in visitLOAD()
13469 BaseAddr = DAG->getNode(ISD::ADD, DL, ArithType, BaseAddr, in loadSlice()
13486 DAG->getNode(ISD::ZERO_EXTEND, SDLoc(LastInst), FinalType, LastInst); in loadSlice()
13768 SDValue Chain = DAG.getNode(ISD::TokenFactor, SDLoc(LD), MVT::Other, in SliceUpLoad()
13771 AddToWorklist(Chain.getNode()); in SliceUpLoad()
13785 !ISD::isNormalLoad(V->getOperand(0).getNode())) in CheckForMaskedLoad()
13830 if (LD == Chain.getNode()) in CheckForMaskedLoad()
13837 if (ChainOp.getNode() == LD) { in CheckForMaskedLoad()
13879 IVal = DAG.getNode(ISD::SRL, DL, IVal.getValueType(), IVal, in ShrinkLoadReplaceStoreWithStore()
13896 Ptr = DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), in ShrinkLoadReplaceStoreWithStore()
13902 IVal = DAG.getNode(ISD::TRUNCATE, SDLoc(IVal), VT, IVal); in ShrinkLoadReplaceStoreWithStore()
13908 .getNode(); in ShrinkLoadReplaceStoreWithStore()
13956 if (ISD::isNormalLoad(N0.getNode()) && N0.hasOneUse() && in ReduceLoadOpStoreWidth()
13957 Chain == SDValue(N0.getNode(), 1)) { in ReduceLoadOpStoreWidth()
14009 SDValue NewPtr = DAG.getNode(ISD::ADD, SDLoc(LD), in ReduceLoadOpStoreWidth()
14017 SDValue NewVal = DAG.getNode(Opc, SDLoc(Value), NewVT, NewLD, in ReduceLoadOpStoreWidth()
14024 AddToWorklist(NewPtr.getNode()); in ReduceLoadOpStoreWidth()
14025 AddToWorklist(NewLD.getNode()); in ReduceLoadOpStoreWidth()
14026 AddToWorklist(NewVal.getNode()); in ReduceLoadOpStoreWidth()
14044 if (ISD::isNormalStore(ST) && ISD::isNormalLoad(Value.getNode()) && in TransformFPLoadStorePair()
14046 Chain == SDValue(Value.getNode(), 1)) { in TransformFPLoadStorePair()
14079 AddToWorklist(NewLD.getNode()); in TransformFPLoadStorePair()
14080 AddToWorklist(NewST.getNode()); in TransformFPLoadStorePair()
14109 if (AddNode.getNode()->hasOneUse()) in isMulAddWithConstProfitable()
14119 SDNode *MulVar = AddNode.getOperand(0).getNode(); in isMulAddWithConstProfitable()
14123 OtherOp = Use->getOperand(1).getNode(); in isMulAddWithConstProfitable()
14125 OtherOp = Use->getOperand(0).getNode(); in isMulAddWithConstProfitable()
14155 OtherOp->getOperand(0).getNode() == MulVar) in isMulAddWithConstProfitable()
14176 if (Visited.count(StoreNodes[i].MemNode->getChain().getNode()) == 0) in getMergeStoreChains()
14181 return DAG.getNode(ISD::TokenFactor, StoreDL, MVT::Other, Chains); in getMergeStoreChains()
14234 StoredVal = DAG.getNode(MemVT.isVector() ? ISD::CONCAT_VECTORS in MergeStoresOfConstantsOrVecElts()
14260 Val = DAG.getNode(OpC, SDLoc(Val), MemVT, Vec, Idx); in MergeStoresOfConstantsOrVecElts()
14267 StoredVal = DAG.getNode(MemVT.isVector() ? ISD::CONCAT_VECTORS in MergeStoresOfConstantsOrVecElts()
14337 AddToWorklist(NewChain.getNode()); in MergeStoresOfConstantsOrVecElts()
14351 if (!BasePtr.getBase().getNode()) in getStoreMergeCandidates()
14442 RootNode = St->getChain().getNode(); in getStoreMergeCandidates()
14445 RootNode = Ldn->getChain().getNode(); in getStoreMergeCandidates()
14494 Worklist.push_back(Op.getNode()); in checkMergeStoreCandidatesForDependencies()
14515 Worklist.push_back(N->getOperand(j).getNode()); in checkMergeStoreCandidatesForDependencies()
14822 if (LdBasePtr.getBase().getNode()) { in MergeConsecutiveStores()
14995 AddToWorklist(NewStoreChain.getNode()); in MergeConsecutiveStores()
15028 SDValue(NewLoad.getNode(), 1)); in MergeConsecutiveStores()
15036 if (Val.getNode()->use_empty()) in MergeConsecutiveStores()
15037 recursivelyDeleteUnusedNodes(Val.getNode()); in MergeConsecutiveStores()
15064 SDValue Token = DAG.getNode(ISD::TokenFactor, SL, in replaceStoreChain()
15068 AddToWorklist(Token.getNode()); in replaceStoreChain()
15139 Ptr = DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), Ptr, in replaceStoreOfFPConstant()
15145 return DAG.getNode(ISD::TokenFactor, DL, MVT::Other, in replaceStoreOfFPConstant()
15197 assert(NewStore.getNode() == N); in visitSTORE()
15230 AddToWorklist(Value.getNode()); in visitSTORE()
15231 if (Shorter.getNode()) in visitSTORE()
15292 && Value.getNode()->hasOneUse() && ST->isUnindexed() && in visitSTORE()
15423 Lo = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Lo.getOperand(0)); in splitMergedValStore()
15424 Hi = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Hi.getOperand(0)); in splitMergedValStore()
15432 DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), Ptr, in splitMergedValStore()
15485 SDValue PaddedSubV = DAG.getNode(ISD::CONCAT_VECTORS, DL, ShufVT, ConcatOps); in combineInsertEltToShuffle()
15490 AddToWorklist(PaddedSubV.getNode()); in combineInsertEltToShuffle()
15491 AddToWorklist(DestVecBC.getNode()); in combineInsertEltToShuffle()
15492 AddToWorklist(Shuf.getNode()); in combineInsertEltToShuffle()
15543 SDValue NewOp = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, VT, in visitINSERT_VECTOR_ELT()
15545 AddToWorklist(NewOp.getNode()); in visitINSERT_VECTOR_ELT()
15546 return DAG.getNode(ISD::INSERT_VECTOR_ELT, SDLoc(InVec.getNode()), in visitINSERT_VECTOR_ELT()
15562 Ops.append(InVec.getNode()->op_begin(), in visitINSERT_VECTOR_ELT()
15563 InVec.getNode()->op_end()); in visitINSERT_VECTOR_ELT()
15616 Offset = DAG.getNode( in scalarizeExtractedVectorLoad()
15621 NewPtr = DAG.getNode(ISD::ADD, DL, PtrType, NewPtr, Offset); in scalarizeExtractedVectorLoad()
15649 Load = DAG.getNode(ISD::TRUNCATE, SDLoc(EVE), ResultVT, Load); in scalarizeExtractedVectorLoad()
15659 AddToWorklist(Load.getNode()); in scalarizeExtractedVectorLoad()
15660 AddUsersToWorklist(Load.getNode()); // Add users too in scalarizeExtractedVectorLoad()
15674 if (!IndexC || !ISD::isBinaryOp(Vec.getNode()) || !Vec.hasOneUse()) in scalarizeExtractedBinop()
15693 SDValue Ext0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, Op0, Index); in scalarizeExtractedBinop()
15694 SDValue Ext1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, Op1, Index); in scalarizeExtractedBinop()
15695 return DAG.getNode(Vec.getOpcode(), DL, VT, Ext0, Ext1); in scalarizeExtractedBinop()
15766 return DAG.getNode(ISD::TRUNCATE, DL, ScalarVT, BCSrc); in visitEXTRACT_VECTOR_ELT()
15836 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, ScalarVT, SVInVec, in visitEXTRACT_VECTOR_ELT()
15888 ISD::isNormalLoad(VecOp.getNode()) && in visitEXTRACT_VECTOR_ELT()
15889 !Index->hasPredecessor(VecOp.getNode())) { in visitEXTRACT_VECTOR_ELT()
15905 if (ISD::isNormalLoad(VecOp.getNode())) { in visitEXTRACT_VECTOR_ELT()
15909 ISD::isNormalLoad(VecOp.getOperand(0).getNode())) { in visitEXTRACT_VECTOR_ELT()
15941 if (ISD::isNormalLoad(VecOp.getNode())) { in visitEXTRACT_VECTOR_ELT()
16068 AddToWorklist(BV.getNode()); in reduceBuildVecExtToExtBuildVec()
16082 EVT InVT2 = VecIn2.getNode() ? VecIn2.getValueType() : InVT1; in createBuildVecShuffle()
16107 VecIn1 = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, ConcatOps); in createBuildVecShuffle()
16113 if (!VecIn2.getNode()) { in createBuildVecShuffle()
16116 VecIn2 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, VecIn1, in createBuildVecShuffle()
16118 VecIn1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, VecIn1, ZeroIdx); in createBuildVecShuffle()
16137 VecIn2 = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, InVT1, in createBuildVecShuffle()
16151 VecIn2 = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, ConcatOps); in createBuildVecShuffle()
16184 VecIn2 = VecIn2.getNode() ? VecIn2 : DAG.getUNDEF(InVT1); in createBuildVecShuffle()
16189 Shuffle = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, Shuffle, ZeroIdx); in createBuildVecShuffle()
16376 SDValue VecIn2 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, SplitVT, Vec, in reduceBuildVecToShuffle()
16378 SDValue VecIn1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, SplitVT, Vec, in reduceBuildVecToShuffle()
16527 In = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, InVT, In, in convertBuildVecZextToZext()
16529 return DAG.getNode(ISD::ZERO_EXTEND, DL, VT, In); in convertBuildVecZextToZext()
16557 SDValue Concat = DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(N), in visitBUILD_VECTOR()
16590 return DAG.getNode(ISD::EXTRACT_SUBVECTOR, SDLoc(N), N->getValueType(0), in visitBUILD_VECTOR()
16619 SDValue ScalarUndef = DAG.getNode(ISD::UNDEF, DL, SVT); in combineConcatVectorOfScalars()
16649 ScalarUndef = DAG.getNode(ISD::UNDEF, DL, SVT); in combineConcatVectorOfScalars()
16800 SDValue Res = DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), NVT, Scalar); in visitCONCAT_VECTORS()
16844 DAG.getNode(ISD::TRUNCATE, SDLoc(N), MinVT, Op.getOperand(i))); in visitCONCAT_VECTORS()
16881 if (SingleSource.getNode()) { in visitCONCAT_VECTORS()
16905 if (SingleSource.getNode()) in visitCONCAT_VECTORS()
16925 if (!ISD::isBinaryOp(BinOp.getNode())) in narrowExtractedVectorBinOp()
16971 SDValue X = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, NarrowBVT, in narrowExtractedVectorBinOp()
16973 SDValue Y = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, NarrowBVT, in narrowExtractedVectorBinOp()
16975 SDValue NarrowBinOp = DAG.getNode(BOpcode, DL, NarrowBVT, X, Y, in narrowExtractedVectorBinOp()
16976 BinOp.getNode()->getFlags()); in narrowExtractedVectorBinOp()
17013 : DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, NarrowBVT, in narrowExtractedVectorBinOp()
17018 : DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, NarrowBVT, in narrowExtractedVectorBinOp()
17022 SDValue NarrowBinOp = DAG.getNode(BOpcode, DL, NarrowBVT, X, Y); in narrowExtractedVectorBinOp()
17112 Src = DAG.getNode(ISD::TRUNCATE, SDLoc(N), InVT, Src); in visitEXTRACT_SUBVECTOR()
17147 return DAG.getNode( in visitEXTRACT_SUBVECTOR()
17187 return DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(N), VT, N0, N1); in partitionShuffleOfConcats()
17224 return DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(N), VT, Ops); in partitionShuffleOfConcats()
17262 if (N0AnyConst && !N1AnyConst && !ISD::isBuildVectorAllZeros(N0.getNode())) in combineShuffleOfScalars()
17264 if (!N0AnyConst && N1AnyConst && !ISD::isBuildVectorAllZeros(N1.getNode())) in combineShuffleOfScalars()
17369 DAG.getNode(ISD::ANY_EXTEND_VECTOR_INREG, in combineShuffleToVectorExtend()
17560 return DAG.getNode(ISD::INSERT_VECTOR_ELT, SDLoc(Shuf), Op0.getValueType(), in replaceShuffleOfInsert()
17621 SDNode *V = N0.getNode(); in visitVECTOR_SHUFFLE()
17630 V = ConvInput.getNode(); in visitVECTOR_SHUFFLE()
17645 if (!Base.getNode()) in visitVECTOR_SHUFFLE()
17790 if (N0.getOpcode() == ISD::VECTOR_SHUFFLE && N->isOnlyUserOf(N0.getNode()) && in visitVECTOR_SHUFFLE()
17843 if (!SV0.getNode() || SV0 == CurrentVec) { in visitVECTOR_SHUFFLE()
17852 if (SV1.getNode() && SV1 != CurrentVec) in visitVECTOR_SHUFFLE()
17869 if (!SV0.getNode()) in visitVECTOR_SHUFFLE()
17871 if (!SV1.getNode()) in visitVECTOR_SHUFFLE()
17917 DAG.getNode(ISD::TRUNCATE, SDLoc(InVal), VT.getScalarType(), InVal); in visitSCALAR_TO_VECTOR()
17918 return DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), VT, Val); in visitSCALAR_TO_VECTOR()
17936 Val = DAG.getNode(ISD::EXTRACT_SUBVECTOR, SDLoc(N), SubVT, Val, in visitSCALAR_TO_VECTOR()
17989 SDValue NewINSERT = DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(N), in visitINSERT_SUBVECTOR()
18001 return DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(N), VT, N0.getOperand(0), in visitINSERT_SUBVECTOR()
18009 return DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(N), VT, N0, in visitINSERT_SUBVECTOR()
18027 SDValue NewOp = DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(N), VT, in visitINSERT_SUBVECTOR()
18029 AddToWorklist(NewOp.getNode()); in visitINSERT_SUBVECTOR()
18030 return DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(N0.getNode()), in visitINSERT_SUBVECTOR()
18044 return DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(N), VT, Ops); in visitINSERT_SUBVECTOR()
18071 return DAG.getNode(ISD::FP16_TO_FP, SDLoc(N), N->getValueType(0), in visitFP16_TO_FP()
18197 SDValue NewBinOp = DAG.getNode(N->getOpcode(), SDLoc(N), VT, in SimplifyVBinOp()
18219 if (SCC.getNode()) { in SimplifySelect()
18223 SDValue SETCC = DAG.getNode(ISD::SETCC, SDLoc(N0), in SimplifySelect()
18227 AddToWorklist(SETCC.getNode()); in SimplifySelect()
18347 SDNode *CondNode = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
18367 SDNode *CondLHS = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
18368 SDNode *CondRHS = TheSelect->getOperand(1).getNode(); in SimplifySelectOps()
18378 Addr = DAG.getNode(ISD::SELECT_CC, SDLoc(TheSelect), in SimplifySelectOps()
18415 CombineTo(LHS.getNode(), Load.getValue(0), Load.getValue(1)); in SimplifySelectOps()
18416 CombineTo(RHS.getNode(), Load.getValue(0), Load.getValue(1)); in SimplifySelectOps()
18457 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in foldSelectCCToShiftAnd()
18461 SDValue Shift = DAG.getNode(ISD::SRL, DL, XType, N0, ShiftAmt); in foldSelectCCToShiftAnd()
18462 AddToWorklist(Shift.getNode()); in foldSelectCCToShiftAnd()
18465 Shift = DAG.getNode(ISD::TRUNCATE, DL, AType, Shift); in foldSelectCCToShiftAnd()
18466 AddToWorklist(Shift.getNode()); in foldSelectCCToShiftAnd()
18472 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
18476 SDValue Shift = DAG.getNode(ISD::SRA, DL, XType, N0, ShiftAmt); in foldSelectCCToShiftAnd()
18477 AddToWorklist(Shift.getNode()); in foldSelectCCToShiftAnd()
18480 Shift = DAG.getNode(ISD::TRUNCATE, DL, AType, Shift); in foldSelectCCToShiftAnd()
18481 AddToWorklist(Shift.getNode()); in foldSelectCCToShiftAnd()
18487 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
18537 AddToWorklist(Cond.getNode()); in convertSelectOfFPConstantsToLoadOffset()
18539 AddToWorklist(CstOffset.getNode()); in convertSelectOfFPConstantsToLoadOffset()
18540 CPIdx = DAG.getNode(ISD::ADD, DL, CPIdx.getValueType(), CPIdx, CstOffset); in convertSelectOfFPConstantsToLoadOffset()
18541 AddToWorklist(CPIdx.getNode()); in convertSelectOfFPConstantsToLoadOffset()
18557 auto *N1C = dyn_cast<ConstantSDNode>(N1.getNode()); in SimplifySelectCC()
18558 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in SimplifySelectCC()
18559 auto *N3C = dyn_cast<ConstantSDNode>(N3.getNode()); in SimplifySelectCC()
18564 if (SCC.getNode()) AddToWorklist(SCC.getNode()); in SimplifySelectCC()
18566 if (auto *SCCC = dyn_cast_or_null<ConstantSDNode>(SCC.getNode())) { in SimplifySelectCC()
18595 SDValue Shl = DAG.getNode(ISD::SHL, SDLoc(N0), VT, AndLHS, ShlAmt); in SimplifySelectCC()
18602 SDValue Shr = DAG.getNode(ISD::SRA, SDLoc(N0), VT, Shl, ShrAmt); in SimplifySelectCC()
18604 return DAG.getNode(ISD::AND, DL, VT, Shr, N3); in SimplifySelectCC()
18634 Temp = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N2), VT, SCC); in SimplifySelectCC()
18637 Temp = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N2), VT, SCC); in SimplifySelectCC()
18640 AddToWorklist(SCC.getNode()); in SimplifySelectCC()
18641 AddToWorklist(Temp.getNode()); in SimplifySelectCC()
18647 return DAG.getNode(ISD::SHL, DL, N2.getValueType(), Temp, in SimplifySelectCC()
18672 SDValue Shift = DAG.getNode(ISD::SRA, DL, CmpOpVT, N0, in SimplifySelectCC()
18676 SDValue Add = DAG.getNode(ISD::ADD, DL, CmpOpVT, N0, Shift); in SimplifySelectCC()
18677 AddToWorklist(Shift.getNode()); in SimplifySelectCC()
18678 AddToWorklist(Add.getNode()); in SimplifySelectCC()
18679 return DAG.getNode(ISD::XOR, DL, CmpOpVT, Add, Shift); in SimplifySelectCC()
18706 return DAG.getNode(ISD::CTTZ, DL, VT, N0); in SimplifySelectCC()
18713 return DAG.getNode(ISD::CTLZ, DL, VT, N0); in SimplifySelectCC()
18796 SDValue Ctlz = DAG.getNode(ISD::CTLZ, DL, VT, V); in BuildLogBase2()
18798 SDValue LogBase2 = DAG.getNode(ISD::SUB, DL, VT, Base, Ctlz); in BuildLogBase2()
18827 AddToWorklist(Est.getNode()); in BuildReciprocalEstimate()
18836 SDValue NewEst = DAG.getNode(ISD::FMUL, DL, VT, Op, Est, Flags); in BuildReciprocalEstimate()
18837 AddToWorklist(NewEst.getNode()); in BuildReciprocalEstimate()
18839 NewEst = DAG.getNode(ISD::FSUB, DL, VT, FPOne, NewEst, Flags); in BuildReciprocalEstimate()
18840 AddToWorklist(NewEst.getNode()); in BuildReciprocalEstimate()
18842 NewEst = DAG.getNode(ISD::FMUL, DL, VT, Est, NewEst, Flags); in BuildReciprocalEstimate()
18843 AddToWorklist(NewEst.getNode()); in BuildReciprocalEstimate()
18845 Est = DAG.getNode(ISD::FADD, DL, VT, Est, NewEst, Flags); in BuildReciprocalEstimate()
18846 AddToWorklist(Est.getNode()); in BuildReciprocalEstimate()
18870 SDValue HalfArg = DAG.getNode(ISD::FMUL, DL, VT, ThreeHalves, Arg, Flags); in buildSqrtNROneConst()
18871 AddToWorklist(HalfArg.getNode()); in buildSqrtNROneConst()
18873 HalfArg = DAG.getNode(ISD::FSUB, DL, VT, HalfArg, Arg, Flags); in buildSqrtNROneConst()
18874 AddToWorklist(HalfArg.getNode()); in buildSqrtNROneConst()
18878 SDValue NewEst = DAG.getNode(ISD::FMUL, DL, VT, Est, Est, Flags); in buildSqrtNROneConst()
18879 AddToWorklist(NewEst.getNode()); in buildSqrtNROneConst()
18881 NewEst = DAG.getNode(ISD::FMUL, DL, VT, HalfArg, NewEst, Flags); in buildSqrtNROneConst()
18882 AddToWorklist(NewEst.getNode()); in buildSqrtNROneConst()
18884 NewEst = DAG.getNode(ISD::FSUB, DL, VT, ThreeHalves, NewEst, Flags); in buildSqrtNROneConst()
18885 AddToWorklist(NewEst.getNode()); in buildSqrtNROneConst()
18887 Est = DAG.getNode(ISD::FMUL, DL, VT, Est, NewEst, Flags); in buildSqrtNROneConst()
18888 AddToWorklist(Est.getNode()); in buildSqrtNROneConst()
18893 Est = DAG.getNode(ISD::FMUL, DL, VT, Est, Arg, Flags); in buildSqrtNROneConst()
18894 AddToWorklist(Est.getNode()); in buildSqrtNROneConst()
18920 SDValue AE = DAG.getNode(ISD::FMUL, DL, VT, Arg, Est, Flags); in buildSqrtNRTwoConst()
18921 AddToWorklist(AE.getNode()); in buildSqrtNRTwoConst()
18923 SDValue AEE = DAG.getNode(ISD::FMUL, DL, VT, AE, Est, Flags); in buildSqrtNRTwoConst()
18924 AddToWorklist(AEE.getNode()); in buildSqrtNRTwoConst()
18926 SDValue RHS = DAG.getNode(ISD::FADD, DL, VT, AEE, MinusThree, Flags); in buildSqrtNRTwoConst()
18927 AddToWorklist(RHS.getNode()); in buildSqrtNRTwoConst()
18935 LHS = DAG.getNode(ISD::FMUL, DL, VT, Est, MinusHalf, Flags); in buildSqrtNRTwoConst()
18938 LHS = DAG.getNode(ISD::FMUL, DL, VT, AE, MinusHalf, Flags); in buildSqrtNRTwoConst()
18940 AddToWorklist(LHS.getNode()); in buildSqrtNRTwoConst()
18942 Est = DAG.getNode(ISD::FMUL, DL, VT, LHS, RHS, Flags); in buildSqrtNRTwoConst()
18943 AddToWorklist(Est.getNode()); in buildSqrtNRTwoConst()
18976 AddToWorklist(Est.getNode()); in buildSqrtEstimateImpl()
18998 SDValue Fabs = DAG.getNode(ISD::FABS, DL, VT, Op); in buildSqrtEstimateImpl()
19000 Est = DAG.getNode(SelOpcode, DL, VT, IsDenorm, FPZero, Est); in buildSqrtEstimateImpl()
19001 AddToWorklist(Fabs.getNode()); in buildSqrtEstimateImpl()
19002 AddToWorklist(IsDenorm.getNode()); in buildSqrtEstimateImpl()
19003 AddToWorklist(Est.getNode()); in buildSqrtEstimateImpl()
19008 Est = DAG.getNode(SelOpcode, DL, VT, IsZero, FPZero, Est); in buildSqrtEstimateImpl()
19009 AddToWorklist(IsZero.getNode()); in buildSqrtEstimateImpl()
19010 AddToWorklist(Est.getNode()); in buildSqrtEstimateImpl()
19052 if (BasePtr0.getBase().getNode() && BasePtr1.getBase().getNode()) { in isAlias()
19166 if (!Visited.insert(Chain.getNode()).second) in GatherAllAliases()
19177 bool IsOpLoad = isa<LoadSDNode>(Chain.getNode()) && in GatherAllAliases()
19178 !cast<LSBaseSDNode>(Chain.getNode())->isVolatile(); in GatherAllAliases()
19182 isAlias(cast<LSBaseSDNode>(N), cast<LSBaseSDNode>(Chain.getNode()))) { in GatherAllAliases()
19241 return DAG.getNode(ISD::TokenFactor, SDLoc(N), MVT::Other, Aliases); in FindBetterChain()
19279 if (!BasePtr.getBase().getNode()) in parallelizeChainedStores()
19358 SDValue TF = DAG.getNode(ISD::TokenFactor, SDLoc(STChain), MVT::Other, TFOps); in parallelizeChainedStores()
19364 AddToWorklist(TF->getOperand(--I).getNode()); in parallelizeChainedStores()
19365 AddToWorklist(TF.getNode()); in parallelizeChainedStores()
19376 if (!BasePtr.getBase().getNode()) in findBetterNeighborChains()