Lines Matching refs:StoreNodes

695     SDValue getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes,
702 bool mergeStoresOfConstantsOrVecElts(SmallVectorImpl<MemOpLink> &StoreNodes,
711 SmallVectorImpl<MemOpLink> &StoreNodes,
719 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores,
725 unsigned getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes,
730 bool tryStoreMergeOfConstants(SmallVectorImpl<MemOpLink> &StoreNodes,
738 bool tryStoreMergeOfExtracts(SmallVectorImpl<MemOpLink> &StoreNodes,
744 bool tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes,
16897 SDValue DAGCombiner::getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes, in getMergeStoreChains() argument
16901 SDLoc StoreDL(StoreNodes[0].MemNode); in getMergeStoreChains()
16904 Visited.insert(StoreNodes[i].MemNode); in getMergeStoreChains()
16909 if (Visited.insert(StoreNodes[i].MemNode->getChain().getNode()).second) in getMergeStoreChains()
16910 Chains.push_back(StoreNodes[i].MemNode->getChain()); in getMergeStoreChains()
16918 SmallVectorImpl<MemOpLink> &StoreNodes, EVT MemVT, unsigned NumStores, in mergeStoresOfConstantsOrVecElts() argument
16928 SDLoc DL(StoreNodes[0].MemNode); in mergeStoresOfConstantsOrVecElts()
16947 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in mergeStoresOfConstantsOrVecElts()
16976 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in mergeStoresOfConstantsOrVecElts()
17019 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[Idx].MemNode); in mergeStoresOfConstantsOrVecElts()
17045 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in mergeStoresOfConstantsOrVecElts()
17046 SDValue NewChain = getMergeStoreChains(StoreNodes, NumStores); in mergeStoresOfConstantsOrVecElts()
17070 CombineTo(StoreNodes[i].MemNode, NewStore); in mergeStoresOfConstantsOrVecElts()
17077 StoreSDNode *St, SmallVectorImpl<MemOpLink> &StoreNodes, in getStoreMergeCandidates() argument
17189 StoreNodes.push_back(MemOpLink(OtherStore, PtrDiff)); in getStoreMergeCandidates()
17235 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores, in checkMergeStoreCandidatesForDependencies() argument
17264 SDNode *N = StoreNodes[i].MemNode; in checkMergeStoreCandidatesForDependencies()
17281 if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist, in checkMergeStoreCandidatesForDependencies()
17287 auto &RootCount = StoreRootCountMap[StoreNodes[i].MemNode]; in checkMergeStoreCandidatesForDependencies()
17299 DAGCombiner::getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes, in getConsecutiveStores() argument
17304 while ((StartIdx + 1 < StoreNodes.size()) && in getConsecutiveStores()
17305 StoreNodes[StartIdx].OffsetFromBase + ElementSizeBytes != in getConsecutiveStores()
17306 StoreNodes[StartIdx + 1].OffsetFromBase) in getConsecutiveStores()
17310 if (StartIdx + 1 >= StoreNodes.size()) in getConsecutiveStores()
17315 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + StartIdx); in getConsecutiveStores()
17320 int64_t StartAddress = StoreNodes[0].OffsetFromBase; in getConsecutiveStores()
17323 for (unsigned i = 1, e = StoreNodes.size(); i < e; ++i) { in getConsecutiveStores()
17324 int64_t CurrAddress = StoreNodes[i].OffsetFromBase; in getConsecutiveStores()
17334 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 1); in getConsecutiveStores()
17339 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfConstants() argument
17349 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfConstants()
17358 StoreSDNode *ST = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfConstants()
17437 (StoreNodes[NumSkip].MemNode->getAlignment() <= FirstStoreAlign)) in tryStoreMergeOfConstants()
17440 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfConstants()
17446 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfConstants()
17448 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
17453 MadeChange |= mergeStoresOfConstantsOrVecElts(StoreNodes, MemVT, NumElem, in tryStoreMergeOfConstants()
17458 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
17465 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfExtracts() argument
17474 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfExtracts()
17506 (StoreNodes[NumSkip].MemNode->getAlignment() <= FirstStoreAlign)) in tryStoreMergeOfExtracts()
17509 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfExtracts()
17515 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumStoresToMerge, in tryStoreMergeOfExtracts()
17517 StoreNodes.erase(StoreNodes.begin(), in tryStoreMergeOfExtracts()
17518 StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
17524 StoreNodes, MemVT, NumStoresToMerge, /*IsConstantSrc*/ false, in tryStoreMergeOfExtracts()
17527 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
17533 bool DAGCombiner::tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes, in tryStoreMergeOfLoads() argument
17552 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfLoads()
17579 StoreNodes[0].MemNode->getAlign() >= RequiredAlignment) { in tryStoreMergeOfLoads()
17580 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 2); in tryStoreMergeOfLoads()
17595 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfLoads()
17705 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfLoads()
17707 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfLoads()
17714 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfLoads()
17716 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
17735 SDLoc StoreDL(StoreNodes[0].MemNode); in tryStoreMergeOfLoads()
17740 SDValue NewStoreChain = getMergeStoreChains(StoreNodes, NumElem); in tryStoreMergeOfLoads()
17794 SDValue Val = StoreNodes[i].MemNode->getOperand(1); in tryStoreMergeOfLoads()
17795 CombineTo(StoreNodes[i].MemNode, NewStore); in tryStoreMergeOfLoads()
17801 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
17834 SmallVector<MemOpLink, 8> StoreNodes; in mergeConsecutiveStores() local
17837 getStoreMergeCandidates(St, StoreNodes, RootNode); in mergeConsecutiveStores()
17840 if (StoreNodes.size() < 2) in mergeConsecutiveStores()
17845 llvm::sort(StoreNodes, [](MemOpLink LHS, MemOpLink RHS) { in mergeConsecutiveStores()
17863 while (StoreNodes.size() > 1) { in mergeConsecutiveStores()
17865 getConsecutiveStores(StoreNodes, ElementSizeBytes); in mergeConsecutiveStores()
17874 MadeChange |= tryStoreMergeOfConstants(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
17879 MadeChange |= tryStoreMergeOfExtracts(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
17884 MadeChange |= tryStoreMergeOfLoads(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()