[llvm] [AMDGPU] Support bottom-up postRA scheduing. (PR #135295)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 17 05:16:39 PDT 2025
================
@@ -423,7 +450,41 @@ void GCNHazardRecognizer::AdvanceCycle() {
}
void GCNHazardRecognizer::RecedeCycle() {
- llvm_unreachable("hazard recognizer does not support bottom-up scheduling.");
+ // If no instruction was issued this cycle, pop the oldest placeholder.
+ if (!CurrCycleInstr) {
+ if (!EmittedInstrs.empty())
+ EmittedInstrs.pop_back();
+ return;
+ }
+
+ // If this is a bundle header, handle the entire bundle here.
+ if (CurrCycleInstr->isBundle()) {
+ processBundleBottomUp();
+ return;
+ }
+
+ unsigned NumWaitStates = TII.getNumWaitStates(*CurrCycleInstr);
+ if (!NumWaitStates) {
+ CurrCycleInstr = nullptr;
+ return;
+ }
+
+ // Add current instruction to the emitted list.
+ EmittedInstrs.push_back(CurrCycleInstr);
+
+ // Model remaining wait states by removing older placeholders.
+ for (unsigned I = 1, E = std::min(NumWaitStates, getMaxLookAhead()); I < E;
+ ++I) {
+ if (!EmittedInstrs.empty())
+ EmittedInstrs.pop_back();
+ }
----------------
arsenm wrote:
Probably needs more tests stressing the maximum lookahead
https://github.com/llvm/llvm-project/pull/135295
More information about the llvm-commits
mailing list