-
Notifications
You must be signed in to change notification settings - Fork 12.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Flang][OpenMP]Add parsing support for DISPATCH construct (#121982)
This allows the Flang parser to accept the !$OMP DISPATCH and related clauses. Lowering is currently not implemented. Tests for unparse and parse-tree dump is provided, and one for checking that the lowering ends in a "not yet implemented" --------- Co-authored-by: Kiran Chandramohan <[email protected]>
- Loading branch information
1 parent
850852e
commit 8035d38
Showing
11 changed files
with
192 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
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
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,12 @@ | ||
! RUN: %not_todo_cmd %flang_fc1 -emit-fir -fopenmp -fopenmp-version=51 -o - %s 2>&1 | FileCheck %s | ||
|
||
! CHECK: not yet implemented: OpenMPDispatchConstruct | ||
program p | ||
integer r | ||
r = 1 | ||
!$omp dispatch nowait | ||
call foo() | ||
contains | ||
subroutine foo | ||
end subroutine | ||
end program p |
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,51 @@ | ||
! RUN: %flang_fc1 -fopenmp -fdebug-dump-parse-tree %s | FileCheck %s | ||
! RUN: %flang_fc1 -fopenmp -fdebug-unparse %s | FileCheck %s --check-prefix="UNPARSE" | ||
|
||
integer function func(a, b, c) | ||
integer :: a, b, c | ||
func = a + b + c | ||
end function func | ||
|
||
subroutine sub(x) | ||
use iso_c_binding | ||
integer :: func | ||
integer :: r | ||
type(c_ptr) :: x | ||
integer :: a = 14, b = 7, c = 21 | ||
!UNPARSE: !$OMP DISPATCH DEVICE(3_4) NOWAIT NOCONTEXT(.false._4) NOVARIANTS(.true._4) | ||
!CHECK: | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPDispatchConstruct | ||
!CHECK-NEXT: | | | OmpDispatchDirective | ||
!CHECK: | | | | OmpClauseList -> OmpClause -> Device -> OmpDeviceClause | ||
!CHECK-NEXT: | | | | | Scalar -> Integer -> Expr = '3_4' | ||
!CHECK-NEXT: | | | | | | LiteralConstant -> IntLiteralConstant = '3' | ||
!CHECK-NEXT: | | | | OmpClause -> Nowait | ||
!CHECK-NEXT: | | | | OmpClause -> Nocontext -> Scalar -> Logical -> Expr = '.false._4' | ||
!CHECK-NEXT: | | | | | LiteralConstant -> LogicalLiteralConstant | ||
!CHECK-NEXT: | | | | | | bool = 'false' | ||
!CHECK-NEXT: | | | | OmpClause -> Novariants -> Scalar -> Logical -> Expr = '.true._4' | ||
!CHECK-NEXT: | | | | | EQ | ||
!CHECK-NEXT: | | | | | | Expr = '1_4' | ||
!CHECK-NEXT: | | | | | | | LiteralConstant -> IntLiteralConstant = '1' | ||
!CHECK-NEXT: | | | | | | Expr = '1_4' | ||
!CHECK-NEXT: | | | | | | | LiteralConstant -> IntLiteralConstant = '1' | ||
!CHECK-NEXT: | | | Block | ||
|
||
!$omp dispatch device(3) nowait nocontext(.false.) novariants(1.eq.1) | ||
r = func(a, b, c) | ||
!UNPARSE: !$OMP END DISPATCH | ||
!CHECK: | | | OmpEndDispatchDirective | ||
!$omp end dispatch | ||
|
||
!! Test the "no end dispatch" option. | ||
!UNPARSE: !$OMP DISPATCH DEVICE(3_4) IS_DEVICE_PTR(x) | ||
!CHECK: | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPDispatchConstruct | ||
!CHECK-NEXT: | | | OmpDispatchDirective | ||
!CHECK: | | | | OmpClause -> IsDevicePtr -> OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x' | ||
!$omp dispatch device(3) is_device_ptr(x) | ||
r = func(a+1, b+2, c+3) | ||
!CHECK-NOT: | | | OmpEndDispatchDirective | ||
|
||
end subroutine sub | ||
|
||
|
||
|
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,24 @@ | ||
! RUN: %python %S/../test_errors.py %s %flang -fopenmp | ||
|
||
subroutine sb1 | ||
integer :: r | ||
r = 1 | ||
!ERROR: The DISPATCH construct does not contain a SUBROUTINE or FUNCTION | ||
!$omp dispatch nowait | ||
print *,r | ||
end subroutine | ||
subroutine sb2 | ||
integer :: r | ||
!ERROR: The DISPATCH construct is empty or contains more than one statement | ||
!$omp dispatch | ||
call foo() | ||
r = bar() | ||
!$omp end dispatch | ||
contains | ||
subroutine foo | ||
end subroutine foo | ||
function bar | ||
integer :: bar | ||
bar = 2 | ||
end function | ||
end subroutine |