Lines Matching refs:Cand
271 void growRegion(GlobalSplitCandidate &Cand);
787 void RAGreedy::growRegion(GlobalSplitCandidate &Cand) {
790 SmallVectorImpl<unsigned> &ActiveBlocks = Cand.ActiveBlocks;
823 if (Cand.PhysReg)
824 addThroughConstraints(Cand.Intf, NewBlocks);
844 bool RAGreedy::calcCompactRegion(GlobalSplitCandidate &Cand) {
850 Cand.reset(IntfCache, 0);
856 SpillPlacer->prepare(Cand.LiveBundles);
858 // The static split cost will be zero since Cand.Intf reports no interference.
860 if (!addSplitConstraints(Cand.Intf, Cost)) {
865 growRegion(Cand);
868 if (!Cand.LiveBundles.any()) {
874 for (int i = Cand.LiveBundles.find_first(); i>=0;
875 i = Cand.LiveBundles.find_next(i))
904 float RAGreedy::calcGlobalSplitCost(GlobalSplitCandidate &Cand) {
906 const BitVector &LiveBundles = Cand.LiveBundles;
923 for (unsigned i = 0, e = Cand.ActiveBlocks.size(); i != e; ++i) {
924 unsigned Number = Cand.ActiveBlocks[i];
931 Cand.Intf.moveToBlock(Number);
932 if (Cand.Intf.hasInterference())
978 GlobalSplitCandidate &Cand = GlobalCand[CandIn];
979 IntvIn = Cand.IntvIdx;
980 Cand.Intf.moveToBlock(Number);
981 IntfIn = Cand.Intf.first();
987 GlobalSplitCandidate &Cand = GlobalCand[CandOut];
988 IntvOut = Cand.IntvIdx;
989 Cand.Intf.moveToBlock(Number);
990 IntfOut = Cand.Intf.last();
1027 GlobalSplitCandidate &Cand = GlobalCand[CandIn];
1028 IntvIn = Cand.IntvIdx;
1029 Cand.Intf.moveToBlock(Number);
1030 IntfIn = Cand.Intf.first();
1035 GlobalSplitCandidate &Cand = GlobalCand[CandOut];
1036 IntvOut = Cand.IntvIdx;
1037 Cand.Intf.moveToBlock(Number);
1038 IntfOut = Cand.Intf.last();
1057 // - Candidate intervals can be assigned to Cand.PhysReg.
1136 GlobalSplitCandidate &Cand = GlobalCand[NumCands];
1137 Cand.reset(IntfCache, PhysReg);
1139 SpillPlacer->prepare(Cand.LiveBundles);
1141 if (!addSplitConstraints(Cand.Intf, Cost)) {
1156 growRegion(Cand);
1161 if (!Cand.LiveBundles.any()) {
1166 Cost += calcGlobalSplitCost(Cand);
1169 for (int i = Cand.LiveBundles.find_first(); i>=0;
1170 i = Cand.LiveBundles.find_next(i))
1194 GlobalSplitCandidate &Cand = GlobalCand[BestCand];
1195 if (unsigned B = Cand.getBundles(BundleCand, BestCand)) {
1197 Cand.IntvIdx = SE->openIntv();
1198 DEBUG(dbgs() << "Split for " << PrintReg(Cand.PhysReg, TRI) << " in "
1199 << B << " bundles, intv " << Cand.IntvIdx << ".\n");
1206 GlobalSplitCandidate &Cand = GlobalCand.front();
1207 assert(!Cand.PhysReg && "Compact region has no physreg");
1208 if (unsigned B = Cand.getBundles(BundleCand, 0)) {
1210 Cand.IntvIdx = SE->openIntv();
1212 << Cand.IntvIdx << ".\n");