This patch adds the OpenACC 2.5 new APIs of acc_get_default_async/acc_set_default_async, contained are the modifications for Fortran in libgomp/openacc.f90, libgomp/openacc_lib.h, and a small testsuite adjustment.
Thanks, Chung-Lin * openacc.f90 (acc_async_default): Declare. (acc_set_default_async): Likewise. (acc_get_default_async): Likewise. * openacc_lib.h (acc_async_default): Declare. (acc_set_default_async): Likewise. (acc_get_default_async): Likewise. * testsuite/libgomp.oacc-fortran/lib-12.f90: Likewise.
diff --git a/libgomp/openacc.f90 b/libgomp/openacc.f90 index 7c809fe..7d31ee6 100644 --- a/libgomp/openacc.f90 +++ b/libgomp/openacc.f90 @@ -51,9 +51,10 @@ module openacc_kinds integer, parameter :: acc_handle_kind = int32 - public :: acc_async_noval, acc_async_sync + public :: acc_async_default, acc_async_noval, acc_async_sync ! Keep in sync with include/gomp-constants.h. + integer (acc_handle_kind), parameter :: acc_async_default = 0 integer (acc_handle_kind), parameter :: acc_async_noval = -1 integer (acc_handle_kind), parameter :: acc_async_sync = -2 @@ -92,6 +93,16 @@ module openacc_internal integer (acc_device_kind) d end function + subroutine acc_set_default_async_h (a) + import + integer a + end subroutine + + function acc_get_default_async_h () + import + integer acc_get_default_async_h + end function + function acc_async_test_h (a) logical acc_async_test_h integer a @@ -720,6 +731,7 @@ module openacc public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type public :: acc_set_device_num, acc_get_device_num, acc_async_test + public :: acc_set_default_async, acc_get_default_async public :: acc_async_test_all public :: acc_wait, acc_async_wait, acc_wait_async public :: acc_wait_all, acc_async_wait_all, acc_wait_all_async @@ -752,6 +764,14 @@ module openacc procedure :: acc_get_device_num_h end interface + interface acc_set_default_async + procedure :: acc_set_default_async_h + end interface + + interface acc_get_default_async + procedure :: acc_get_default_async_h + end interface + interface acc_async_test procedure :: acc_async_test_h end interface diff --git a/libgomp/openacc_lib.h b/libgomp/openacc_lib.h index 820d987..75a6939 100644 --- a/libgomp/openacc_lib.h +++ b/libgomp/openacc_lib.h @@ -46,6 +46,7 @@ integer, parameter :: acc_handle_kind = 4 ! Keep in sync with include/gomp-constants.h. + integer (acc_handle_kind), parameter :: acc_async_default = 0 integer (acc_handle_kind), parameter :: acc_async_noval = -1 integer (acc_handle_kind), parameter :: acc_async_sync = -2 @@ -89,6 +90,18 @@ end function end interface + interface acc_set_default_async + subroutine acc_set_default_async_h (a) + integer a + end subroutine + end interface + + interface acc_get_default_async + function acc_get_default_async_h () + integer acc_get_default_async_h + end function + end interface + interface acc_async_test function acc_async_test_h (a) logical acc_async_test_h diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-12.f90 b/libgomp/testsuite/libgomp.oacc-fortran/lib-12.f90 index 6912f67..ffbbf33 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/lib-12.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-12.f90 @@ -1,4 +1,5 @@ ! { dg-do run } +! { dg-xfail-run-if "n/a" { openacc_host_selected } } program main use openacc