Lines Matching refs:Cand
259 void growRegion(GlobalSplitCandidate &Cand);
778 void RAGreedy::growRegion(GlobalSplitCandidate &Cand) { in growRegion() argument
781 SmallVectorImpl<unsigned> &ActiveBlocks = Cand.ActiveBlocks; in growRegion()
814 if (Cand.PhysReg) in growRegion()
815 addThroughConstraints(Cand.Intf, NewBlocks); in growRegion()
835 bool RAGreedy::calcCompactRegion(GlobalSplitCandidate &Cand) { in calcCompactRegion() argument
841 Cand.reset(IntfCache, 0); in calcCompactRegion()
847 SpillPlacer->prepare(Cand.LiveBundles); in calcCompactRegion()
851 if (!addSplitConstraints(Cand.Intf, Cost)) { in calcCompactRegion()
856 growRegion(Cand); in calcCompactRegion()
859 if (!Cand.LiveBundles.any()) { in calcCompactRegion()
865 for (int i = Cand.LiveBundles.find_first(); i>=0; in calcCompactRegion()
866 i = Cand.LiveBundles.find_next(i)) in calcCompactRegion()
895 float RAGreedy::calcGlobalSplitCost(GlobalSplitCandidate &Cand) { in calcGlobalSplitCost() argument
897 const BitVector &LiveBundles = Cand.LiveBundles; in calcGlobalSplitCost()
914 for (unsigned i = 0, e = Cand.ActiveBlocks.size(); i != e; ++i) { in calcGlobalSplitCost()
915 unsigned Number = Cand.ActiveBlocks[i]; in calcGlobalSplitCost()
922 Cand.Intf.moveToBlock(Number); in calcGlobalSplitCost()
923 if (Cand.Intf.hasInterference()) in calcGlobalSplitCost()
969 GlobalSplitCandidate &Cand = GlobalCand[CandIn]; in splitAroundRegion() local
970 IntvIn = Cand.IntvIdx; in splitAroundRegion()
971 Cand.Intf.moveToBlock(Number); in splitAroundRegion()
972 IntfIn = Cand.Intf.first(); in splitAroundRegion()
978 GlobalSplitCandidate &Cand = GlobalCand[CandOut]; in splitAroundRegion() local
979 IntvOut = Cand.IntvIdx; in splitAroundRegion()
980 Cand.Intf.moveToBlock(Number); in splitAroundRegion()
981 IntfOut = Cand.Intf.last(); in splitAroundRegion()
1018 GlobalSplitCandidate &Cand = GlobalCand[CandIn]; in splitAroundRegion() local
1019 IntvIn = Cand.IntvIdx; in splitAroundRegion()
1020 Cand.Intf.moveToBlock(Number); in splitAroundRegion()
1021 IntfIn = Cand.Intf.first(); in splitAroundRegion()
1026 GlobalSplitCandidate &Cand = GlobalCand[CandOut]; in splitAroundRegion() local
1027 IntvOut = Cand.IntvIdx; in splitAroundRegion()
1028 Cand.Intf.moveToBlock(Number); in splitAroundRegion()
1029 IntfOut = Cand.Intf.last(); in splitAroundRegion()
1125 GlobalSplitCandidate &Cand = GlobalCand[NumCands]; in tryRegionSplit() local
1126 Cand.reset(IntfCache, PhysReg); in tryRegionSplit()
1128 SpillPlacer->prepare(Cand.LiveBundles); in tryRegionSplit()
1130 if (!addSplitConstraints(Cand.Intf, Cost)) { in tryRegionSplit()
1145 growRegion(Cand); in tryRegionSplit()
1150 if (!Cand.LiveBundles.any()) { in tryRegionSplit()
1155 Cost += calcGlobalSplitCost(Cand); in tryRegionSplit()
1158 for (int i = Cand.LiveBundles.find_first(); i>=0; in tryRegionSplit()
1159 i = Cand.LiveBundles.find_next(i)) in tryRegionSplit()
1183 GlobalSplitCandidate &Cand = GlobalCand[BestCand]; in tryRegionSplit() local
1184 if (unsigned B = Cand.getBundles(BundleCand, BestCand)) { in tryRegionSplit()
1186 Cand.IntvIdx = SE->openIntv(); in tryRegionSplit()
1187 DEBUG(dbgs() << "Split for " << PrintReg(Cand.PhysReg, TRI) << " in " in tryRegionSplit()
1188 << B << " bundles, intv " << Cand.IntvIdx << ".\n"); in tryRegionSplit()
1195 GlobalSplitCandidate &Cand = GlobalCand.front(); in tryRegionSplit() local
1196 assert(!Cand.PhysReg && "Compact region has no physreg"); in tryRegionSplit()
1197 if (unsigned B = Cand.getBundles(BundleCand, 0)) { in tryRegionSplit()
1199 Cand.IntvIdx = SE->openIntv(); in tryRegionSplit()
1201 << Cand.IntvIdx << ".\n"); in tryRegionSplit()