Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[mlgo][regalloc] Handle training case when no regalloc happens.
There's an early-exit case for regalloc when we don't even get a chance to ask for an advisor (priority or eviction), and switch the context. Then, when we want to log the reward for that function (==the one with the early exit case), we hit the error case where the function's name doesn't match the last-seen context. There are a few possible fixes, one would be to just switch context when output-ing the reward, which would be correct. This patch opts for the alternative where we check any loging happened in the first place - just to re-validate that no function would have been regaloc-ed without first log-ing its reward. Differential Revision: https://reviews.llvm.org/D143359
- Loading branch information
Showing
4 changed files
with
42 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"} |