Lines Matching defs:ChainPred
753 for (ChainT *ChainPred : HotChains) {
755 for (const auto &[ChainSucc, Edge] : ChainPred->Edges) {
761 if (ChainPred->numBlocks() + ChainSucc->numBlocks() >= MaxChainSize)
767 const double ChainPredDensity = ChainPred->density();
778 MergeGainT CurGain = getBestMergeGain(ChainPred, ChainSucc, Edge);
784 compareChainPairs(ChainPred, ChainSucc, BestChainPred,
787 BestChainPred = ChainPred;
851 MergeGainT getBestMergeGain(ChainT *ChainPred, ChainT *ChainSucc,
853 if (Edge->hasCachedMergeGain(ChainPred, ChainSucc))
854 return Edge->getCachedMergeGain(ChainPred, ChainSucc);
857 // Precompute jumps between ChainPred and ChainSucc.
858 ChainEdge *EdgePP = ChainPred->getEdge(ChainPred);
869 if (Offset == 0 || Offset == ChainPred->Nodes.size())
872 NodeT *Node = ChainPred->Nodes[Offset - 1];
879 computeMergeGain(ChainPred, ChainSucc, Jumps, Offset, MergeType));
885 computeMergeGain(ChainPred, ChainSucc, Jumps, 0, MergeTypeT::X_Y));
887 // Attach (a part of) ChainPred before the first node of ChainSucc.
890 if (SrcBlock->CurChain != ChainPred)
896 // Attach (a part of) ChainPred after the last node of ChainSucc.
899 if (DstBlock->CurChain != ChainPred)
905 // Try to break ChainPred in various ways and concatenate with ChainSucc.
906 if (ChainPred->Nodes.size() <= ChainSplitThreshold) {
907 for (size_t Offset = 1; Offset < ChainPred->Nodes.size(); Offset++) {
911 const NodeT *BB = ChainPred->Nodes[Offset - 1];
912 const NodeT *BB2 = ChainPred->Nodes[Offset];
923 Edge->setCachedMergeGain(ChainPred, ChainSucc, Gain);
931 MergeGainT computeMergeGain(const ChainT *ChainPred, const ChainT *ChainSucc,
935 mergeNodes(ChainPred->Nodes, ChainSucc->Nodes, MergeOffset, MergeType);
938 if ((ChainPred->isEntry() || ChainSucc->isEntry()) &&
944 double CurScore = ChainPred->Score;
1211 // Precompute jumps between ChainPred and ChainSucc.
1250 MergeGainT computeMergeGain(ChainT *ChainPred, ChainT *ChainSucc,
1254 double FreqGain = freqBasedLocalityGain(ChainPred, ChainSucc);
1259 mergeNodes(ChainPred->Nodes, ChainSucc->Nodes, MergeOffset, MergeType);
1265 GainScore /= std::min(ChainPred->Size, ChainSucc->Size);
1271 double freqBasedLocalityGain(ChainT *ChainPred, ChainT *ChainSucc) const {
1282 ChainPred->ExecutionCount * missProbability(ChainPred->density()) +
1286 double MergedCounts = ChainPred->ExecutionCount + ChainSucc->ExecutionCount;
1287 double MergedSize = ChainPred->Size + ChainSucc->Size;