brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · eb39398 Raw
82 lines · plain
1! RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=50 %s | FileCheck --ignore-case %s2! RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=50 %s | FileCheck --check-prefix="PARSE-TREE" %s3 4! Check for IN_REDUCTION() clause on OpenMP constructs5 6subroutine omp_in_reduction_taskgroup()7    integer :: z, i8    !CHECK: !$OMP TASKGROUP  TASK_REDUCTION(+: z)9    !$omp taskgroup task_reduction(+:z)10    !CHECK-NEXT: !$OMP TASK  IN_REDUCTION(+: z)11        !$omp task in_reduction(+:z)12    !CHECK-NEXT: z=z+5_413            z = z + 514    !CHECK-NEXT: !$OMP END TASK15        !$omp end task16 17    !CHECK-NEXT: !$OMP TASKLOOP  IN_REDUCTION(+: z)18        !$omp taskloop in_reduction(+:z)19    !CHECK-NEXT: DO i=1_4,10_420            do i=1,1021    !CHECK-NEXT: z=5_4*z22                z = z * 523    !CHECK-NEXT: END DO24            end do25    !CHECK-NEXT: !$OMP END TASKLOOP26        !$omp end taskloop27    !CHECK-NEXT: !$OMP END TASKGROUP28    !$omp end taskgroup29end subroutine omp_in_reduction_taskgroup30 31!PARSE-TREE: OpenMPConstruct -> OmpBlockConstruct32!PARSE-TREE-NEXT: OmpBeginDirective33!PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = taskgroup34!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> TaskReduction -> OmpTaskReductionClause35 36!PARSE-TREE: OpenMPConstruct -> OmpBlockConstruct37!PARSE-TREE-NEXT: OmpBeginDirective38!PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = task39!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> InReduction -> OmpInReductionClause40!PARSE-TREE-NEXT: OmpReductionIdentifier -> DefinedOperator -> IntrinsicOperator = Add41!PARSE-TREE-NEXT: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'z'42 43!PARSE-TREE: OpenMPConstruct -> OpenMPLoopConstruct44!PARSE-TREE-NEXT: OmpBeginLoopDirective45!PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = taskloop46!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> InReduction -> OmpInReductionClause47!PARSE-TREE-NEXT: OmpReductionIdentifier -> DefinedOperator -> IntrinsicOperator = Add48!PARSE-TREE-NEXT: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'z'49!PARSE-TREE-NEXT: Flags = {}50 51subroutine omp_in_reduction_parallel()52    integer :: z53    !CHECK: !$OMP PARALLEL  REDUCTION(+: z)54    !$omp parallel reduction(+:z)55    !CHECK-NEXT: !$OMP TASKLOOP SIMD  IN_REDUCTION(+: z)56        !$omp taskloop simd in_reduction(+:z)57    !CHECK-NEXT: DO i=1_4,10_458            do i=1,1059    !CHECK-NEXT: z=5_4*z60                z = z * 561    !CHECK-NEXT: END DO62            end do63    !CHECK-NEXT: !$OMP END TASKLOOP SIMD64        !$omp end taskloop simd65    !CHECK-NEXT: !$OMP END PARALLEL66    !$omp end parallel67end subroutine omp_in_reduction_parallel68 69!PARSE-TREE: OpenMPConstruct -> OmpBlockConstruct70!PARSE-TREE-NEXT: OmpBeginDirective71!PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel72!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> Reduction -> OmpReductionClause73 74!PARSE-TREE: OpenMPConstruct -> OpenMPLoopConstruct75!PARSE-TREE-NEXT: OmpBeginLoopDirective76!PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = taskloop simd77!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> InReduction -> OmpInReductionClause78!PARSE-TREE-NEXT: OmpReductionIdentifier -> DefinedOperator -> IntrinsicOperator = Add79!PARSE-TREE-NEXT: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'z'80!PARSE-TREE-NEXT: Flags = {}81 82