Lines Matching refs:StoreNodes

696     SDValue getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes,
703 bool mergeStoresOfConstantsOrVecElts(SmallVectorImpl<MemOpLink> &StoreNodes,
712 SmallVectorImpl<MemOpLink> &StoreNodes,
720 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores,
726 unsigned getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes,
731 bool tryStoreMergeOfConstants(SmallVectorImpl<MemOpLink> &StoreNodes,
739 bool tryStoreMergeOfExtracts(SmallVectorImpl<MemOpLink> &StoreNodes,
745 bool tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes,
17858 SDValue DAGCombiner::getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes, in getMergeStoreChains() argument
17862 SDLoc StoreDL(StoreNodes[0].MemNode); in getMergeStoreChains()
17865 Visited.insert(StoreNodes[i].MemNode); in getMergeStoreChains()
17870 if (Visited.insert(StoreNodes[i].MemNode->getChain().getNode()).second) in getMergeStoreChains()
17871 Chains.push_back(StoreNodes[i].MemNode->getChain()); in getMergeStoreChains()
17879 SmallVectorImpl<MemOpLink> &StoreNodes, EVT MemVT, unsigned NumStores, in mergeStoresOfConstantsOrVecElts() argument
17889 SDLoc DL(StoreNodes[0].MemNode); in mergeStoresOfConstantsOrVecElts()
17898 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in mergeStoresOfConstantsOrVecElts()
17924 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in mergeStoresOfConstantsOrVecElts()
17955 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in mergeStoresOfConstantsOrVecElts()
17998 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[Idx].MemNode); in mergeStoresOfConstantsOrVecElts()
18024 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in mergeStoresOfConstantsOrVecElts()
18025 SDValue NewChain = getMergeStoreChains(StoreNodes, NumStores); in mergeStoresOfConstantsOrVecElts()
18049 CombineTo(StoreNodes[i].MemNode, NewStore); in mergeStoresOfConstantsOrVecElts()
18056 StoreSDNode *St, SmallVectorImpl<MemOpLink> &StoreNodes, in getStoreMergeCandidates() argument
18168 StoreNodes.push_back(MemOpLink(OtherStore, PtrDiff)); in getStoreMergeCandidates()
18216 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores, in checkMergeStoreCandidatesForDependencies() argument
18245 SDNode *N = StoreNodes[i].MemNode; in checkMergeStoreCandidatesForDependencies()
18267 if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist, in checkMergeStoreCandidatesForDependencies()
18273 auto &RootCount = StoreRootCountMap[StoreNodes[i].MemNode]; in checkMergeStoreCandidatesForDependencies()
18285 DAGCombiner::getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes, in getConsecutiveStores() argument
18290 while ((StartIdx + 1 < StoreNodes.size()) && in getConsecutiveStores()
18291 StoreNodes[StartIdx].OffsetFromBase + ElementSizeBytes != in getConsecutiveStores()
18292 StoreNodes[StartIdx + 1].OffsetFromBase) in getConsecutiveStores()
18296 if (StartIdx + 1 >= StoreNodes.size()) in getConsecutiveStores()
18301 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + StartIdx); in getConsecutiveStores()
18306 int64_t StartAddress = StoreNodes[0].OffsetFromBase; in getConsecutiveStores()
18309 for (unsigned i = 1, e = StoreNodes.size(); i < e; ++i) { in getConsecutiveStores()
18310 int64_t CurrAddress = StoreNodes[i].OffsetFromBase; in getConsecutiveStores()
18320 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 1); in getConsecutiveStores()
18325 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfConstants() argument
18335 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfConstants()
18344 StoreSDNode *ST = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfConstants()
18425 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfConstants()
18428 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfConstants()
18434 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfConstants()
18436 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
18441 MadeChange |= mergeStoresOfConstantsOrVecElts(StoreNodes, MemVT, NumElem, in tryStoreMergeOfConstants()
18446 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
18453 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfExtracts() argument
18462 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfExtracts()
18495 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfExtracts()
18498 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfExtracts()
18504 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumStoresToMerge, in tryStoreMergeOfExtracts()
18506 StoreNodes.erase(StoreNodes.begin(), in tryStoreMergeOfExtracts()
18507 StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
18513 StoreNodes, MemVT, NumStoresToMerge, /*IsConstantSrc*/ false, in tryStoreMergeOfExtracts()
18516 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
18522 bool DAGCombiner::tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes, in tryStoreMergeOfLoads() argument
18541 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfLoads()
18568 StoreNodes[0].MemNode->getAlign() >= RequiredAlignment) { in tryStoreMergeOfLoads()
18569 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 2); in tryStoreMergeOfLoads()
18584 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfLoads()
18701 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfLoads()
18703 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfLoads()
18710 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfLoads()
18712 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
18731 SDLoc StoreDL(StoreNodes[0].MemNode); in tryStoreMergeOfLoads()
18736 SDValue NewStoreChain = getMergeStoreChains(StoreNodes, NumElem); in tryStoreMergeOfLoads()
18790 SDValue Val = StoreNodes[i].MemNode->getOperand(1); in tryStoreMergeOfLoads()
18791 CombineTo(StoreNodes[i].MemNode, NewStore); in tryStoreMergeOfLoads()
18797 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
18830 SmallVector<MemOpLink, 8> StoreNodes; in mergeConsecutiveStores() local
18833 getStoreMergeCandidates(St, StoreNodes, RootNode); in mergeConsecutiveStores()
18836 if (StoreNodes.size() < 2) in mergeConsecutiveStores()
18841 llvm::sort(StoreNodes, [](MemOpLink LHS, MemOpLink RHS) { in mergeConsecutiveStores()
18859 while (StoreNodes.size() > 1) { in mergeConsecutiveStores()
18861 getConsecutiveStores(StoreNodes, ElementSizeBytes); in mergeConsecutiveStores()
18870 MadeChange |= tryStoreMergeOfConstants(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
18875 MadeChange |= tryStoreMergeOfExtracts(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
18880 MadeChange |= tryStoreMergeOfLoads(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()