-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[mlir][omp] Improve canonloop/iv naming #159773
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
Merged
Merged
Changes from 11 commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
b391971
Improve canonloop/iv naming
Meinersbur a6e3426
Merge branch 'main' into users/meinersbur/mlir_loop-varnaming
Meinersbur ce66eec
Avoid compiler warning
Meinersbur 3a141d6
Add perfect-nest and rectangular loop nest tests
Meinersbur 375e948
Merge branch 'users/meinersbur/flang_loopnest-checks' into HEAD
Meinersbur 4934424
Fix symbol resolution
Meinersbur dd3f66d
Merge branch 'users/meinersbur/flang_loopnest-checks' into HEAD
Meinersbur b1c6e22
Handle IsolatedFromAbove individually
Meinersbur a2b0388
clarify function comment
Meinersbur 3564371
isOnlyOpInRegion -> isOnlyContainerOpInRegion
Meinersbur e410237
rework algorithm
Meinersbur fdc54a6
flatten if-else chain
Meinersbur 757117d
Move fir test to mlir openmp using scf.if
Meinersbur afd9edc
Merge branch 'main' into users/meinersbur/mlir_loop-varnaming
Meinersbur b2847e7
Avoid use of anon struct/union
Meinersbur File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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 hidden or 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,28 @@ | ||
// RUN: fir-opt %s | FileCheck %s --enable-var-scope | ||
// RUN: fir-opt %s | fir-opt | FileCheck %s --enable-var-scope | ||
|
||
// CHECK-LABEL: @omp_canonloop_multiregion( | ||
func.func @omp_canonloop_multiregion(%c : i1) -> () { | ||
%c42_i32 = arith.constant 42: i32 | ||
%canonloop1 = omp.new_cli | ||
%canonloop2 = omp.new_cli | ||
%canonloop3 = omp.new_cli | ||
fir.if %c { | ||
// CHECK: omp.canonical_loop(%canonloop_r0) %iv_r0 : i32 in range(%c42_i32) { | ||
omp.canonical_loop(%canonloop1) %iv1 : i32 in range(%c42_i32) { | ||
omp.terminator | ||
} | ||
} else { | ||
// CHECK: omp.canonical_loop(%canonloop_r1_s0) %iv_r1_s0 : i32 in range(%c42_i32) { | ||
omp.canonical_loop(%canonloop2) %iv2 : i32 in range(%c42_i32) { | ||
omp.terminator | ||
} | ||
// CHECK: omp.canonical_loop(%canonloop_r1_s1) %iv_r1_s1 : i32 in range(%c42_i32) { | ||
omp.canonical_loop(%canonloop3) %iv3 : i32 in range(%c42_i32) { | ||
omp.terminator | ||
} | ||
} | ||
|
||
// CHECK: fir.unreachable | ||
fir.unreachable | ||
} |
This file contains hidden or 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 hidden or 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 hidden or 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,73 @@ | ||
! RUN: %python %S/../test_errors.py %s %flang -fopenmp | ||
! Check for existence of loop following a DO directive | ||
|
||
subroutine do_imperfectly_nested_before | ||
integer i, j | ||
|
||
!ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. | ||
!$omp do collapse(2) | ||
do i = 1, 10 | ||
print *, i | ||
do j = 1, 10 | ||
print *, i, j | ||
end do | ||
end do | ||
!$omp end do | ||
end subroutine | ||
|
||
|
||
subroutine do_imperfectly_nested_behind | ||
integer i, j | ||
|
||
!ERROR: Canonical loop nest must be perfectly nested. | ||
!$omp do collapse(2) | ||
do i = 1, 10 | ||
do j = 1, 10 | ||
print *, i, j | ||
end do | ||
print *, i | ||
end do | ||
!$omp end do | ||
end subroutine | ||
|
||
|
||
subroutine do_nonrectangular_lb | ||
integer i, j | ||
|
||
!ERROR: Trip count must be computable and invariant | ||
!$omp do collapse(2) | ||
do i = 1, 10 | ||
do j = i, 10 | ||
print *, i, j | ||
end do | ||
end do | ||
!$omp end do | ||
end subroutine | ||
|
||
|
||
subroutine do_nonrectangular_ub | ||
integer i, j | ||
|
||
!ERROR: Trip count must be computable and invariant | ||
!$omp do collapse(2) | ||
do i = 1, 10 | ||
do j = 0, i | ||
print *, i, j | ||
end do | ||
end do | ||
!$omp end do | ||
end subroutine | ||
|
||
|
||
subroutine do_nonrectangular_step | ||
integer i, j | ||
|
||
!ERROR: Trip count must be computable and invariant | ||
!$omp do collapse(2) | ||
do i = 1, 10 | ||
do j = 1, 10, i | ||
print *, i, j | ||
end do | ||
end do | ||
!$omp end do | ||
end subroutine |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe this test belongs in the MLIR openmp dialect rather than in flang? It could be written with scf.if instead of fir.if etc.
In theory at least, the MLIR openmp dialect exists upstream of flang and could have other users.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am worried about the dependencies. With FIR we can assume that the omp dialect is available, there are other tests using the omp dialect already. The openmp dialect does not require scf, nor does scf require omp.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated using scf.if