Lines Matching refs:Cand
350 void growRegion(GlobalSplitCandidate &Cand);
1036 void RAGreedy::growRegion(GlobalSplitCandidate &Cand) {
1039 SmallVectorImpl<unsigned> &ActiveBlocks = Cand.ActiveBlocks;
1072 if (Cand.PhysReg)
1073 addThroughConstraints(Cand.Intf, NewBlocks);
1093 bool RAGreedy::calcCompactRegion(GlobalSplitCandidate &Cand) {
1099 Cand.reset(IntfCache, 0);
1105 SpillPlacer->prepare(Cand.LiveBundles);
1107 // The static split cost will be zero since Cand.Intf reports no interference.
1109 if (!addSplitConstraints(Cand.Intf, Cost)) {
1114 growRegion(Cand);
1117 if (!Cand.LiveBundles.any()) {
1123 for (int i = Cand.LiveBundles.find_first(); i>=0;
1124 i = Cand.LiveBundles.find_next(i))
1153 BlockFrequency RAGreedy::calcGlobalSplitCost(GlobalSplitCandidate &Cand) {
1155 const BitVector &LiveBundles = Cand.LiveBundles;
1172 for (unsigned i = 0, e = Cand.ActiveBlocks.size(); i != e; ++i) {
1173 unsigned Number = Cand.ActiveBlocks[i];
1180 Cand.Intf.moveToBlock(Number);
1181 if (Cand.Intf.hasInterference()) {
1229 GlobalSplitCandidate &Cand = GlobalCand[CandIn];
1230 IntvIn = Cand.IntvIdx;
1231 Cand.Intf.moveToBlock(Number);
1232 IntfIn = Cand.Intf.first();
1238 GlobalSplitCandidate &Cand = GlobalCand[CandOut];
1239 IntvOut = Cand.IntvIdx;
1240 Cand.Intf.moveToBlock(Number);
1241 IntfOut = Cand.Intf.last();
1278 GlobalSplitCandidate &Cand = GlobalCand[CandIn];
1279 IntvIn = Cand.IntvIdx;
1280 Cand.Intf.moveToBlock(Number);
1281 IntfIn = Cand.Intf.first();
1286 GlobalSplitCandidate &Cand = GlobalCand[CandOut];
1287 IntvOut = Cand.IntvIdx;
1288 Cand.Intf.moveToBlock(Number);
1289 IntfOut = Cand.Intf.last();
1308 // - Candidate intervals can be assigned to Cand.PhysReg.
1406 GlobalSplitCandidate &Cand = GlobalCand[NumCands];
1407 Cand.reset(IntfCache, PhysReg);
1409 SpillPlacer->prepare(Cand.LiveBundles);
1411 if (!addSplitConstraints(Cand.Intf, Cost)) {
1427 growRegion(Cand);
1432 if (!Cand.LiveBundles.any()) {
1437 Cost += calcGlobalSplitCost(Cand);
1441 for (int i = Cand.LiveBundles.find_first(); i>=0;
1442 i = Cand.LiveBundles.find_next(i))
1468 GlobalSplitCandidate &Cand = GlobalCand[BestCand];
1469 if (unsigned B = Cand.getBundles(BundleCand, BestCand)) {
1471 Cand.IntvIdx = SE->openIntv();
1472 DEBUG(dbgs() << "Split for " << PrintReg(Cand.PhysReg, TRI) << " in "
1473 << B << " bundles, intv " << Cand.IntvIdx << ".\n");
1480 GlobalSplitCandidate &Cand = GlobalCand.front();
1481 assert(!Cand.PhysReg && "Compact region has no physreg");
1482 if (unsigned B = Cand.getBundles(BundleCand, 0)) {
1484 Cand.IntvIdx = SE->openIntv();
1486 << Cand.IntvIdx << ".\n");