libgomp: Add Fortran testcases for omp_in_explicit_task
Fortranized testcases of commits r13-3257-ga58a965eb73 and r13-3258-g0ec4e93fb9f. libgomp/ChangeLog: * testsuite/libgomp.fortran/task-7.f90: New test. * testsuite/libgomp.fortran/task-8.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-1.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-2.f90: New test. * testsuite/libgomp.fortran/task-in-explicit-3.f90: New test. * testsuite/libgomp.fortran/task-reduction-17.f90: New test. * testsuite/libgomp.fortran/task-reduction-18.f90: New test.
This commit is contained in:
parent
c853d655ab
commit
ab8477af99
7 changed files with 247 additions and 0 deletions
22
libgomp/testsuite/libgomp.fortran/task-7.f90
Normal file
22
libgomp/testsuite/libgomp.fortran/task-7.f90
Normal file
|
@ -0,0 +1,22 @@
|
|||
! { dg-do run }
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
implicit none
|
||||
|
||||
!$omp task final (.true.)
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp target nowait
|
||||
if (omp_in_final ()) &
|
||||
error stop
|
||||
!$omp end target
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp taskwait
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
end
|
13
libgomp/testsuite/libgomp.fortran/task-8.f90
Normal file
13
libgomp/testsuite/libgomp.fortran/task-8.f90
Normal file
|
@ -0,0 +1,13 @@
|
|||
! { dg-do run }
|
||||
|
||||
program main
|
||||
implicit none
|
||||
integer :: i
|
||||
i = 0
|
||||
!$omp task
|
||||
!$omp target nowait private (i)
|
||||
i = 1
|
||||
!$omp end target
|
||||
!$omp taskwait
|
||||
!$omp end task
|
||||
end
|
113
libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90
Normal file
113
libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90
Normal file
|
@ -0,0 +1,113 @@
|
|||
! { dg-do run }
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
implicit none
|
||||
integer :: i
|
||||
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
|
||||
!$omp task final (.true.)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
|
||||
!$omp parallel
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task if (.false.)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task if (.false.)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
!$omp task final (.true.)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp barrier
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp taskloop num_tasks (24)
|
||||
do i = 1, 32
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
end do
|
||||
!$omp masked
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end masked
|
||||
!$omp barrier
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end parallel
|
||||
|
||||
!$omp target
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task if (.false.)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end target
|
||||
|
||||
!$omp target teams
|
||||
!$omp distribute
|
||||
do i = 1, 4
|
||||
if (omp_in_explicit_task ()) then
|
||||
error stop
|
||||
else
|
||||
!$omp parallel
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp barrier
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end parallel
|
||||
end if
|
||||
end do
|
||||
!$omp end target teams
|
||||
|
||||
!$omp teams
|
||||
!$omp distribute
|
||||
do i = 1, 4
|
||||
if (omp_in_explicit_task ()) then
|
||||
error stop
|
||||
else
|
||||
!$omp parallel
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp barrier
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end parallel
|
||||
end if
|
||||
end do
|
||||
!$omp end distribute
|
||||
!$omp end teams
|
||||
end
|
21
libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90
Normal file
21
libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90
Normal file
|
@ -0,0 +1,21 @@
|
|||
! { dg-do run }
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
implicit none
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp target nowait
|
||||
if (omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end target
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp taskwait
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
end
|
31
libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90
Normal file
31
libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90
Normal file
|
@ -0,0 +1,31 @@
|
|||
! { dg-do run }
|
||||
|
||||
module m
|
||||
integer :: a
|
||||
end module m
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
use m
|
||||
implicit none
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp taskgroup task_reduction (+: a)
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp task in_reduction (+: a)
|
||||
a = a + 1
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end taskgroup
|
||||
if (.not. omp_in_explicit_task ()) &
|
||||
error stop
|
||||
!$omp taskwait
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
end
|
32
libgomp/testsuite/libgomp.fortran/task-reduction-17.f90
Normal file
32
libgomp/testsuite/libgomp.fortran/task-reduction-17.f90
Normal file
|
@ -0,0 +1,32 @@
|
|||
! { dg-do run }
|
||||
|
||||
module m
|
||||
integer a
|
||||
end module m
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
use m
|
||||
implicit none
|
||||
|
||||
!$omp task final (.true.)
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp task
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp taskgroup task_reduction (+: a)
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp task in_reduction (+: a)
|
||||
a = a + 1
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp end task
|
||||
!$omp end taskgroup
|
||||
if (.not. omp_in_final ()) &
|
||||
error stop
|
||||
!$omp taskwait
|
||||
!$omp end task
|
||||
!$omp end task
|
||||
end
|
15
libgomp/testsuite/libgomp.fortran/task-reduction-18.f90
Normal file
15
libgomp/testsuite/libgomp.fortran/task-reduction-18.f90
Normal file
|
@ -0,0 +1,15 @@
|
|||
! { dg-do run }
|
||||
|
||||
module m
|
||||
integer :: a = 0
|
||||
end module m
|
||||
|
||||
program main
|
||||
!$omp task
|
||||
!$omp taskgroup task_reduction (+: a)
|
||||
!$omp task in_reduction (+: a)
|
||||
a = a + 1
|
||||
!$omp end task
|
||||
!$omp end taskgroup
|
||||
!$omp end task
|
||||
end
|
Loading…
Add table
Reference in a new issue