Lines Matching refs:SDNode

133     SmallVector<SDNode *, 64> Worklist;
140 DenseMap<SDNode *, unsigned> WorklistMap;
146 SmallPtrSet<SDNode *, 32> CombinedNodes;
153 void AddUsersToWorklist(SDNode *N) { in AddUsersToWorklist()
154 for (SDNode *Node : N->uses()) in AddUsersToWorklist()
159 SDValue visit(SDNode *N);
177 void AddToWorklist(SDNode *N) { in AddToWorklist()
191 void removeFromWorklist(SDNode *N) { in removeFromWorklist()
203 void deleteAndRecombine(SDNode *N);
204 bool recursivelyDeleteUnusedNodes(SDNode *N);
207 SDValue CombineTo(SDNode *N, const SDValue *To, unsigned NumTo,
211 SDValue CombineTo(SDNode *N, SDValue Res, bool AddTo = true) { in CombineTo()
216 SDValue CombineTo(SDNode *N, SDValue Res0, SDValue Res1, in CombineTo()
249 bool CombineToPreIndexedLoadStore(SDNode *N);
250 bool CombineToPostIndexedLoadStore(SDNode *N);
252 bool SliceUpLoad(SDNode *N);
267 SDValue scalarizeExtractedVectorLoad(SDNode *EVE, EVT InVecVT,
270 void ReplaceLoadWithPromotedLoad(SDNode *Load, SDNode *ExtLoad);
282 SDValue combine(SDNode *N);
291 SDValue visitTokenFactor(SDNode *N);
292 SDValue visitMERGE_VALUES(SDNode *N);
293 SDValue visitADD(SDNode *N);
294 SDValue visitADDLike(SDValue N0, SDValue N1, SDNode *LocReference);
295 SDValue visitSUB(SDNode *N);
296 SDValue visitADDSAT(SDNode *N);
297 SDValue visitSUBSAT(SDNode *N);
298 SDValue visitADDC(SDNode *N);
299 SDValue visitUADDO(SDNode *N);
300 SDValue visitUADDOLike(SDValue N0, SDValue N1, SDNode *N);
301 SDValue visitSUBC(SDNode *N);
302 SDValue visitUSUBO(SDNode *N);
303 SDValue visitADDE(SDNode *N);
304 SDValue visitADDCARRY(SDNode *N);
305 SDValue visitADDCARRYLike(SDValue N0, SDValue N1, SDValue CarryIn, SDNode *N);
306 SDValue visitSUBE(SDNode *N);
307 SDValue visitSUBCARRY(SDNode *N);
308 SDValue visitMUL(SDNode *N);
309 SDValue useDivRem(SDNode *N);
310 SDValue visitSDIV(SDNode *N);
311 SDValue visitSDIVLike(SDValue N0, SDValue N1, SDNode *N);
312 SDValue visitUDIV(SDNode *N);
313 SDValue visitUDIVLike(SDValue N0, SDValue N1, SDNode *N);
314 SDValue visitREM(SDNode *N);
315 SDValue visitMULHU(SDNode *N);
316 SDValue visitMULHS(SDNode *N);
317 SDValue visitSMUL_LOHI(SDNode *N);
318 SDValue visitUMUL_LOHI(SDNode *N);
319 SDValue visitSMULO(SDNode *N);
320 SDValue visitUMULO(SDNode *N);
321 SDValue visitIMINMAX(SDNode *N);
322 SDValue visitAND(SDNode *N);
323 SDValue visitANDLike(SDValue N0, SDValue N1, SDNode *N);
324 SDValue visitOR(SDNode *N);
325 SDValue visitORLike(SDValue N0, SDValue N1, SDNode *N);
326 SDValue visitXOR(SDNode *N);
327 SDValue SimplifyVBinOp(SDNode *N);
328 SDValue visitSHL(SDNode *N);
329 SDValue visitSRA(SDNode *N);
330 SDValue visitSRL(SDNode *N);
331 SDValue visitFunnelShift(SDNode *N);
332 SDValue visitRotate(SDNode *N);
333 SDValue visitABS(SDNode *N);
334 SDValue visitBSWAP(SDNode *N);
335 SDValue visitBITREVERSE(SDNode *N);
336 SDValue visitCTLZ(SDNode *N);
337 SDValue visitCTLZ_ZERO_UNDEF(SDNode *N);
338 SDValue visitCTTZ(SDNode *N);
339 SDValue visitCTTZ_ZERO_UNDEF(SDNode *N);
340 SDValue visitCTPOP(SDNode *N);
341 SDValue visitSELECT(SDNode *N);
342 SDValue visitVSELECT(SDNode *N);
343 SDValue visitSELECT_CC(SDNode *N);
344 SDValue visitSETCC(SDNode *N);
345 SDValue visitSETCCCARRY(SDNode *N);
346 SDValue visitSIGN_EXTEND(SDNode *N);
347 SDValue visitZERO_EXTEND(SDNode *N);
348 SDValue visitANY_EXTEND(SDNode *N);
349 SDValue visitAssertExt(SDNode *N);
350 SDValue visitSIGN_EXTEND_INREG(SDNode *N);
351 SDValue visitSIGN_EXTEND_VECTOR_INREG(SDNode *N);
352 SDValue visitZERO_EXTEND_VECTOR_INREG(SDNode *N);
353 SDValue visitTRUNCATE(SDNode *N);
354 SDValue visitBITCAST(SDNode *N);
355 SDValue visitBUILD_PAIR(SDNode *N);
356 SDValue visitFADD(SDNode *N);
357 SDValue visitFSUB(SDNode *N);
358 SDValue visitFMUL(SDNode *N);
359 SDValue visitFMA(SDNode *N);
360 SDValue visitFDIV(SDNode *N);
361 SDValue visitFREM(SDNode *N);
362 SDValue visitFSQRT(SDNode *N);
363 SDValue visitFCOPYSIGN(SDNode *N);
364 SDValue visitFPOW(SDNode *N);
365 SDValue visitSINT_TO_FP(SDNode *N);
366 SDValue visitUINT_TO_FP(SDNode *N);
367 SDValue visitFP_TO_SINT(SDNode *N);
368 SDValue visitFP_TO_UINT(SDNode *N);
369 SDValue visitFP_ROUND(SDNode *N);
370 SDValue visitFP_ROUND_INREG(SDNode *N);
371 SDValue visitFP_EXTEND(SDNode *N);
372 SDValue visitFNEG(SDNode *N);
373 SDValue visitFABS(SDNode *N);
374 SDValue visitFCEIL(SDNode *N);
375 SDValue visitFTRUNC(SDNode *N);
376 SDValue visitFFLOOR(SDNode *N);
377 SDValue visitFMINNUM(SDNode *N);
378 SDValue visitFMAXNUM(SDNode *N);
379 SDValue visitFMINIMUM(SDNode *N);
380 SDValue visitFMAXIMUM(SDNode *N);
381 SDValue visitBRCOND(SDNode *N);
382 SDValue visitBR_CC(SDNode *N);
383 SDValue visitLOAD(SDNode *N);
388 SDValue visitSTORE(SDNode *N);
389 SDValue visitINSERT_VECTOR_ELT(SDNode *N);
390 SDValue visitEXTRACT_VECTOR_ELT(SDNode *N);
391 SDValue visitBUILD_VECTOR(SDNode *N);
392 SDValue visitCONCAT_VECTORS(SDNode *N);
393 SDValue visitEXTRACT_SUBVECTOR(SDNode *N);
394 SDValue visitVECTOR_SHUFFLE(SDNode *N);
395 SDValue visitSCALAR_TO_VECTOR(SDNode *N);
396 SDValue visitINSERT_SUBVECTOR(SDNode *N);
397 SDValue visitMLOAD(SDNode *N);
398 SDValue visitMSTORE(SDNode *N);
399 SDValue visitMGATHER(SDNode *N);
400 SDValue visitMSCATTER(SDNode *N);
401 SDValue visitFP_TO_FP16(SDNode *N);
402 SDValue visitFP16_TO_FP(SDNode *N);
404 SDValue visitFADDForFMACombine(SDNode *N);
405 SDValue visitFSUBForFMACombine(SDNode *N);
406 SDValue visitFMULForFMADistributiveCombine(SDNode *N);
408 SDValue XformToShuffleWithZero(SDNode *N);
412 SDValue visitShiftByConstant(SDNode *N, ConstantSDNode *Amt);
414 SDValue foldSelectOfConstants(SDNode *N);
415 SDValue foldVSelectOfConstants(SDNode *N);
416 SDValue foldBinOpIntoSelect(SDNode *BO);
417 bool SimplifySelectOps(SDNode *SELECT, SDValue LHS, SDValue RHS);
418 SDValue hoistLogicOpWithSameOpcodeHands(SDNode *N);
430 SDValue unfoldMaskedMerge(SDNode *N);
431 SDValue unfoldExtremeBitClearingToShifts(SDNode *N);
440 SDValue SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp,
442 SDValue CombineConsecutiveLoads(SDNode *N, EVT VT);
443 SDValue CombineExtLoad(SDNode *N);
444 SDValue CombineZExtLogicopShiftLoad(SDNode *N);
445 SDValue combineRepeatedFPDivisors(SDNode *N);
446 SDValue combineInsertEltToShuffle(SDNode *N, unsigned InsIndex);
447 SDValue ConstantFoldBITCASTofBUILD_VECTOR(SDNode *, EVT);
448 SDValue BuildSDIV(SDNode *N);
449 SDValue BuildSDIVPow2(SDNode *N);
450 SDValue BuildUDIV(SDNode *N);
460 SDValue MatchBSwapHWordLow(SDNode *N, SDValue N0, SDValue N1,
462 SDValue MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1);
463 SDNode *MatchRotatePosNeg(SDValue Shifted, SDValue Pos, SDValue Neg,
467 SDNode *MatchRotate(SDValue LHS, SDValue RHS, const SDLoc &DL);
468 SDValue MatchLoadCombine(SDNode *N);
469 SDValue ReduceLoadWidth(SDNode *N);
470 SDValue ReduceLoadOpStoreWidth(SDNode *N);
472 SDValue TransformFPLoadStorePair(SDNode *N);
473 SDValue convertBuildVecZextToZext(SDNode *N);
474 SDValue reduceBuildVecExtToExtBuildVec(SDNode *N);
475 SDValue reduceBuildVecToShuffle(SDNode *N);
476 SDValue createBuildVecShuffle(const SDLoc &DL, SDNode *N,
479 SDValue matchVSelectOpSizesWithSetCC(SDNode *Cast);
483 void GatherAllAliases(SDNode *N, SDValue OriginalChain,
491 SDValue FindBetterChain(SDNode *N, SDValue Chain);
522 bool isMulAddWithConstProfitable(SDNode *MulNode,
538 bool SearchForAndLoads(SDNode *N, SmallVectorImpl<LoadSDNode*> &Loads,
539 SmallPtrSetImpl<SDNode*> &NodesWithConsts,
540 ConstantSDNode *Mask, SDNode *&NodeToMask);
543 bool BackwardsPropagateMask(SDNode *N, SelectionDAG &DAG);
566 SDNode *&Root);
575 SDNode *RootNode);
589 SDValue distributeTruncateThroughAnd(SDNode *N);
626 void ExtendSetCCUses(const SmallVectorImpl<SDNode *> &SetCCs,
640 void NodeDeleted(SDNode *N, SDNode *E) override { in NodeDeleted()
651 void TargetLowering::DAGCombinerInfo::AddToWorklist(SDNode *N) { in AddToWorklist()
656 CombineTo(SDNode *N, ArrayRef<SDValue> To, bool AddTo) { in CombineTo()
661 CombineTo(SDNode *N, SDValue Res, bool AddTo) { in CombineTo()
666 CombineTo(SDNode *N, SDValue Res0, SDValue Res1, bool AddTo) { in CombineTo()
679 void DAGCombiner::deleteAndRecombine(SDNode *N) { in deleteAndRecombine()
890 static SDNode *isConstantFPBuildVectorOrConstantFP(SDValue N) { in isConstantFPBuildVectorOrConstantFP()
935 if (SDNode *L = DAG.isConstantIntBuildVectorOrConstantInt(N0.getOperand(1))) { in ReassociateOps()
936 if (SDNode *R = DAG.isConstantIntBuildVectorOrConstantInt(N1)) { in ReassociateOps()
955 if (SDNode *R = DAG.isConstantIntBuildVectorOrConstantInt(N1.getOperand(1))) { in ReassociateOps()
956 if (SDNode *L = DAG.isConstantIntBuildVectorOrConstantInt(N0)) { in ReassociateOps()
977 SDValue DAGCombiner::CombineTo(SDNode *N, const SDValue *To, unsigned NumTo, in CombineTo()
1072 void DAGCombiner::ReplaceLoadWithPromotedLoad(SDNode *Load, SDNode *ExtLoad) { in ReplaceLoadWithPromotedLoad()
1324 SDNode *N = Op.getNode(); in PromoteLoad()
1352 bool DAGCombiner::recursivelyDeleteUnusedNodes(SDNode *N) { in recursivelyDeleteUnusedNodes()
1356 SmallSetVector<SDNode *, 16> Nodes; in recursivelyDeleteUnusedNodes()
1387 for (SDNode &Node : DAG.allnodes()) in Run()
1397 SDNode *N; in Run()
1419 SmallSetVector<SDNode *, 16> UpdatedNodes; in Run()
1422 for (SDNode *LN : UpdatedNodes) { in Run()
1484 SDValue DAGCombiner::visit(SDNode *N) { in visit()
1599 SDValue DAGCombiner::combine(SDNode *N) { in combine()
1657 SDNode *CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(), Ops, in combine()
1669 static SDValue getInputChainForNode(SDNode *N) { in getInputChainForNode()
1682 SDValue DAGCombiner::visitTokenFactor(SDNode *N) { in visitTokenFactor()
1696 SmallVector<SDNode *, 8> TFs; // List of token factors to visit. in visitTokenFactor()
1698 SmallPtrSet<SDNode*, 16> SeenOps; in visitTokenFactor()
1707 SDNode *TF = TFs[i]; in visitTokenFactor()
1747 SmallVector<std::pair<SDNode *, unsigned>, 8> Worklist; in visitTokenFactor()
1749 SmallPtrSet<SDNode *, 16> SeenChains; in visitTokenFactor()
1758 auto AddToWorklist = [&](unsigned CurIdx, SDNode *Op, unsigned OpNumber) { in visitTokenFactor()
1845 SDValue DAGCombiner::visitMERGE_VALUES(SDNode *N) { in visitMERGE_VALUES()
1871 SDValue DAGCombiner::foldBinOpIntoSelect(SDNode *BO) { in foldBinOpIntoSelect()
1946 static SDValue foldAddSubBoolOfMaskedVal(SDNode *N, SelectionDAG &DAG) { in foldAddSubBoolOfMaskedVal()
1987 static SDValue foldAddSubOfSignBit(SDNode *N, SelectionDAG &DAG) { in foldAddSubOfSignBit()
2022 SDValue DAGCombiner::visitADD(SDNode *N) { in visitADD()
2179 SDValue DAGCombiner::visitADDSAT(SDNode *N) { in visitADDSAT()
2260 SDValue DAGCombiner::visitADDLike(SDValue N0, SDValue N1, SDNode *LocReference) { in visitADDLike()
2317 SDValue DAGCombiner::visitADDC(SDNode *N) { in visitADDC()
2379 SDValue DAGCombiner::visitUADDO(SDNode *N) { in visitUADDO()
2427 SDValue DAGCombiner::visitUADDOLike(SDValue N0, SDValue N1, SDNode *N) { in visitUADDOLike()
2449 SDValue DAGCombiner::visitADDE(SDNode *N) { in visitADDE()
2468 SDValue DAGCombiner::visitADDCARRY(SDNode *N) { in visitADDCARRY()
2519 SDNode *N) { in visitADDCARRYLike()
2577 SDValue DAGCombiner::visitSUB(SDNode *N) { in visitSUB()
2784 SDValue DAGCombiner::visitSUBSAT(SDNode *N) { in visitSUBSAT()
2821 SDValue DAGCombiner::visitSUBC(SDNode *N) { in visitSUBC()
2849 SDValue DAGCombiner::visitUSUBO(SDNode *N) { in visitUSUBO()
2881 SDValue DAGCombiner::visitSUBE(SDNode *N) { in visitSUBE()
2893 SDValue DAGCombiner::visitSUBCARRY(SDNode *N) { in visitSUBCARRY()
2908 SDValue DAGCombiner::visitMUL(SDNode *N) { in visitMUL()
3079 static bool isDivRemLibcallAvailable(SDNode *Node, bool isSigned, in isDivRemLibcallAvailable()
3098 SDValue DAGCombiner::useDivRem(SDNode *Node) { in useDivRem()
3135 for (SDNode::use_iterator UI = Op0.getNode()->use_begin(), in useDivRem()
3137 SDNode *User = *UI; in useDivRem()
3168 static SDValue simplifyDivRem(SDNode *N, SelectionDAG &DAG) { in simplifyDivRem()
3214 SDValue DAGCombiner::visitSDIV(SDNode *N) { in visitSDIV()
3255 if (SDNode *RemNode = DAG.getNodeIfExists(ISD::SREM, N->getVTList(), in visitSDIV()
3277 SDValue DAGCombiner::visitSDIVLike(SDValue N0, SDValue N1, SDNode *N) { in visitSDIVLike()
3358 SDValue DAGCombiner::visitUDIV(SDNode *N) { in visitUDIV()
3393 if (SDNode *RemNode = DAG.getNodeIfExists(ISD::UREM, N->getVTList(), in visitUDIV()
3415 SDValue DAGCombiner::visitUDIVLike(SDValue N0, SDValue N1, SDNode *N) { in visitUDIVLike()
3459 SDValue DAGCombiner::visitREM(SDNode *N) { in visitREM()
3523 if (SDNode *DivNode = DAG.getNodeIfExists(DivOpcode, N->getVTList(), in visitREM()
3541 SDValue DAGCombiner::visitMULHS(SDNode *N) { in visitMULHS()
3588 SDValue DAGCombiner::visitMULHU(SDNode *N) { in visitMULHU()
3648 SDValue DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp, in SimplifyNodeWithTwoResults()
3694 SDValue DAGCombiner::visitSMUL_LOHI(SDNode *N) { in visitSMUL_LOHI()
3725 SDValue DAGCombiner::visitUMUL_LOHI(SDNode *N) { in visitUMUL_LOHI()
3756 SDValue DAGCombiner::visitSMULO(SDNode *N) { in visitSMULO()
3766 SDValue DAGCombiner::visitUMULO(SDNode *N) { in visitUMULO()
3776 SDValue DAGCombiner::visitIMINMAX(SDNode *N) { in visitIMINMAX()
3821 SDValue DAGCombiner::hoistLogicOpWithSameOpcodeHands(SDNode *N) { in hoistLogicOpWithSameOpcodeHands()
4105 SDValue DAGCombiner::visitANDLike(SDValue N0, SDValue N1, SDNode *N) { in visitANDLike()
4312 bool DAGCombiner::SearchForAndLoads(SDNode *N, in SearchForAndLoads()
4314 SmallPtrSetImpl<SDNode*> &NodesWithConsts, in SearchForAndLoads()
4316 SDNode *&NodeToMask) { in SearchForAndLoads()
4403 bool DAGCombiner::BackwardsPropagateMask(SDNode *N, SelectionDAG &DAG) { in BackwardsPropagateMask()
4416 SmallPtrSet<SDNode*, 2> NodesWithConsts; in BackwardsPropagateMask()
4417 SDNode *FixupNode = nullptr; in BackwardsPropagateMask()
4476 SDValue DAGCombiner::unfoldExtremeBitClearingToShifts(SDNode *N) { in unfoldExtremeBitClearingToShifts()
4525 SDValue DAGCombiner::visitAND(SDNode *N) { in visitAND()
4828 SDValue DAGCombiner::MatchBSwapHWordLow(SDNode *N, SDValue N0, SDValue N1, in MatchBSwapHWordLow()
4946 static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) { in isBSwapHWordElement()
5036 SDValue DAGCombiner::MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1) { in MatchBSwapHWord()
5053 SDNode *Parts[4] = {}; in MatchBSwapHWord()
5107 SDValue DAGCombiner::visitORLike(SDValue N0, SDValue N1, SDNode *N) { in visitORLike()
5158 SDValue DAGCombiner::visitOR(SDNode *N) { in visitOR()
5311 if (SDNode *Rot = MatchRotate(N0, N1, SDLoc(N))) in visitOR()
5575 SDNode *DAGCombiner::MatchRotatePosNeg(SDValue Shifted, SDValue Pos, in MatchRotatePosNeg()
5599 SDNode *DAGCombiner::MatchRotate(SDValue LHS, SDValue RHS, const SDLoc &DL) { in MatchRotate()
5613 if (SDNode *Rot = MatchRotate(LHS.getOperand(0), RHS.getOperand(0), DL)) { in MatchRotate()
5728 SDNode *TryL = MatchRotatePosNeg(LHSShiftArg, LHSShiftAmt, RHSShiftAmt, in MatchRotate()
5733 SDNode *TryR = MatchRotatePosNeg(RHSShiftArg, RHSShiftAmt, LHSShiftAmt, in MatchRotate()
5902 SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { in MatchLoadCombine()
6051 SDValue DAGCombiner::unfoldMaskedMerge(SDNode *N) { in unfoldMaskedMerge()
6120 SDValue DAGCombiner::visitXOR(SDNode *N) { in visitXOR()
6313 SDValue DAGCombiner::visitShiftByConstant(SDNode *N, ConstantSDNode *Amt) { in visitShiftByConstant()
6318 SDNode *LHS = N->getOperand(0).getNode(); in visitShiftByConstant()
6349 SDNode *BinOpLHSVal = LHS->getOperand(0).getNode(); in visitShiftByConstant()
6393 SDValue DAGCombiner::distributeTruncateThroughAnd(SDNode *N) { in distributeTruncateThroughAnd()
6415 SDValue DAGCombiner::visitRotate(SDNode *N) { in visitRotate()
6452 SDNode *C1 = DAG.isConstantIntBuildVectorOrConstantInt(N1); in visitRotate()
6453 SDNode *C2 = DAG.isConstantIntBuildVectorOrConstantInt(N0.getOperand(1)); in visitRotate()
6472 SDValue DAGCombiner::visitSHL(SDNode *N) { in visitSHL()
6699 SDValue DAGCombiner::visitSRA(SDNode *N) { in visitSRA()
6858 SDValue DAGCombiner::visitSRL(SDNode *N) { in visitSRL()
7053 SDNode *Use = *N->use_begin(); in visitSRL()
7067 SDValue DAGCombiner::visitFunnelShift(SDNode *N) { in visitFunnelShift()
7102 SDValue DAGCombiner::visitABS(SDNode *N) { in visitABS()
7118 SDValue DAGCombiner::visitBSWAP(SDNode *N) { in visitBSWAP()
7131 SDValue DAGCombiner::visitBITREVERSE(SDNode *N) { in visitBITREVERSE()
7144 SDValue DAGCombiner::visitCTLZ(SDNode *N) { in visitCTLZ()
7161 SDValue DAGCombiner::visitCTLZ_ZERO_UNDEF(SDNode *N) { in visitCTLZ_ZERO_UNDEF()
7171 SDValue DAGCombiner::visitCTTZ(SDNode *N) { in visitCTTZ()
7188 SDValue DAGCombiner::visitCTTZ_ZERO_UNDEF(SDNode *N) { in visitCTTZ_ZERO_UNDEF()
7198 SDValue DAGCombiner::visitCTPOP(SDNode *N) { in visitCTPOP()
7266 SDValue DAGCombiner::foldSelectOfConstants(SDNode *N) { in foldSelectOfConstants()
7360 SDValue DAGCombiner::visitSELECT(SDNode *N) { in visitSELECT()
7530 std::pair<SDValue, SDValue> SplitVSETCC(const SDNode *N, SelectionDAG &DAG) { in SplitVSETCC()
7548 static SDValue ConvertSelectToConcatVector(SDNode *N, SelectionDAG &DAG) { in ConvertSelectToConcatVector()
7601 SDValue DAGCombiner::visitMSCATTER(SDNode *N) { in visitMSCATTER()
7660 SDValue DAGCombiner::visitMSTORE(SDNode *N) { in visitMSTORE()
7730 SDValue DAGCombiner::visitMGATHER(SDNode *N) { in visitMGATHER()
7807 SDValue DAGCombiner::visitMLOAD(SDNode *N) { in visitMLOAD()
7893 SDValue DAGCombiner::foldVSelectOfConstants(SDNode *N) { in foldVSelectOfConstants()
7942 SDValue DAGCombiner::visitVSELECT(SDNode *N) { in visitVSELECT()
8055 SDValue DAGCombiner::visitSELECT_CC(SDNode *N) { in visitSELECT_CC()
8097 SDValue DAGCombiner::visitSETCC(SDNode *N) { in visitSETCC()
8127 SDValue DAGCombiner::visitSETCCCARRY(SDNode *N) { in visitSETCCCARRY()
8146 static SDValue tryToFoldExtendOfConstant(SDNode *N, const TargetLowering &TLI, in tryToFoldExtendOfConstant()
8207 static bool ExtendUsesToFormExtLoad(EVT VT, SDNode *N, SDValue N0, in ExtendUsesToFormExtLoad()
8209 SmallVectorImpl<SDNode *> &ExtendNodes, in ExtendUsesToFormExtLoad()
8213 for (SDNode::use_iterator UI = N0.getNode()->use_begin(), in ExtendUsesToFormExtLoad()
8216 SDNode *User = *UI; in ExtendUsesToFormExtLoad()
8251 for (SDNode::use_iterator UI = N->use_begin(), UE = N->use_end(); in ExtendUsesToFormExtLoad()
8267 void DAGCombiner::ExtendSetCCUses(const SmallVectorImpl<SDNode *> &SetCCs, in ExtendSetCCUses()
8272 for (SDNode *SetCC : SetCCs) { in ExtendSetCCUses()
8289 SDValue DAGCombiner::CombineExtLoad(SDNode *N) { in CombineExtLoad()
8325 SmallVector<SDNode *, 4> SetCCs; in CombineExtLoad()
8387 SDValue DAGCombiner::CombineZExtLogicopShiftLoad(SDNode *N) { in CombineZExtLogicopShiftLoad()
8424 SmallVector<SDNode*, 4> SetCCs; in CombineZExtLogicopShiftLoad()
8460 SDValue DAGCombiner::matchVSelectOpSizesWithSetCC(SDNode *Cast) { in matchVSelectOpSizesWithSetCC()
8505 bool LegalOperations, SDNode *N, in tryToFoldExtOfExtload()
8507 SDNode *N0Node = N0.getNode(); in tryToFoldExtOfExtload()
8533 bool LegalOperations, SDNode *N, SDValue N0, in tryToFoldExtOfLoad()
8544 SmallVector<SDNode *, 4> SetCCs; in tryToFoldExtOfLoad()
8570 static SDValue foldExtendedSignBitTest(SDNode *N, SelectionDAG &DAG, in foldExtendedSignBitTest()
8601 SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) { in visitSIGN_EXTEND()
8618 SDNode *oye = N0.getOperand(0).getNode(); in visitSIGN_EXTEND()
8691 SmallVector<SDNode*, 4> SetCCs; in visitSIGN_EXTEND()
8843 SDValue DAGCombiner::visitZERO_EXTEND(SDNode *N) { in visitZERO_EXTEND()
8878 SDNode *oye = N0.getOperand(0).getNode(); in visitZERO_EXTEND()
8958 SmallVector<SDNode*, 4> SetCCs; in visitZERO_EXTEND()
9092 SDValue DAGCombiner::visitANY_EXTEND(SDNode *N) { in visitANY_EXTEND()
9111 SDNode *oye = N0.getOperand(0).getNode(); in visitANY_EXTEND()
9149 SmallVector<SDNode*, 4> SetCCs; in visitANY_EXTEND()
9236 SDValue DAGCombiner::visitAssertExt(SDNode *N) { in visitAssertExt()
9297 SDValue DAGCombiner::ReduceLoadWidth(SDNode *N) { in ReduceLoadWidth()
9389 SDNode *Mask = *(SRL->use_begin()); in ReduceLoadWidth()
9501 SDValue DAGCombiner::visitSIGN_EXTEND_INREG(SDNode *N) { in visitSIGN_EXTEND_INREG()
9635 SDValue DAGCombiner::visitSIGN_EXTEND_VECTOR_INREG(SDNode *N) { in visitSIGN_EXTEND_VECTOR_INREG()
9651 SDValue DAGCombiner::visitZERO_EXTEND_VECTOR_INREG(SDNode *N) { in visitZERO_EXTEND_VECTOR_INREG()
9667 SDValue DAGCombiner::visitTRUNCATE(SDNode *N) { in visitTRUNCATE()
9965 static SDNode *getBuildPairElt(SDNode *N, unsigned i) { in getBuildPairElt()
9974 SDValue DAGCombiner::CombineConsecutiveLoads(SDNode *N, EVT VT) { in CombineConsecutiveLoads()
10012 static SDValue foldBitcastedFPLogic(SDNode *N, SelectionDAG &DAG, in foldBitcastedFPLogic()
10065 SDValue DAGCombiner::visitBITCAST(SDNode *N) { in visitBITCAST()
10319 SDValue DAGCombiner::visitBUILD_PAIR(SDNode *N) { in visitBUILD_PAIR()
10327 ConstantFoldBITCASTofBUILD_VECTOR(SDNode *BV, EVT DstEltVT) { in ConstantFoldBITCASTofBUILD_VECTOR()
10368 SDNode *Tmp = ConstantFoldBITCASTofBUILD_VECTOR(BV, TmpVT).getNode(); in ConstantFoldBITCASTofBUILD_VECTOR()
10439 static bool isContractable(SDNode *N) { in isContractable()
10445 SDValue DAGCombiner::visitFADDForFMACombine(SDNode *N) { in visitFADDForFMACombine()
10657 SDValue DAGCombiner::visitFSUBForFMACombine(SDNode *N) { in visitFSUBForFMACombine()
10948 SDValue DAGCombiner::visitFMULForFMADistributiveCombine(SDNode *N) { in visitFMULForFMADistributiveCombine()
11040 SDValue DAGCombiner::visitFADD(SDNode *N) { in visitFADD()
11217 SDValue DAGCombiner::visitFSUB(SDNode *N) { in visitFSUB()
11289 SDValue DAGCombiner::visitFMUL(SDNode *N) { in visitFMUL()
11431 SDValue DAGCombiner::visitFMA(SDNode *N) { in visitFMA()
11543 SDValue DAGCombiner::combineRepeatedFPDivisors(SDNode *N) { in combineRepeatedFPDivisors()
11564 SetVector<SDNode *> Users; in combineRepeatedFPDivisors()
11600 SDValue DAGCombiner::visitFDIV(SDNode *N) { in visitFDIV()
11713 SDValue DAGCombiner::visitFREM(SDNode *N) { in visitFREM()
11730 SDValue DAGCombiner::visitFSQRT(SDNode *N) { in visitFSQRT()
11746 static inline bool CanCombineFCOPYSIGN_EXTEND_ROUND(SDNode *N) { in CanCombineFCOPYSIGN_EXTEND_ROUND()
11761 SDValue DAGCombiner::visitFCOPYSIGN(SDNode *N) { in visitFCOPYSIGN()
11808 SDValue DAGCombiner::visitFPOW(SDNode *N) { in visitFPOW()
11874 static SDValue foldFPToIntToFP(SDNode *N, SelectionDAG &DAG, in foldFPToIntToFP()
11909 SDValue DAGCombiner::visitSINT_TO_FP(SDNode *N) { in visitSINT_TO_FP()
11966 SDValue DAGCombiner::visitUINT_TO_FP(SDNode *N) { in visitUINT_TO_FP()
12009 static SDValue FoldIntToFPToInt(SDNode *N, SelectionDAG &DAG) { in FoldIntToFPToInt()
12050 SDValue DAGCombiner::visitFP_TO_SINT(SDNode *N) { in visitFP_TO_SINT()
12061 SDValue DAGCombiner::visitFP_TO_UINT(SDNode *N) { in visitFP_TO_UINT()
12072 SDValue DAGCombiner::visitFP_ROUND(SDNode *N) { in visitFP_ROUND()
12128 SDValue DAGCombiner::visitFP_ROUND_INREG(SDNode *N) { in visitFP_ROUND_INREG()
12144 SDValue DAGCombiner::visitFP_EXTEND(SDNode *N) { in visitFP_EXTEND()
12197 SDValue DAGCombiner::visitFCEIL(SDNode *N) { in visitFCEIL()
12208 SDValue DAGCombiner::visitFTRUNC(SDNode *N) { in visitFTRUNC()
12232 SDValue DAGCombiner::visitFFLOOR(SDNode *N) { in visitFFLOOR()
12244 SDValue DAGCombiner::visitFNEG(SDNode *N) { in visitFNEG()
12302 static SDValue visitFMinMax(SelectionDAG &DAG, SDNode *N, in visitFMinMax()
12324 SDValue DAGCombiner::visitFMINNUM(SDNode *N) { in visitFMINNUM()
12328 SDValue DAGCombiner::visitFMAXNUM(SDNode *N) { in visitFMAXNUM()
12332 SDValue DAGCombiner::visitFMINIMUM(SDNode *N) { in visitFMINIMUM()
12336 SDValue DAGCombiner::visitFMAXIMUM(SDNode *N) { in visitFMAXIMUM()
12340 SDValue DAGCombiner::visitFABS(SDNode *N) { in visitFABS()
12383 SDValue DAGCombiner::visitBRCOND(SDNode *N) { in visitBRCOND()
12483 SDNode *TheXor = N.getNode(); in rebuildSetCC()
12510 SDValue DAGCombiner::visitBR_CC(SDNode *N) { in visitBR_CC()
12538 static bool canFoldInAddressingMode(SDNode *N, SDNode *Use, in canFoldInAddressingMode()
12586 bool DAGCombiner::CombineToPreIndexedLoadStore(SDNode *N) { in CombineToPreIndexedLoadStore()
12661 SmallPtrSet<const SDNode *, 32> Visited; in CombineToPreIndexedLoadStore()
12662 SmallVector<const SDNode *, 16> Worklist; in CombineToPreIndexedLoadStore()
12668 SmallVector<SDNode *, 16> OtherUses; in CombineToPreIndexedLoadStore()
12670 for (SDNode::use_iterator UI = BasePtr.getNode()->use_begin(), in CombineToPreIndexedLoadStore()
12679 if (SDNode::hasPredecessorHelper(Use.getUser(), Visited, Worklist)) in CombineToPreIndexedLoadStore()
12709 for (SDNode *Use : Ptr.getNode()->uses()) { in CombineToPreIndexedLoadStore()
12712 if (SDNode::hasPredecessorHelper(Use, Visited, Worklist)) in CombineToPreIndexedLoadStore()
12811 bool DAGCombiner::CombineToPostIndexedLoadStore(SDNode *N) { in CombineToPostIndexedLoadStore()
12842 for (SDNode *Op : Ptr.getNode()->uses()) { in CombineToPostIndexedLoadStore()
12867 for (SDNode *Use : BasePtr.getNode()->uses()) { in CombineToPostIndexedLoadStore()
12875 for (SDNode *UseUse : Use->uses()) { in CombineToPostIndexedLoadStore()
12891 SmallPtrSet<const SDNode *, 32> Visited; in CombineToPostIndexedLoadStore()
12892 SmallVector<const SDNode *, 8> Worklist; in CombineToPostIndexedLoadStore()
12897 if (!SDNode::hasPredecessorHelper(N, Visited, Worklist) && in CombineToPostIndexedLoadStore()
12898 !SDNode::hasPredecessorHelper(Op, Visited, Worklist)) { in CombineToPostIndexedLoadStore()
13107 SDValue DAGCombiner::visitLOAD(SDNode *N) { in visitLOAD()
13327 SDNode *Inst;
13339 LoadedSlice(SDNode *Inst = nullptr, LoadSDNode *Origin = nullptr, in LoadedSlice()
13497 SDNode *Use = *Inst->use_begin(); in canMergeExpensiveCrossRegisterBankCopy()
13679 bool DAGCombiner::SliceUpLoad(SDNode *N) { in SliceUpLoad()
13697 for (SDNode::use_iterator UI = LD->use_begin(), UIEnd = LD->use_end(); in SliceUpLoad()
13703 SDNode *User = *UI; in SliceUpLoad()
13854 static SDNode *
13915 SDValue DAGCombiner::ReduceLoadOpStoreWidth(SDNode *N) { in ReduceLoadOpStoreWidth()
13939 if (SDNode *NewST = ShrinkLoadReplaceStoreWithStore(MaskedLoad, in ReduceLoadOpStoreWidth()
13946 if (SDNode *NewST = ShrinkLoadReplaceStoreWithStore(MaskedLoad, in ReduceLoadOpStoreWidth()
14040 SDValue DAGCombiner::TransformFPLoadStorePair(SDNode *N) { in TransformFPLoadStorePair()
14103 bool DAGCombiner::isMulAddWithConstProfitable(SDNode *MulNode, in isMulAddWithConstProfitable()
14113 for (SDNode *Use : ConstNode->uses()) { in isMulAddWithConstProfitable()
14118 SDNode *OtherOp; in isMulAddWithConstProfitable()
14119 SDNode *MulVar = AddNode.getOperand(0).getNode(); in isMulAddWithConstProfitable()
14167 SmallPtrSet<const SDNode *, 8> Visited; in getMergeStoreChains()
14343 SDNode *&RootNode) { in getStoreMergeCandidates()
14474 SDNode *RootNode) { in checkMergeStoreCandidatesForDependencies()
14480 SmallPtrSet<const SDNode *, 32> Visited; in checkMergeStoreCandidatesForDependencies()
14481 SmallVector<const SDNode *, 8> Worklist; in checkMergeStoreCandidatesForDependencies()
14502 SDNode *N = StoreNodes[i].MemNode; in checkMergeStoreCandidatesForDependencies()
14519 if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist, in checkMergeStoreCandidatesForDependencies()
14559 SDNode *RootNode; in MergeConsecutiveStores()
15153 SDValue DAGCombiner::visitSTORE(SDNode *N) { in visitSTORE()
15447 SDValue DAGCombiner::combineInsertEltToShuffle(SDNode *N, unsigned InsIndex) { in combineInsertEltToShuffle()
15496 SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) { in visitINSERT_VECTOR_ELT()
15583 SDValue DAGCombiner::scalarizeExtractedVectorLoad(SDNode *EVE, EVT InVecVT, in scalarizeExtractedVectorLoad()
15669 static SDValue scalarizeExtractedBinop(SDNode *ExtElt, SelectionDAG &DAG, in scalarizeExtractedBinop()
15701 SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) { in visitEXTRACT_VECTOR_ELT()
15843 if (llvm::all_of(VecOp->uses(), [&](SDNode *Use) { in visitEXTRACT_VECTOR_ELT()
15849 for (SDNode *Use : VecOp->uses()) { in visitEXTRACT_VECTOR_ELT()
15961 SDValue DAGCombiner::reduceBuildVecExtToExtBuildVec(SDNode *N) { in reduceBuildVecExtToExtBuildVec()
16073 SDValue DAGCombiner::createBuildVecShuffle(const SDLoc &DL, SDNode *N, in createBuildVecShuffle()
16194 static SDValue reduceBuildVecToShuffleWithZero(SDNode *BV, SelectionDAG &DAG) { in reduceBuildVecToShuffleWithZero()
16275 SDValue DAGCombiner::reduceBuildVecToShuffle(SDNode *N) { in reduceBuildVecToShuffle()
16489 SDValue DAGCombiner::convertBuildVecZextToZext(SDNode *N) { in convertBuildVecZextToZext()
16532 SDValue DAGCombiner::visitBUILD_VECTOR(SDNode *N) { in visitBUILD_VECTOR()
16606 static SDValue combineConcatVectorOfScalars(SDNode *N, SelectionDAG &DAG) { in combineConcatVectorOfScalars()
16671 static SDValue combineConcatVectorOfExtracts(SDNode *N, SelectionDAG &DAG) { in combineConcatVectorOfExtracts()
16745 SDValue DAGCombiner::visitCONCAT_VECTORS(SDNode *N) { in visitCONCAT_VECTORS()
16913 static SDValue narrowExtractedVectorBinOp(SDNode *Extract, SelectionDAG &DAG) { in narrowExtractedVectorBinOp()
17029 static SDValue narrowExtractedVectorLoad(SDNode *Extract, SelectionDAG &DAG) { in narrowExtractedVectorLoad()
17061 SDValue DAGCombiner::visitEXTRACT_SUBVECTOR(SDNode* N) { in visitEXTRACT_SUBVECTOR()
17165 static SDValue partitionShuffleOfConcats(SDNode *N, SelectionDAG &DAG) { in partitionShuffleOfConcats()
17564 SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) { in visitVECTOR_SHUFFLE()
17621 SDNode *V = N0.getNode(); in visitVECTOR_SHUFFLE()
17896 SDValue DAGCombiner::visitSCALAR_TO_VECTOR(SDNode *N) { in visitSCALAR_TO_VECTOR()
17947 SDValue DAGCombiner::visitINSERT_SUBVECTOR(SDNode *N) { in visitINSERT_SUBVECTOR()
18054 SDValue DAGCombiner::visitFP_TO_FP16(SDNode *N) { in visitFP_TO_FP16()
18064 SDValue DAGCombiner::visitFP16_TO_FP(SDNode *N) { in visitFP16_TO_FP()
18083 SDValue DAGCombiner::XformToShuffleWithZero(SDNode *N) { in XformToShuffleWithZero()
18171 SDValue DAGCombiner::SimplifyVBinOp(SDNode *N) { in SimplifyVBinOp()
18242 bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS, in SimplifySelectOps()
18326 SmallPtrSet<const SDNode *, 32> Visited; in SimplifySelectOps()
18327 SmallVector<const SDNode *, 16> Worklist; in SimplifySelectOps()
18336 if (SDNode::hasPredecessorHelper(LLD, Visited, Worklist) || in SimplifySelectOps()
18337 SDNode::hasPredecessorHelper(RLD, Visited, Worklist)) in SimplifySelectOps()
18347 SDNode *CondNode = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
18351 SDNode::hasPredecessorHelper(LLD, Visited, Worklist)) || in SimplifySelectOps()
18353 SDNode::hasPredecessorHelper(RLD, Visited, Worklist))) in SimplifySelectOps()
18367 SDNode *CondLHS = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
18368 SDNode *CondRHS = TheSelect->getOperand(1).getNode(); in SimplifySelectOps()
18373 SDNode::hasPredecessorHelper(LLD, Visited, Worklist)) || in SimplifySelectOps()
18375 SDNode::hasPredecessorHelper(RLD, Visited, Worklist))) in SimplifySelectOps()
18734 SDValue DAGCombiner::BuildSDIV(SDNode *N) { in BuildSDIV()
18740 SmallVector<SDNode *, 8> Built; in BuildSDIV()
18742 for (SDNode *N : Built) in BuildSDIV()
18752 SDValue DAGCombiner::BuildSDIVPow2(SDNode *N) { in BuildSDIVPow2()
18761 SmallVector<SDNode *, 8> Built; in BuildSDIVPow2()
18763 for (SDNode *N : Built) in BuildSDIVPow2()
18775 SDValue DAGCombiner::BuildUDIV(SDNode *N) { in BuildUDIV()
18781 SmallVector<SDNode *, 8> Built; in BuildUDIV()
18783 for (SDNode *N : Built) in BuildUDIV()
19135 void DAGCombiner::GatherAllAliases(SDNode *N, SDValue OriginalChain, in GatherAllAliases()
19138 SmallPtrSet<SDNode *, 16> Visited; // Visited node set. in GatherAllAliases()
19222 SDValue DAGCombiner::FindBetterChain(SDNode *N, SDValue OldChain) { in FindBetterChain()