[llvm] [llvm][CodeGen] Address the issue of multiple resource reservations in window scheduling (PR #100301)

Kai Yan via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 23 22:05:42 PDT 2024


https://github.com/kaiyan96 created https://github.com/llvm/llvm-project/pull/100301

We identified an issue with multiple resource reservations in window scheduling:
* This was overlooked in  [#99454](https://github.com/llvm/llvm-project/pull/99454/commits) when the PR was separated from [#99429](https://github.com/llvm/llvm-project/pull/99429).
* This issue does not affect the initiation interval calculation, as reserveResources will fail to reserve a resource that has already been reserved.
* The problem is difficult to describe at the IR level, making it challenging to create a corresponding test case.

>From d9980336e7ce224f61e4eee651652e58f2a4a4d7 Mon Sep 17 00:00:00 2001
From: aklkaiyan <aklkaiyan at tencent.com>
Date: Wed, 24 Jul 2024 12:49:32 +0800
Subject: [PATCH] [llvm][CodeGen] Address the issue of multiple resource
 reservations in window scheduling

---
 llvm/lib/CodeGen/WindowScheduler.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/lib/CodeGen/WindowScheduler.cpp b/llvm/lib/CodeGen/WindowScheduler.cpp
index cb878f7425481..c42c81b045807 100644
--- a/llvm/lib/CodeGen/WindowScheduler.cpp
+++ b/llvm/lib/CodeGen/WindowScheduler.cpp
@@ -451,7 +451,6 @@ int WindowScheduler::calculateMaxCycle(ScheduleDAGInstrs &DAG,
       }
       RM.reserveResources(*SU, CurCycle);
     }
-    RM.reserveResources(*SU, CurCycle);
     OriToCycle[getOriMI(&MI)] = CurCycle;
     LLVM_DEBUG(dbgs() << "\tCycle " << CurCycle << " [S."
                       << getOriStage(getOriMI(&MI), Offset) << "]: " << MI);



More information about the llvm-commits mailing list