Lines Matching refs:StoreNodes
759 SDValue getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes,
765 bool hasSameUnderlyingObj(ArrayRef<MemOpLink> StoreNodes);
771 bool mergeStoresOfConstantsOrVecElts(SmallVectorImpl<MemOpLink> &StoreNodes,
780 SmallVectorImpl<MemOpLink> &StoreNodes,
788 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores,
794 unsigned getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes,
799 bool tryStoreMergeOfConstants(SmallVectorImpl<MemOpLink> &StoreNodes,
807 bool tryStoreMergeOfExtracts(SmallVectorImpl<MemOpLink> &StoreNodes,
813 bool tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes,
19804 SDValue DAGCombiner::getMergeStoreChains(SmallVectorImpl<MemOpLink> &StoreNodes, in getMergeStoreChains() argument
19808 SDLoc StoreDL(StoreNodes[0].MemNode); in getMergeStoreChains()
19811 Visited.insert(StoreNodes[i].MemNode); in getMergeStoreChains()
19816 if (Visited.insert(StoreNodes[i].MemNode->getChain().getNode()).second) in getMergeStoreChains()
19817 Chains.push_back(StoreNodes[i].MemNode->getChain()); in getMergeStoreChains()
19824 bool DAGCombiner::hasSameUnderlyingObj(ArrayRef<MemOpLink> StoreNodes) { in hasSameUnderlyingObj() argument
19826 for (const auto &MemOp : StoreNodes) { in hasSameUnderlyingObj()
19849 SmallVectorImpl<MemOpLink> &StoreNodes, EVT MemVT, unsigned NumStores, in mergeStoresOfConstantsOrVecElts() argument
19859 SDLoc DL(StoreNodes[0].MemNode); in mergeStoresOfConstantsOrVecElts()
19868 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in mergeStoresOfConstantsOrVecElts()
19894 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[I].MemNode); in mergeStoresOfConstantsOrVecElts()
19926 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in mergeStoresOfConstantsOrVecElts()
19972 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[Idx].MemNode); in mergeStoresOfConstantsOrVecElts()
20002 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in mergeStoresOfConstantsOrVecElts()
20003 SDValue NewChain = getMergeStoreChains(StoreNodes, NumStores); in mergeStoresOfConstantsOrVecElts()
20004 bool CanReusePtrInfo = hasSameUnderlyingObj(StoreNodes); in mergeStoresOfConstantsOrVecElts()
20038 CombineTo(StoreNodes[i].MemNode, NewStore); in mergeStoresOfConstantsOrVecElts()
20045 StoreSDNode *St, SmallVectorImpl<MemOpLink> &StoreNodes, in getStoreMergeCandidates() argument
20162 StoreNodes.push_back(MemOpLink(OtherStore, PtrDiff)); in getStoreMergeCandidates()
20210 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores, in checkMergeStoreCandidatesForDependencies() argument
20239 SDNode *N = StoreNodes[i].MemNode; in checkMergeStoreCandidatesForDependencies()
20261 if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist, in checkMergeStoreCandidatesForDependencies()
20267 auto &RootCount = StoreRootCountMap[StoreNodes[i].MemNode]; in checkMergeStoreCandidatesForDependencies()
20279 DAGCombiner::getConsecutiveStores(SmallVectorImpl<MemOpLink> &StoreNodes, in getConsecutiveStores() argument
20284 while ((StartIdx + 1 < StoreNodes.size()) && in getConsecutiveStores()
20285 StoreNodes[StartIdx].OffsetFromBase + ElementSizeBytes != in getConsecutiveStores()
20286 StoreNodes[StartIdx + 1].OffsetFromBase) in getConsecutiveStores()
20290 if (StartIdx + 1 >= StoreNodes.size()) in getConsecutiveStores()
20295 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + StartIdx); in getConsecutiveStores()
20300 int64_t StartAddress = StoreNodes[0].OffsetFromBase; in getConsecutiveStores()
20303 for (unsigned i = 1, e = StoreNodes.size(); i < e; ++i) { in getConsecutiveStores()
20304 int64_t CurrAddress = StoreNodes[i].OffsetFromBase; in getConsecutiveStores()
20314 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 1); in getConsecutiveStores()
20319 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfConstants() argument
20329 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfConstants()
20338 StoreSDNode *ST = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfConstants()
20419 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfConstants()
20422 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfConstants()
20428 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfConstants()
20430 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
20435 MadeChange |= mergeStoresOfConstantsOrVecElts(StoreNodes, MemVT, NumElem, in tryStoreMergeOfConstants()
20440 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfConstants()
20447 SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumConsecutiveStores, in tryStoreMergeOfExtracts() argument
20456 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfExtracts()
20489 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfExtracts()
20492 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfExtracts()
20498 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumStoresToMerge, in tryStoreMergeOfExtracts()
20500 StoreNodes.erase(StoreNodes.begin(), in tryStoreMergeOfExtracts()
20501 StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
20507 StoreNodes, MemVT, NumStoresToMerge, /*IsConstantSrc*/ false, in tryStoreMergeOfExtracts()
20510 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumStoresToMerge); in tryStoreMergeOfExtracts()
20516 bool DAGCombiner::tryStoreMergeOfLoads(SmallVectorImpl<MemOpLink> &StoreNodes, in tryStoreMergeOfLoads() argument
20535 StoreSDNode *St = cast<StoreSDNode>(StoreNodes[i].MemNode); in tryStoreMergeOfLoads()
20562 StoreNodes[0].MemNode->getAlign() >= RequiredAlignment) { in tryStoreMergeOfLoads()
20563 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + 2); in tryStoreMergeOfLoads()
20578 LSBaseSDNode *FirstInChain = StoreNodes[0].MemNode; in tryStoreMergeOfLoads()
20695 (StoreNodes[NumSkip].MemNode->getAlign() <= FirstStoreAlign)) in tryStoreMergeOfLoads()
20697 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumSkip); in tryStoreMergeOfLoads()
20704 if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem, in tryStoreMergeOfLoads()
20706 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
20725 SDLoc StoreDL(StoreNodes[0].MemNode); in tryStoreMergeOfLoads()
20730 SDValue NewStoreChain = getMergeStoreChains(StoreNodes, NumElem); in tryStoreMergeOfLoads()
20731 bool CanReusePtrInfo = hasSameUnderlyingObj(StoreNodes); in tryStoreMergeOfLoads()
20746 StMMOFlags |= TLI.getTargetMMOFlags(*StoreNodes[0].MemNode); in tryStoreMergeOfLoads()
20793 SDValue Val = StoreNodes[i].MemNode->getOperand(1); in tryStoreMergeOfLoads()
20794 CombineTo(StoreNodes[i].MemNode, NewStore); in tryStoreMergeOfLoads()
20800 StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem); in tryStoreMergeOfLoads()
20833 SmallVector<MemOpLink, 8> StoreNodes; in mergeConsecutiveStores() local
20836 getStoreMergeCandidates(St, StoreNodes, RootNode); in mergeConsecutiveStores()
20839 if (StoreNodes.size() < 2) in mergeConsecutiveStores()
20844 llvm::sort(StoreNodes, [](MemOpLink LHS, MemOpLink RHS) { in mergeConsecutiveStores()
20862 while (StoreNodes.size() > 1) { in mergeConsecutiveStores()
20864 getConsecutiveStores(StoreNodes, ElementSizeBytes); in mergeConsecutiveStores()
20873 MadeChange |= tryStoreMergeOfConstants(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
20878 MadeChange |= tryStoreMergeOfExtracts(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()
20883 MadeChange |= tryStoreMergeOfLoads(StoreNodes, NumConsecutiveStores, in mergeConsecutiveStores()