Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:TBI

167   TraceBlockInfo *TBI = &BlockInfo[MBB->getNumber()];
172 if (!TBI->Pred) {
173 TBI->InstrDepth = 0;
174 TBI->Head = MBB->getNumber();
182 unsigned PredNum = TBI->Pred->getNumber();
185 const FixedBlockInfo *PredFBI = MTM.getResources(TBI->Pred);
186 TBI->InstrDepth = PredTBI->InstrDepth + PredFBI->InstrCount;
187 TBI->Head = PredTBI->Head;
200 TraceBlockInfo *TBI = &BlockInfo[MBB->getNumber()];
205 TBI->InstrHeight = MTM.getResources(MBB)->InstrCount;
209 if (!TBI->Succ) {
210 TBI->Tail = MBB->getNumber();
218 unsigned SuccNum = TBI->Succ->getNumber();
221 TBI->InstrHeight += SuccTBI->InstrHeight;
222 TBI->Tail = SuccTBI->Tail;
230 // Check if depth resources for MBB are valid and return the TBI.
235 const TraceBlockInfo *TBI = &BlockInfo[MBB->getNumber()];
236 return TBI->hasValidDepth() ? TBI : 0;
239 // Check if height resources for MBB are valid and return the TBI.
244 const TraceBlockInfo *TBI = &BlockInfo[MBB->getNumber()];
245 return TBI->hasValidHeight() ? TBI : 0;
439 MachineTraceMetrics::TraceBlockInfo &TBI = LB.Blocks[To->getNumber()];
440 if (LB.Downward ? TBI.hasValidHeight() : TBI.hasValidDepth())
474 TraceBlockInfo &TBI = BlockInfo[I->getNumber()];
476 TBI.Pred = pickTracePred(*I);
478 if (TBI.Pred)
479 dbgs() << "BB#" << TBI.Pred->getNumber() << '\n';
494 TraceBlockInfo &TBI = BlockInfo[I->getNumber()];
496 TBI.Succ = pickTraceSucc(*I);
498 if (TBI.Succ)
499 dbgs() << "BB#" << TBI.Succ->getNumber() << '\n';
526 TraceBlockInfo &TBI = BlockInfo[(*I)->getNumber()];
527 if (!TBI.hasValidHeight())
529 if (TBI.Succ == MBB) {
530 TBI.invalidateHeight();
534 // Verify that TBI.Succ is actually a *I successor.
535 assert((!TBI.Succ || (*I)->isSuccessor(TBI.Succ)) && "CFG changed");
552 TraceBlockInfo &TBI = BlockInfo[(*I)->getNumber()];
553 if (!TBI.hasValidDepth())
555 if (TBI.Pred == MBB) {
556 TBI.invalidateDepth();
560 // Verify that TBI.Pred is actually a *I predecessor.
561 assert((!TBI.Pred || (*I)->isPredecessor(TBI.Pred)) && "CFG changed");
581 const TraceBlockInfo &TBI = BlockInfo[Num];
582 if (TBI.hasValidDepth() && TBI.Pred) {
584 assert(MBB->isPredecessor(TBI.Pred) && "CFG doesn't match trace");
585 assert(BlockInfo[TBI.Pred->getNumber()].hasValidDepth() &&
590 if (TBI.hasValidHeight() && TBI.Succ) {
592 assert(MBB->isSuccessor(TBI.Succ) && "CFG doesn't match trace");
593 assert(BlockInfo[TBI.Succ->getNumber()].hasValidHeight() &&
596 const MachineLoop *SuccLoop = getLoopFor(TBI.Succ);
597 assert(!(Loop && Loop == SuccLoop && TBI.Succ == Loop->getHeader()) &&
762 computeCrossBlockCriticalPath(const TraceBlockInfo &TBI) {
763 assert(TBI.HasValidInstrDepths && "Missing depth info");
764 assert(TBI.HasValidInstrHeights && "Missing height info");
766 for (unsigned i = 0, e = TBI.LiveIns.size(); i != e; ++i) {
767 const LiveInReg &LIR = TBI.LiveIns[i];
773 if (!DefTBI.isUsefulDominator(TBI))
790 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
791 assert(TBI.hasValidDepth() && "Incomplete trace");
792 if (TBI.HasValidInstrDepths)
795 MBB = TBI.Pred;
810 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
811 TBI.HasValidInstrDepths = true;
812 TBI.CriticalPath = 0;
816 dbgs() << format("%7u Instructions\n", TBI.InstrDepth);
828 if (TBI.HasValidInstrHeights)
829 TBI.CriticalPath = computeCrossBlockCriticalPath(TBI);
838 getPHIDeps(UseMI, Deps, TBI.Pred, MTM.MRI);
849 if (!DepTBI.isUsefulDominator(TBI))
863 if (!TBI.HasValidInstrHeights) {
868 TBI.CriticalPath = std::max(TBI.CriticalPath, Cycle + MICycles.Height);
869 DEBUG(dbgs() << TBI.CriticalPath << '\t' << Cycle << '\t' << *UseMI);
973 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
975 TBI.LiveIns.push_back(Reg);
988 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
989 assert(TBI.hasValidHeight() && "Incomplete trace");
990 if (TBI.HasValidInstrHeights)
993 TBI.LiveIns.clear();
994 MBB = TBI.Succ;
1010 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
1011 for (unsigned i = 0, e = TBI.LiveIns.size(); i != e; ++i) {
1012 LiveInReg LI = TBI.LiveIns[i];
1031 TraceBlockInfo &TBI = BlockInfo[MBB->getNumber()];
1032 TBI.HasValidInstrHeights = true;
1033 TBI.CriticalPath = 0;
1036 dbgs() << format("%7u Instructions\n", TBI.InstrHeight);
1048 const MachineBasicBlock *Succ = TBI.Succ;
1065 unsigned Height = TBI.Succ ? Cycles.lookup(PHI).Height : 0;
1106 if (!TBI.HasValidInstrDepths) {
1111 TBI.CriticalPath = std::max(TBI.CriticalPath, Cycle + MICycles.Depth);
1112 DEBUG(dbgs() << TBI.CriticalPath << '\t' << Cycle << '\t' << *MI);
1118 for (unsigned i = 0, e = TBI.LiveIns.size(); i != e; ++i) {
1119 LiveInReg &LIR = TBI.LiveIns[i];
1128 TBI.LiveIns.push_back(LiveInReg(RI->RegUnit, RI->Cycle));
1134 if (!TBI.HasValidInstrDepths)
1137 TBI.CriticalPath = std::max(TBI.CriticalPath,
1138 computeCrossBlockCriticalPath(TBI));
1139 DEBUG(dbgs() << "Critical path: " << TBI.CriticalPath << '\n');
1192 unsigned Instrs = TBI.InstrDepth;
1230 unsigned Instrs = TBI.InstrDepth + TBI.InstrHeight;
1277 unsigned MBBNum = &TBI - &TE.BlockInfo[0];
1279 OS << TE.getName() << " trace BB#" << TBI.Head << " --> BB#" << MBBNum
1280 << " --> BB#" << TBI.Tail << ':';
1281 if (TBI.hasValidHeight() && TBI.hasValidDepth())
1283 if (TBI.HasValidInstrDepths && TBI.HasValidInstrHeights)
1284 TBI.CriticalPath << " cycles.";
1286 const MachineTraceMetrics::TraceBlockInfo *Block = &TBI;
1294 Block = &TBI;