1*f87737f3SKrzysztof Parzyszek!RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=45 %s | FileCheck --ignore-case --check-prefix="UNPARSE" %s 2*f87737f3SKrzysztof Parzyszek!RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=45 %s | FileCheck --check-prefix="PARSE-TREE" %s 3*f87737f3SKrzysztof Parzyszek 4*f87737f3SKrzysztof Parzyszeksubroutine f00(x) 5*f87737f3SKrzysztof Parzyszek integer :: x(10, 10) 6*f87737f3SKrzysztof Parzyszek !$omp do ordered(2) 7*f87737f3SKrzysztof Parzyszek do i = 1, 10 8*f87737f3SKrzysztof Parzyszek do j = 1, 10 9*f87737f3SKrzysztof Parzyszek !$omp ordered depend(source) 10*f87737f3SKrzysztof Parzyszek x(i, j) = i + j 11*f87737f3SKrzysztof Parzyszek enddo 12*f87737f3SKrzysztof Parzyszek enddo 13*f87737f3SKrzysztof Parzyszek !$omp end do 14*f87737f3SKrzysztof Parzyszekend 15*f87737f3SKrzysztof Parzyszek 16*f87737f3SKrzysztof Parzyszek!UNPARSE: SUBROUTINE f00 (x) 17*f87737f3SKrzysztof Parzyszek!UNPARSE: INTEGER x(10_4,10_4) 18*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP DO ORDERED(2_4) 19*f87737f3SKrzysztof Parzyszek!UNPARSE: DO i=1_4,10_4 20*f87737f3SKrzysztof Parzyszek!UNPARSE: DO j=1_4,10_4 21*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP ORDERED DEPEND(SOURCE) 22*f87737f3SKrzysztof Parzyszek!UNPARSE: x(int(i,kind=8),int(j,kind=8))=i+j 23*f87737f3SKrzysztof Parzyszek!UNPARSE: END DO 24*f87737f3SKrzysztof Parzyszek!UNPARSE: END DO 25*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP END DO 26*f87737f3SKrzysztof Parzyszek!UNPARSE: END SUBROUTINE 27*f87737f3SKrzysztof Parzyszek 28*f87737f3SKrzysztof Parzyszek!PARSE-TREE-LABEL: ProgramUnit -> SubroutineSubprogram 29*f87737f3SKrzysztof Parzyszek!PARSE-TREE: OmpBeginLoopDirective 30*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpLoopDirective -> llvm::omp::Directive = do 31*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpClauseList -> OmpClause -> Ordered -> Scalar -> Integer -> Constant -> Expr = '2_4' 32*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | LiteralConstant -> IntLiteralConstant = '2' 33*f87737f3SKrzysztof Parzyszek![...] 34*f87737f3SKrzysztof Parzyszek!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPSimpleStandaloneConstruct 35*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpSimpleStandaloneDirective -> llvm::omp::Directive = ordered 36*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpClauseList -> OmpClause -> Depend -> OmpDependClause -> OmpDoacross -> Source 37*f87737f3SKrzysztof Parzyszek 38*f87737f3SKrzysztof Parzyszeksubroutine f01(x) 39*f87737f3SKrzysztof Parzyszek integer :: x(10, 10) 40*f87737f3SKrzysztof Parzyszek !$omp do ordered(2) 41*f87737f3SKrzysztof Parzyszek do i = 1, 10 42*f87737f3SKrzysztof Parzyszek do j = 1, 10 43*f87737f3SKrzysztof Parzyszek !$omp ordered depend(sink: i+1, j-2), depend(sink: i, j+3) 44*f87737f3SKrzysztof Parzyszek x(i, j) = i + j 45*f87737f3SKrzysztof Parzyszek enddo 46*f87737f3SKrzysztof Parzyszek enddo 47*f87737f3SKrzysztof Parzyszek !$omp end do 48*f87737f3SKrzysztof Parzyszekend 49*f87737f3SKrzysztof Parzyszek 50*f87737f3SKrzysztof Parzyszek!UNPARSE: SUBROUTINE f01 (x) 51*f87737f3SKrzysztof Parzyszek!UNPARSE: INTEGER x(10_4,10_4) 52*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP DO ORDERED(2_4) 53*f87737f3SKrzysztof Parzyszek!UNPARSE: DO i=1_4,10_4 54*f87737f3SKrzysztof Parzyszek!UNPARSE: DO j=1_4,10_4 55*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP ORDERED DEPEND(SINK: i+1_4, j-2_4) DEPEND(SINK: i, j+3_4) 56*f87737f3SKrzysztof Parzyszek!UNPARSE: x(int(i,kind=8),int(j,kind=8))=i+j 57*f87737f3SKrzysztof Parzyszek!UNPARSE: END DO 58*f87737f3SKrzysztof Parzyszek!UNPARSE: END DO 59*f87737f3SKrzysztof Parzyszek!UNPARSE: !$OMP END DO 60*f87737f3SKrzysztof Parzyszek!UNPARSE: END SUBROUTINE 61*f87737f3SKrzysztof Parzyszek 62*f87737f3SKrzysztof Parzyszek!PARSE-TREE-LABEL: ProgramUnit -> SubroutineSubprogram 63*f87737f3SKrzysztof Parzyszek!PARSE-TREE: OmpBeginLoopDirective 64*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpLoopDirective -> llvm::omp::Directive = do 65*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpClauseList -> OmpClause -> Ordered -> Scalar -> Integer -> Constant -> Expr = '2_4' 66*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | LiteralConstant -> IntLiteralConstant = '2' 67*f87737f3SKrzysztof Parzyszek![...] 68*f87737f3SKrzysztof Parzyszek!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPSimpleStandaloneConstruct 69*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpSimpleStandaloneDirective -> llvm::omp::Directive = ordered 70*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpClauseList -> OmpClause -> Depend -> OmpDependClause -> OmpDoacross -> Sink -> OmpIterationVector -> OmpIteration 71*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | Name = 'i' 72*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | OmpIterationOffset 73*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Add 74*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '1_4' 75*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '1' 76*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpIteration 77*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | Name = 'j' 78*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | OmpIterationOffset 79*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Subtract 80*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '2_4' 81*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '2' 82*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpClause -> Depend -> OmpDependClause -> OmpDoacross -> Sink -> OmpIterationVector -> OmpIteration 83*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | Name = 'i' 84*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | OmpIteration 85*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | Name = 'j' 86*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | OmpIterationOffset 87*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Add 88*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '3_4' 89*f87737f3SKrzysztof Parzyszek!PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '3' 90*f87737f3SKrzysztof Parzyszek 91