• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/CodeGen/

Lines Matching refs:BI

228     BlockInfo BI;
229 BI.MBB = &*MFI;
231 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
238 ThroughBlocks.set(BI.MBB->getNumber());
245 BI.FirstInstr = *UseI;
246 assert(BI.FirstInstr >= Start);
249 BI.LastInstr = UseI[-1];
250 assert(BI.LastInstr < Stop);
253 BI.LiveIn = LVI->start <= Start;
256 if (!BI.LiveIn) {
258 assert(LVI->start == BI.FirstInstr && "First instr should be a def");
259 BI.FirstDef = BI.FirstInstr;
263 BI.LiveOut = true;
267 BI.LiveOut = false;
268 BI.LastInstr = LastStop;
278 BI.LiveOut = false;
279 UseBlocks.push_back(BI);
282 // Set up BI for the live-out part.
283 BI.LiveIn = false;
284 BI.LiveOut = true;
285 BI.FirstInstr = BI.FirstDef = LVI->start;
290 if (!BI.FirstDef)
291 BI.FirstDef = LVI->start;
294 UseBlocks.push_back(BI);
1556 bool SplitAnalysis::shouldSplitSingleBlock(const BlockInfo &BI,
1559 if (!BI.isOneInstr())
1565 if (BI.LiveIn && BI.LiveOut)
1568 if (LIS.getInstructionFromIndex(BI.FirstInstr)->isCopyLike())
1571 return isOriginalEndpoint(BI.FirstInstr);
1574 void SplitEditor::splitSingleBlock(const SplitAnalysis::BlockInfo &BI) {
1576 SlotIndex LastSplitPoint = SA.getLastSplitPoint(BI.MBB->getNumber());
1577 SlotIndex SegStart = enterIntvBefore(std::min(BI.FirstInstr,
1579 if (!BI.LiveOut || BI.LastInstr < LastSplitPoint) {
1580 useIntv(SegStart, leaveIntvAfter(BI.LastInstr));
1585 overlapIntv(SegStop, BI.LastInstr);
1703 void SplitEditor::splitRegInBlock(const SplitAnalysis::BlockInfo &BI,
1706 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1708 LLVM_DEBUG(dbgs() << printMBBReference(*BI.MBB) << " [" << Start << ';'
1709 << Stop << "), uses " << BI.FirstInstr << '-'
1710 << BI.LastInstr << ", reg-in " << IntvIn
1712 << (BI.LiveOut ? ", stack-out" : ", killed in block"));
1715 assert(BI.LiveIn && "Must be live-in");
1718 if (!BI.LiveOut && (!LeaveBefore || LeaveBefore >= BI.LastInstr)) {
1726 useIntv(Start, BI.LastInstr);
1730 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());
1732 if (!LeaveBefore || LeaveBefore > BI.LastInstr.getBoundaryIndex()) {
1743 if (BI.LastInstr < LSP) {
1746 SlotIndex Idx = leaveIntvAfter(BI.LastInstr);
1753 overlapIntv(Idx, BI.LastInstr);
1767 if (!BI.LiveOut || BI.LastInstr < LSP) {
1773 SlotIndex To = leaveIntvAfter(BI.LastInstr);
1788 overlapIntv(To, BI.LastInstr);
1796 void SplitEditor::splitRegOutBlock(const SplitAnalysis::BlockInfo &BI,
1799 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1801 LLVM_DEBUG(dbgs() << printMBBReference(*BI.MBB) << " [" << Start << ';'
1802 << Stop << "), uses " << BI.FirstInstr << '-'
1803 << BI.LastInstr << ", reg-out " << IntvOut
1805 << (BI.LiveIn ? ", stack-in" : ", defined in block"));
1807 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());
1810 assert(BI.LiveOut && "Must be live-out");
1813 if (!BI.LiveIn && (!EnterAfter || EnterAfter <= BI.FirstInstr)) {
1821 useIntv(BI.FirstInstr, Stop);
1825 if (!EnterAfter || EnterAfter < BI.FirstInstr.getBaseIndex()) {
1833 SlotIndex Idx = enterIntvBefore(std::min(LSP, BI.FirstInstr));
1854 SlotIndex From = enterIntvBefore(std::min(Idx, BI.FirstInstr));