-
Notifications
You must be signed in to change notification settings - Fork 14.5k
[LoopInterchange] Ignore the cost-model, force interchange if legal #148858
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
db9c37e
fe979ea
5bb2158
1e8e667
6a3b3f0
82a3043
58a6efb
057d32b
b5bc6d1
1736f1f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
; RUN: opt < %s -passes=loop-interchange -pass-remarks-output=%t -disable-output -loop-interchange-profitabilities=ignore -S | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Could you please add this? It's fine to do it in another PR. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, thanks, I will commit this and look at that suggestion early next week. |
||
; RUN: FileCheck --input-file=%t %s | ||
|
||
; There should be no reason to interchange this, unless it is forced. | ||
; | ||
; for (int i = 0; i<1024; i++) | ||
; for (int j = 0; j<1024; j++) | ||
; A[i][j] = 42; | ||
; | ||
; CHECK: --- !Passed | ||
; CHECK-NEXT: Pass: loop-interchange | ||
; CHECK-NEXT: Name: Interchanged | ||
; CHECK-NEXT: Function: f | ||
; CHECK-NEXT: Args: | ||
; CHECK-NEXT: - String: Loop interchanged with enclosing loop. | ||
; CHECK-NEXT: ... | ||
|
||
@A = dso_local local_unnamed_addr global [1024 x [1024 x i32]] zeroinitializer, align 4 | ||
|
||
define dso_local void @f() local_unnamed_addr #0 { | ||
entry: | ||
br label %outer.header | ||
|
||
outer.header: | ||
%i = phi i64 [ 0, %entry ], [ %i.next, %inner.header ] | ||
br label %inner.body | ||
|
||
inner.header: | ||
%i.next = add nuw nsw i64 %i, 1 | ||
%exitcond20.not = icmp eq i64 %i.next, 1024 | ||
br i1 %exitcond20.not, label %exit, label %outer.header | ||
|
||
inner.body: | ||
%j = phi i64 [ 0, %outer.header ], [ %j.next, %inner.body ] | ||
%arrayidx6 = getelementptr inbounds nuw [1024 x [1024 x i32]], ptr @A, i64 0, i64 %i, i64 %j | ||
store i32 42, ptr %arrayidx6, align 4 | ||
%j.next = add nuw nsw i64 %j, 1 | ||
%exitcond.not = icmp eq i64 %j.next, 1024 | ||
br i1 %exitcond.not, label %inner.header, label %inner.body | ||
|
||
exit: | ||
ret void | ||
} |
Uh oh!
There was an error while loading. Please reload this page.