brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 4b1819f Raw
98 lines · plain
1! Test the Parse Tree to ensure the OpenMP Loop Transformation Construct Fuse can be constructed on another Fuse2 3! RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=51 %s | FileCheck %s --check-prefix=CHECK-PARSE4! RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=51 %s | FileCheck %s --check-prefix=CHECK-UNPARSE5 6subroutine fuse_on_fuse7  implicit none8  integer :: I = 109  integer :: j10 11  !$omp fuse12    !$omp fuse13      do i = 1, I14        continue15      end do16      do j = 1, I17        continue18      end do19    !$omp end fuse20    do j = 1, I21      continue22    end do23  !$omp end fuse24end subroutine25 26!CHECK-PARSE: | ExecutionPart -> Block27!CHECK-PARSE-NEXT: | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPLoopConstruct28!CHECK-PARSE-NEXT: | | | OmpBeginLoopDirective29!CHECK-PARSE-NEXT: | | | | OmpDirectiveName -> llvm::omp::Directive = fuse30!CHECK-PARSE-NEXT: | | | | OmpClauseList ->31!CHECK-PARSE-NEXT: | | | | Flags = {}32!CHECK-PARSE-NEXT: | | | Block33!CHECK-PARSE-NEXT: | | | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPLoopConstruct34!CHECK-PARSE-NEXT: | | | | | OmpBeginLoopDirective35!CHECK-PARSE-NEXT: | | | | | | OmpDirectiveName -> llvm::omp::Directive = fuse36!CHECK-PARSE-NEXT: | | | | | | OmpClauseList ->37!CHECK-PARSE-NEXT: | | | | | | Flags = {}38!CHECK-PARSE-NEXT: | | | | | Block39!CHECK-PARSE-NEXT: | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> DoConstruct40!CHECK-PARSE-NEXT: | | | | | | | NonLabelDoStmt41!CHECK-PARSE-NEXT: | | | | | | | | LoopControl -> LoopBounds42!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Name = 'i'43!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = '1_4'44!CHECK-PARSE-NEXT: | | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'45!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = 'i'46!CHECK-PARSE-NEXT: | | | | | | | | | | Designator -> DataRef -> Name = 'i'47!CHECK-PARSE-NEXT: | | | | | | | Block48!CHECK-PARSE-NEXT: | | | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> ContinueStmt49!CHECK-PARSE-NEXT: | | | | | | | EndDoStmt ->50!CHECK-PARSE-NEXT: | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> DoConstruct51!CHECK-PARSE-NEXT: | | | | | | | NonLabelDoStmt52!CHECK-PARSE-NEXT: | | | | | | | | LoopControl -> LoopBounds53!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Name = 'j'54!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = '1_4'55!CHECK-PARSE-NEXT: | | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'56!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = 'i'57!CHECK-PARSE-NEXT: | | | | | | | | | | Designator -> DataRef -> Name = 'i'58!CHECK-PARSE-NEXT: | | | | | | | Block59!CHECK-PARSE-NEXT: | | | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> ContinueStmt60!CHECK-PARSE-NEXT: | | | | | | | EndDoStmt ->61!CHECK-PARSE-NEXT: | | | | | OmpEndLoopDirective62!CHECK-PARSE-NEXT: | | | | | | OmpDirectiveName -> llvm::omp::Directive = fuse63!CHECK-PARSE-NEXT: | | | | | | OmpClauseList ->64!CHECK-PARSE-NEXT: | | | | | | Flags = {}65!CHECK-PARSE-NEXT: | | | | ExecutionPartConstruct -> ExecutableConstruct -> DoConstruct66!CHECK-PARSE-NEXT: | | | | | NonLabelDoStmt67!CHECK-PARSE-NEXT: | | | | | | LoopControl -> LoopBounds68!CHECK-PARSE-NEXT: | | | | | | | Scalar -> Name = 'j'69!CHECK-PARSE-NEXT: | | | | | | | Scalar -> Expr = '1_4'70!CHECK-PARSE-NEXT: | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'71!CHECK-PARSE-NEXT: | | | | | | | Scalar -> Expr = 'i'72!CHECK-PARSE-NEXT: | | | | | | | | Designator -> DataRef -> Name = 'i'73!CHECK-PARSE-NEXT: | | | | | Block74!CHECK-PARSE-NEXT: | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> ContinueStmt75!CHECK-PARSE-NEXT: | | | | | EndDoStmt ->76!CHECK-PARSE-NEXT: | | | OmpEndLoopDirective77!CHECK-PARSE-NEXT: | | | | OmpDirectiveName -> llvm::omp::Directive = fuse78!CHECK-PARSE-NEXT: | | | | OmpClauseList ->79!CHECK-PARSE-NEXT: | | | | Flags = {}80 81!CHECK-UNPARSE: SUBROUTINE fuse_on_fuse82!CHECK-UNPARSE-NEXT:  IMPLICIT NONE83!CHECK-UNPARSE-NEXT:  INTEGER :: i = 10_484!CHECK-UNPARSE-NEXT:  INTEGER j85!CHECK-UNPARSE-NEXT: !$OMP FUSE86!CHECK-UNPARSE-NEXT: !$OMP FUSE87!CHECK-UNPARSE-NEXT:  DO i=1_4,i88!CHECK-UNPARSE-NEXT:    CONTINUE89!CHECK-UNPARSE-NEXT:  END DO90!CHECK-UNPARSE-NEXT:  DO j=1_4,i91!CHECK-UNPARSE-NEXT:    CONTINUE92!CHECK-UNPARSE-NEXT:  END DO93!CHECK-UNPARSE-NEXT: !$OMP END FUSE94!CHECK-UNPARSE-NEXT:  DO j=1_4,i95!CHECK-UNPARSE-NEXT:    CONTINUE96!CHECK-UNPARSE-NEXT:  END DO97!CHECK-UNPARSE-NEXT: !$OMP END FUSE98