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:
Tobias Burnus 2022-10-13 20:38:27 +02:00
parent c853d655ab
commit ab8477af99
7 changed files with 247 additions and 0 deletions

View 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

View 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

View 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

View 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

View 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

View 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

View 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