Lines Matching refs:StoreNodes
547 SDValue getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes,
555 bool MergeStoresOfConstantsOrVecElts(SmallVectorImpl<MemOpLink> &StoreNodes,
565 SmallVectorImpl<MemOpLink> &StoreNodes,
574 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores,
14164 SDValue DAGCombiner::getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes, in getMergeStoreChains() argument
14168 SDLoc StoreDL(StoreNodes[0].MemNode); in getMergeStoreChains()
14171 Visited.insert(StoreNodes[i].MemNode); in getMergeStoreChains()
14176 if (Visited.count(StoreNodes[i].MemNode->getChain().getNode()) == 0) in getMergeStoreChains()
14177 Chains.push_back(StoreNodes[i].MemNode->getChain()); in getMergeStoreChains()
14185 SmallVectorImpl<MemOpLink> &StoreNodes, EVT MemVT, unsigned NumStores, in MergeStoresOfConstantsOrVecElts() argument
14192 SDLoc DL(StoreNodes[0].MemNode); in MergeStoresOfConstantsOrVecElts()
14211 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in MergeStoresOfConstantsOrVecElts()
14240 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in MergeStoresOfConstantsOrVecElts()
14283 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[Idx].MemNode); in MergeStoresOfConstantsOrVecElts()
14309 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in MergeStoresOfConstantsOrVecElts()
14310 SDValue NewChain = getMergeStoreChains(StoreNodes, NumStores); in MergeStoresOfConstantsOrVecElts()
14335 CombineTo(StoreNodes[i].MemNode, NewStore); in MergeStoresOfConstantsOrVecElts()
14342 StoreSDNode *St, SmallVectorImpl<MemOpLink> &StoreNodes, in getStoreMergeCandidates() argument
14454 StoreNodes.push_back(MemOpLink(OtherST, PtrDiff)); in getStoreMergeCandidates()
14463 StoreNodes.push_back(MemOpLink(OtherST, PtrDiff)); in getStoreMergeCandidates()
14473 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores, in checkMergeStoreCandidatesForDependencies() argument
14502 SDNode *N = StoreNodes[i].MemNode; in checkMergeStoreCandidatesForDependencies()
14519 if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist, in checkMergeStoreCandidatesForDependencies()
14558 SmallVector<MemOpLink, 8> StoreNodes; in MergeConsecutiveStores() local
14561 getStoreMergeCandidates(St, StoreNodes, RootNode); in MergeConsecutiveStores()
14564 if (StoreNodes.size() < 2) in MergeConsecutiveStores()
14569 llvm::sort(StoreNodes, [](MemOpLink LHS, MemOpLink RHS) { in MergeConsecutiveStores()
14582 while (StoreNodes.size() > 1) { in MergeConsecutiveStores()
14584 while ((StartIdx + 1 < StoreNodes.size()) && in MergeConsecutiveStores()
14585 StoreNodes[StartIdx].OffsetFromBase + ElementSizeBytes != in MergeConsecutiveStores()
14586 StoreNodes[StartIdx + 1].OffsetFromBase) in MergeConsecutiveStores()
14590 if (StartIdx + 1 >= StoreNodes.size()) in MergeConsecutiveStores()
14594 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + StartIdx); in MergeConsecutiveStores()
14599 int64_t StartAddress = StoreNodes[0].OffsetFromBase; in MergeConsecutiveStores()
14602 for (unsigned i = 1, e = StoreNodes.size(); i < e; ++i) { in MergeConsecutiveStores()
14603 int64_t CurrAddress = StoreNodes[i].OffsetFromBase; in MergeConsecutiveStores()
14610 StoreNodes.erase(StoreNodes.begin(), in MergeConsecutiveStores()
14611 StoreNodes.begin() + NumConsecutiveStores); in MergeConsecutiveStores()
14622 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in MergeConsecutiveStores()
14631 StoreSDNode *ST = cast<StoreSDNode>(StoreNodes[i].MemNode); in MergeConsecutiveStores()
14710 (StoreNodes[NumSkip].MemNode->getAlignment() <= FirstStoreAlign)) in MergeConsecutiveStores()
14713 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in MergeConsecutiveStores()
14719 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in MergeConsecutiveStores()
14721 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in MergeConsecutiveStores()
14726 RV |= MergeStoresOfConstantsOrVecElts(StoreNodes, MemVT, NumElem, true, in MergeConsecutiveStores()
14730 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in MergeConsecutiveStores()
14741 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in MergeConsecutiveStores()
14776 (StoreNodes[NumSkip].MemNode->getAlignment() <= FirstStoreAlign)) in MergeConsecutiveStores()
14779 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in MergeConsecutiveStores()
14786 StoreNodes, NumStoresToMerge, RootNode)) { in MergeConsecutiveStores()
14787 StoreNodes.erase(StoreNodes.begin(), in MergeConsecutiveStores()
14788 StoreNodes.begin() + NumStoresToMerge); in MergeConsecutiveStores()
14794 StoreNodes, MemVT, NumStoresToMerge, false, true, false); in MergeConsecutiveStores()
14796 StoreNodes.erase(StoreNodes.begin(), in MergeConsecutiveStores()
14797 StoreNodes.begin() + NumStoresToMerge); in MergeConsecutiveStores()
14815 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in MergeConsecutiveStores()
14841 StoreNodes[0].MemNode->getAlignment() >= RequiredAlignment) { in MergeConsecutiveStores()
14842 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 2); in MergeConsecutiveStores()
14846 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in MergeConsecutiveStores()
14959 (StoreNodes[NumSkip].MemNode->getAlignment() <= FirstStoreAlign)) in MergeConsecutiveStores()
14961 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in MergeConsecutiveStores()
14968 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in MergeConsecutiveStores()
14970 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in MergeConsecutiveStores()
14989 SDLoc StoreDL(StoreNodes[0].MemNode); in MergeConsecutiveStores()
14994 SDValue NewStoreChain = getMergeStoreChains(StoreNodes, NumElem); in MergeConsecutiveStores()
15034 SDValue Val = StoreNodes[i].MemNode->getOperand(1); in MergeConsecutiveStores()
15035 CombineTo(StoreNodes[i].MemNode, NewStore); in MergeConsecutiveStores()
15041 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in MergeConsecutiveStores()