[PATCH] D143359: [mlgo][regalloc] Handle training case when no regalloc happens.
Mircea Trofin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 6 13:57:31 PST 2023
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG1b80ccba0f9b: [mlgo][regalloc] Handle training case when no regalloc happens. (authored by mtrofin).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143359/new/
https://reviews.llvm.org/D143359
Files:
llvm/include/llvm/Analysis/Utils/TrainingLogger.h
llvm/lib/CodeGen/MLRegallocEvictAdvisor.cpp
llvm/lib/CodeGen/MLRegallocPriorityAdvisor.cpp
llvm/test/CodeGen/MLRegalloc/empty-log.ll
Index: llvm/test/CodeGen/MLRegalloc/empty-log.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/MLRegalloc/empty-log.ll
@@ -0,0 +1,33 @@
+; REQUIRES: have_tflite
+; REQUIRES: x86_64-linux
+;
+; Check that we can log more than 1 function.
+;
+; RUN: llc -mtriple=x86_64-linux-unknown -regalloc=greedy -regalloc-enable-advisor=development \
+; RUN: -regalloc-training-log=%t1 < %s
+; RUN: FileCheck --input-file %t1 %s
+
+; RUN: llc -mtriple=x86_64-linux-unknown -regalloc=greedy -regalloc-enable-priority-advisor=development \
+; RUN: -regalloc-priority-training-log=%t2 < %s
+; RUN: FileCheck --input-file %t2 %s
+
+declare void @f();
+
+define void @f1(i64 %lhs, i64 %rhs, i64* %addr) {
+ ret void
+}
+
+define void @f2(i64 %lhs, i64 %rhs, i64* %addr) {
+ %sum = add i64 %lhs, %rhs
+ call void @f();
+ store i64 %sum, i64* %addr
+ ret void
+}
+
+define void @f3(i64 %lhs, i64 %rhs, i64* %addr) {
+ ret void
+}
+
+; CHECK-NOT: {"context":"f1"}
+; CHECK: {"context":"f2"}
+; CHECK-NOT: {"context":"f3"}
Index: llvm/lib/CodeGen/MLRegallocPriorityAdvisor.cpp
===================================================================
--- llvm/lib/CodeGen/MLRegallocPriorityAdvisor.cpp
+++ llvm/lib/CodeGen/MLRegallocPriorityAdvisor.cpp
@@ -197,7 +197,7 @@
void logRewardIfNeeded(const MachineFunction &MF,
llvm::function_ref<float()> GetReward) override {
- if (!Log)
+ if (!Log || !Log->hasAnyObservationForContext(MF.getName()))
return;
// The function pass manager would run all the function passes for a
// function, so we assume the last context belongs to this function. If
Index: llvm/lib/CodeGen/MLRegallocEvictAdvisor.cpp
===================================================================
--- llvm/lib/CodeGen/MLRegallocEvictAdvisor.cpp
+++ llvm/lib/CodeGen/MLRegallocEvictAdvisor.cpp
@@ -474,7 +474,7 @@
void logRewardIfNeeded(const MachineFunction &MF,
llvm::function_ref<float()> GetReward) override {
- if (!Log)
+ if (!Log || !Log->hasAnyObservationForContext(MF.getName()))
return;
// The function pass manager would run all the function passes for a
// function, so we assume the last context belongs to this function. If
Index: llvm/include/llvm/Analysis/Utils/TrainingLogger.h
===================================================================
--- llvm/include/llvm/Analysis/Utils/TrainingLogger.h
+++ llvm/include/llvm/Analysis/Utils/TrainingLogger.h
@@ -121,8 +121,14 @@
const std::string ¤tContext() const { return CurrentContext; }
+ /// Check if there is at least an observation for `currentContext()`.
bool hasObservationInProgress() const {
- return ObservationIDs.find(CurrentContext) != ObservationIDs.end();
+ return hasAnyObservationForContext(CurrentContext);
+ }
+
+ /// Check if there is at least an observation for the context `Ctx`.
+ bool hasAnyObservationForContext(StringRef Ctx) const {
+ return ObservationIDs.find(Ctx) != ObservationIDs.end();
}
template <typename T> void logReward(T Value) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143359.495269.patch
Type: text/x-patch
Size: 3145 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230206/a40d543c/attachment.bin>
More information about the llvm-commits
mailing list