brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 4134ced Raw
125 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp2! Check OpenMP clause validity for the following directives:3!     2.10 Device constructs4 5subroutine f6  integer :: i7  !WARNING: `DISTRIBUTE` must be dynamically enclosed in a `TEAMS` region.8  !$omp distribute9  do i = 1, 10010     print *, "hello"11  end do12end subroutine13program main14 15  real(8) :: arrayA(256), arrayB(256)16  integer :: N17 18  arrayA = 1.414d019  arrayB = 3.14d020  N = 25621 22  !$omp task23  !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.24  !$omp distribute 25  do i = 1, N26     a = 3.14d027  enddo28  !$omp end distribute29  !$omp end task30 31  !$omp teams32   do i = 1, N33      !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.34      !$omp task35      do k = 1, N36         a = 3.14d037      enddo38      !$omp end task39   enddo40   !$omp end teams41 42   !$omp teams43   do i = 1, N44      !$omp parallel45      do k = 1, N46         a = 3.14d047      enddo48      !$omp end parallel49   enddo50   !$omp end teams51 52  !$omp parallel53  !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.54  !$omp distribute 55  do i = 1, N56     a = 3.14d057  enddo58  !$omp end distribute59  !$omp end parallel60 61  !$omp teams62   !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.63   !$omp target64      !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.65      !$omp distribute 66      do i = 1, 1067         j = j + 168      end do69      !$omp end distribute70   !$omp end target71  !$omp end teams72 73  !$omp teams 74   !$omp parallel75   do k = 1,1076      print *, "hello"77   end do78   !$omp end parallel79   !$omp distribute firstprivate(a)80   do i = 1, 1081      j = j + 182   end do83   !$omp end distribute84  !$omp end teams85 86  !$omp target teams87    !$omp distribute88    do i = 1, 1089    end do90    !$omp end distribute91  !$omp end target teams92 93  !$omp teams 94      !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.95      !$omp task96      do k = 1,1097         print *, "hello"98      end do99      !$omp end task100      !$omp distribute firstprivate(a)101      do i = 1, 10102         j = j + 1103      end do104      !$omp end distribute105  !$omp end teams106 107  !$omp task 108      !$omp parallel109      do k = 1,10110         print *, "hello"111      end do112      !$omp end parallel113      !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.114      !$omp distribute firstprivate(a)115      do i = 1, 10116         j = j + 1117      end do118      !$omp end distribute119  !$omp end task120 121  !$omp teams122    call foo123  !$omp end teams124end program main125