@@ -447,11 +447,7 @@ void GCNIterativeScheduler::sortRegionsByPressure(unsigned TargetOcc) {
447447// BestSchedules aren't deleted on fail.
448448unsigned GCNIterativeScheduler::tryMaximizeOccupancy (unsigned TargetOcc) {
449449 // TODO: assert Regions are sorted descending by pressure
450- const auto &ST = MF.getSubtarget <GCNSubtarget>();
451- const unsigned DynamicVGPRBlockSize =
452- MF.getInfo <SIMachineFunctionInfo>()->getDynamicVGPRBlockSize ();
453- const auto Occ =
454- Regions.front ()->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize, MF);
450+ const auto Occ = Regions.front ()->MaxPressure .getOccupancy (MF);
455451 LLVM_DEBUG (dbgs () << " Trying to improve occupancy, target = " << TargetOcc
456452 << " , current = " << Occ << ' \n ' );
457453
@@ -460,7 +456,7 @@ unsigned GCNIterativeScheduler::tryMaximizeOccupancy(unsigned TargetOcc) {
460456 // Always build the DAG to add mutations
461457 BuildDAG DAG (*R, *this );
462458
463- if (R->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize, MF) >= NewOcc)
459+ if (R->MaxPressure .getOccupancy (MF) >= NewOcc)
464460 continue ;
465461
466462 LLVM_DEBUG (printRegion (dbgs (), R->Begin , R->End , LIS, 3 );
@@ -471,7 +467,7 @@ unsigned GCNIterativeScheduler::tryMaximizeOccupancy(unsigned TargetOcc) {
471467 LLVM_DEBUG (dbgs () << " Occupancy improvement attempt:\n " ;
472468 printSchedRP (dbgs (), R->MaxPressure , MaxRP));
473469
474- NewOcc = std::min (NewOcc, MaxRP.getOccupancy (ST, DynamicVGPRBlockSize, MF));
470+ NewOcc = std::min (NewOcc, MaxRP.getOccupancy (MF));
475471 if (NewOcc <= Occ)
476472 break ;
477473
@@ -489,14 +485,11 @@ unsigned GCNIterativeScheduler::tryMaximizeOccupancy(unsigned TargetOcc) {
489485
490486void GCNIterativeScheduler::scheduleLegacyMaxOccupancy (
491487 bool TryMaximizeOccupancy) {
492- const auto &ST = MF.getSubtarget <GCNSubtarget>();
493488 SIMachineFunctionInfo *MFI = MF.getInfo <SIMachineFunctionInfo>();
494489 auto TgtOcc = MFI->getMinAllowedOccupancy ();
495- unsigned DynamicVGPRBlockSize = MFI->getDynamicVGPRBlockSize ();
496490
497491 sortRegionsByPressure (TgtOcc);
498- auto Occ =
499- Regions.front ()->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize, MF);
492+ auto Occ = Regions.front ()->MaxPressure .getOccupancy (MF);
500493
501494 bool IsReentry = false ;
502495 if (TryMaximizeOccupancy && Occ < TgtOcc) {
@@ -527,22 +520,19 @@ void GCNIterativeScheduler::scheduleLegacyMaxOccupancy(
527520 const auto RP = getRegionPressure (*R);
528521 LLVM_DEBUG (printSchedRP (dbgs (), R->MaxPressure , RP));
529522
530- if (RP.getOccupancy (ST, DynamicVGPRBlockSize, MF) < TgtOcc) {
523+ if (RP.getOccupancy (MF) < TgtOcc) {
531524 LLVM_DEBUG (dbgs () << " Didn't fit into target occupancy O" << TgtOcc);
532525 if (R->BestSchedule .get () &&
533- R->BestSchedule ->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize,
534- MF) >= TgtOcc) {
526+ R->BestSchedule ->MaxPressure .getOccupancy (MF) >= TgtOcc) {
535527 LLVM_DEBUG (dbgs () << " , scheduling minimal register\n " );
536528 scheduleBest (*R);
537529 } else {
538530 LLVM_DEBUG (dbgs () << " , restoring\n " );
539531 Ovr.restoreOrder ();
540- assert (R->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize, MF) >=
541- TgtOcc);
532+ assert (R->MaxPressure .getOccupancy (MF) >= TgtOcc);
542533 }
543534 }
544- FinalOccupancy = std::min (FinalOccupancy,
545- RP.getOccupancy (ST, DynamicVGPRBlockSize, MF));
535+ FinalOccupancy = std::min (FinalOccupancy, RP.getOccupancy (MF));
546536 }
547537 }
548538 MFI->limitOccupancy (FinalOccupancy);
@@ -585,14 +575,11 @@ void GCNIterativeScheduler::scheduleMinReg(bool force) {
585575
586576void GCNIterativeScheduler::scheduleILP (
587577 bool TryMaximizeOccupancy) {
588- const auto &ST = MF.getSubtarget <GCNSubtarget>();
589578 SIMachineFunctionInfo *MFI = MF.getInfo <SIMachineFunctionInfo>();
590579 auto TgtOcc = MFI->getMinAllowedOccupancy ();
591- unsigned DynamicVGPRBlockSize = MFI->getDynamicVGPRBlockSize ();
592580
593581 sortRegionsByPressure (TgtOcc);
594- auto Occ =
595- Regions.front ()->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize, MF);
582+ auto Occ = Regions.front ()->MaxPressure .getOccupancy (MF);
596583
597584 bool IsReentry = false ;
598585 if (TryMaximizeOccupancy && Occ < TgtOcc) {
@@ -613,19 +600,17 @@ void GCNIterativeScheduler::scheduleILP(
613600 const auto RP = getSchedulePressure (*R, ILPSchedule);
614601 LLVM_DEBUG (printSchedRP (dbgs (), R->MaxPressure , RP));
615602
616- if (RP.getOccupancy (ST, DynamicVGPRBlockSize, MF) < TgtOcc) {
603+ if (RP.getOccupancy (MF) < TgtOcc) {
617604 LLVM_DEBUG (dbgs () << " Didn't fit into target occupancy O" << TgtOcc);
618605 if (R->BestSchedule .get () &&
619- R->BestSchedule ->MaxPressure .getOccupancy (ST, DynamicVGPRBlockSize,
620- MF) >= TgtOcc) {
606+ R->BestSchedule ->MaxPressure .getOccupancy (MF) >= TgtOcc) {
621607 LLVM_DEBUG (dbgs () << " , scheduling minimal register\n " );
622608 scheduleBest (*R);
623609 }
624610 } else {
625611 scheduleRegion (*R, ILPSchedule, RP);
626612 LLVM_DEBUG (printSchedResult (dbgs (), R, RP));
627- FinalOccupancy = std::min (FinalOccupancy,
628- RP.getOccupancy (ST, DynamicVGPRBlockSize, MF));
613+ FinalOccupancy = std::min (FinalOccupancy, RP.getOccupancy (MF));
629614 }
630615 }
631616 MFI->limitOccupancy (FinalOccupancy);
0 commit comments