Home | History | Annotate | Line # | Download | only in libgomp
openacc.f90 revision 1.1.1.10
      1       1.1  mrg !  OpenACC Runtime Library Definitions.
      2       1.1  mrg 
      3  1.1.1.10  mrg !  Copyright (C) 2014-2024 Free Software Foundation, Inc.
      4       1.1  mrg 
      5       1.1  mrg !  Contributed by Tobias Burnus <burnus@net-b.de>
      6       1.1  mrg !              and Mentor Embedded.
      7       1.1  mrg 
      8       1.1  mrg !  This file is part of the GNU Offloading and Multi Processing Library
      9       1.1  mrg !  (libgomp).
     10       1.1  mrg 
     11       1.1  mrg !  Libgomp is free software; you can redistribute it and/or modify it
     12       1.1  mrg !  under the terms of the GNU General Public License as published by
     13       1.1  mrg !  the Free Software Foundation; either version 3, or (at your option)
     14       1.1  mrg !  any later version.
     15       1.1  mrg 
     16       1.1  mrg !  Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
     17       1.1  mrg !  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     18       1.1  mrg !  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
     19       1.1  mrg !  more details.
     20       1.1  mrg 
     21       1.1  mrg !  Under Section 7 of GPL version 3, you are granted additional
     22       1.1  mrg !  permissions described in the GCC Runtime Library Exception, version
     23       1.1  mrg !  3.1, as published by the Free Software Foundation.
     24       1.1  mrg 
     25       1.1  mrg !  You should have received a copy of the GNU General Public License and
     26       1.1  mrg !  a copy of the GCC Runtime Library Exception along with this program;
     27       1.1  mrg !  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     28       1.1  mrg !  <http://www.gnu.org/licenses/>.
     29       1.1  mrg 
     30   1.1.1.8  mrg ! Keep in sync with config/accel/openacc.f90 and openacc_lib.h.
     31   1.1.1.8  mrg 
     32       1.1  mrg module openacc_kinds
     33       1.1  mrg   use iso_fortran_env, only: int32
     34       1.1  mrg   implicit none
     35       1.1  mrg 
     36   1.1.1.8  mrg   public
     37       1.1  mrg   private :: int32
     38       1.1  mrg 
     39   1.1.1.8  mrg   ! When adding items, also update 'public' setting in 'module openacc' below.
     40       1.1  mrg 
     41   1.1.1.8  mrg   integer, parameter :: acc_device_kind = int32
     42       1.1  mrg 
     43       1.1  mrg   ! Keep in sync with include/gomp-constants.h.
     44   1.1.1.8  mrg   integer (acc_device_kind), parameter :: acc_device_current = -1
     45       1.1  mrg   integer (acc_device_kind), parameter :: acc_device_none = 0
     46       1.1  mrg   integer (acc_device_kind), parameter :: acc_device_default = 1
     47       1.1  mrg   integer (acc_device_kind), parameter :: acc_device_host = 2
     48   1.1.1.2  mrg   ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
     49       1.1  mrg   integer (acc_device_kind), parameter :: acc_device_not_host = 4
     50       1.1  mrg   integer (acc_device_kind), parameter :: acc_device_nvidia = 5
     51   1.1.1.8  mrg   integer (acc_device_kind), parameter :: acc_device_radeon = 8
     52       1.1  mrg 
     53   1.1.1.8  mrg   integer, parameter :: acc_device_property_kind = int32
     54   1.1.1.8  mrg   ! OpenACC 2.6/2.7/3.0 used acc_device_property; in a spec update the
     55   1.1.1.8  mrg   ! missing '_kind' was added for consistency.  For backward compatibility, keep:
     56   1.1.1.8  mrg   integer, parameter :: acc_device_property = acc_device_property_kind
     57   1.1.1.8  mrg 
     58   1.1.1.8  mrg   ! Keep in sync with 'libgomp/libgomp-plugin.h:goacc_property'.
     59   1.1.1.8  mrg   integer (acc_device_property_kind), parameter :: acc_property_memory = 1
     60   1.1.1.8  mrg   integer (acc_device_property_kind), parameter :: acc_property_free_memory = 2
     61   1.1.1.8  mrg   integer (acc_device_property_kind), parameter :: acc_property_name = int(Z'10001')
     62   1.1.1.8  mrg   integer (acc_device_property_kind), parameter :: acc_property_vendor = int(Z'10002')
     63   1.1.1.8  mrg   integer (acc_device_property_kind), parameter :: acc_property_driver = int(Z'10003')
     64       1.1  mrg 
     65       1.1  mrg   integer, parameter :: acc_handle_kind = int32
     66       1.1  mrg 
     67       1.1  mrg   ! Keep in sync with include/gomp-constants.h.
     68       1.1  mrg   integer (acc_handle_kind), parameter :: acc_async_noval = -1
     69       1.1  mrg   integer (acc_handle_kind), parameter :: acc_async_sync = -2
     70   1.1.1.8  mrg end module openacc_kinds
     71       1.1  mrg 
     72       1.1  mrg module openacc_internal
     73       1.1  mrg   use openacc_kinds
     74       1.1  mrg   implicit none
     75       1.1  mrg 
     76       1.1  mrg   interface
     77   1.1.1.8  mrg     function acc_get_num_devices_h (devicetype)
     78       1.1  mrg       import
     79       1.1  mrg       integer acc_get_num_devices_h
     80   1.1.1.8  mrg       integer (acc_device_kind) devicetype
     81       1.1  mrg     end function
     82       1.1  mrg 
     83   1.1.1.8  mrg     subroutine acc_set_device_type_h (devicetype)
     84       1.1  mrg       import
     85   1.1.1.8  mrg       integer (acc_device_kind) devicetype
     86       1.1  mrg     end subroutine
     87       1.1  mrg 
     88       1.1  mrg     function acc_get_device_type_h ()
     89       1.1  mrg       import
     90       1.1  mrg       integer (acc_device_kind) acc_get_device_type_h
     91       1.1  mrg     end function
     92       1.1  mrg 
     93   1.1.1.8  mrg     subroutine acc_set_device_num_h (devicenum, devicetype)
     94       1.1  mrg       import
     95   1.1.1.8  mrg       integer devicenum
     96   1.1.1.8  mrg       integer (acc_device_kind) devicetype
     97       1.1  mrg     end subroutine
     98       1.1  mrg 
     99   1.1.1.8  mrg     function acc_get_device_num_h (devicetype)
    100       1.1  mrg       import
    101       1.1  mrg       integer acc_get_device_num_h
    102   1.1.1.8  mrg       integer (acc_device_kind) devicetype
    103   1.1.1.8  mrg     end function
    104   1.1.1.8  mrg 
    105   1.1.1.8  mrg     function acc_get_property_h (devicenum, devicetype, property)
    106   1.1.1.8  mrg       use iso_c_binding, only: c_size_t
    107   1.1.1.8  mrg       import
    108   1.1.1.8  mrg       implicit none (type, external)
    109   1.1.1.8  mrg       integer (c_size_t) :: acc_get_property_h
    110   1.1.1.8  mrg       integer, value :: devicenum
    111   1.1.1.8  mrg       integer (acc_device_kind), value :: devicetype
    112   1.1.1.8  mrg       integer (acc_device_property_kind), value :: property
    113       1.1  mrg     end function
    114       1.1  mrg 
    115   1.1.1.8  mrg     subroutine acc_get_property_string_h (devicenum, devicetype, property, string)
    116   1.1.1.8  mrg       import
    117   1.1.1.8  mrg       implicit none (type, external)
    118   1.1.1.8  mrg       integer, value :: devicenum
    119   1.1.1.8  mrg       integer (acc_device_kind), value :: devicetype
    120   1.1.1.8  mrg       integer (acc_device_property_kind), value :: property
    121   1.1.1.8  mrg       character (*) :: string
    122   1.1.1.8  mrg     end subroutine
    123   1.1.1.8  mrg 
    124   1.1.1.8  mrg     function acc_async_test_h (arg)
    125       1.1  mrg       logical acc_async_test_h
    126   1.1.1.8  mrg       integer arg
    127       1.1  mrg     end function
    128       1.1  mrg 
    129       1.1  mrg     function acc_async_test_all_h ()
    130       1.1  mrg       logical acc_async_test_all_h
    131       1.1  mrg     end function
    132       1.1  mrg 
    133   1.1.1.8  mrg     subroutine acc_wait_h (arg)
    134   1.1.1.8  mrg       integer arg
    135       1.1  mrg     end subroutine
    136       1.1  mrg 
    137   1.1.1.8  mrg     subroutine acc_wait_async_h (arg, async)
    138   1.1.1.8  mrg       integer arg, async
    139       1.1  mrg     end subroutine
    140       1.1  mrg 
    141       1.1  mrg     subroutine acc_wait_all_h ()
    142       1.1  mrg     end subroutine
    143       1.1  mrg 
    144   1.1.1.8  mrg     subroutine acc_wait_all_async_h (async)
    145   1.1.1.8  mrg       integer async
    146       1.1  mrg     end subroutine
    147       1.1  mrg 
    148   1.1.1.8  mrg     subroutine acc_init_h (devicetype)
    149       1.1  mrg       import
    150   1.1.1.8  mrg       integer (acc_device_kind) devicetype
    151       1.1  mrg     end subroutine
    152       1.1  mrg 
    153   1.1.1.8  mrg     subroutine acc_shutdown_h (devicetype)
    154       1.1  mrg       import
    155   1.1.1.8  mrg       integer (acc_device_kind) devicetype
    156       1.1  mrg     end subroutine
    157       1.1  mrg 
    158   1.1.1.8  mrg     function acc_on_device_h (devicetype)
    159       1.1  mrg       import
    160   1.1.1.8  mrg       integer (acc_device_kind) devicetype
    161       1.1  mrg       logical acc_on_device_h
    162       1.1  mrg     end function
    163       1.1  mrg 
    164       1.1  mrg     subroutine acc_copyin_32_h (a, len)
    165       1.1  mrg       use iso_c_binding, only: c_int32_t
    166       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    167       1.1  mrg       type (*), dimension (*) :: a
    168       1.1  mrg       integer (c_int32_t) len
    169       1.1  mrg     end subroutine
    170       1.1  mrg 
    171       1.1  mrg     subroutine acc_copyin_64_h (a, len)
    172       1.1  mrg       use iso_c_binding, only: c_int64_t
    173       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    174       1.1  mrg       type (*), dimension (*) :: a
    175       1.1  mrg       integer (c_int64_t) len
    176       1.1  mrg     end subroutine
    177       1.1  mrg 
    178       1.1  mrg     subroutine acc_copyin_array_h (a)
    179       1.1  mrg       type (*), dimension (..), contiguous :: a
    180       1.1  mrg     end subroutine
    181       1.1  mrg 
    182       1.1  mrg     subroutine acc_present_or_copyin_32_h (a, len)
    183       1.1  mrg       use iso_c_binding, only: c_int32_t
    184       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    185       1.1  mrg       type (*), dimension (*) :: a
    186       1.1  mrg       integer (c_int32_t) len
    187       1.1  mrg     end subroutine
    188       1.1  mrg 
    189       1.1  mrg     subroutine acc_present_or_copyin_64_h (a, len)
    190       1.1  mrg       use iso_c_binding, only: c_int64_t
    191       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    192       1.1  mrg       type (*), dimension (*) :: a
    193       1.1  mrg       integer (c_int64_t) len
    194       1.1  mrg     end subroutine
    195       1.1  mrg 
    196       1.1  mrg     subroutine acc_present_or_copyin_array_h (a)
    197       1.1  mrg       type (*), dimension (..), contiguous :: a
    198       1.1  mrg     end subroutine
    199       1.1  mrg 
    200       1.1  mrg     subroutine acc_create_32_h (a, len)
    201       1.1  mrg       use iso_c_binding, only: c_int32_t
    202       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    203       1.1  mrg       type (*), dimension (*) :: a
    204       1.1  mrg       integer (c_int32_t) len
    205       1.1  mrg     end subroutine
    206       1.1  mrg 
    207       1.1  mrg     subroutine acc_create_64_h (a, len)
    208       1.1  mrg       use iso_c_binding, only: c_int64_t
    209       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    210       1.1  mrg       type (*), dimension (*) :: a
    211       1.1  mrg       integer (c_int64_t) len
    212       1.1  mrg     end subroutine
    213       1.1  mrg 
    214       1.1  mrg     subroutine acc_create_array_h (a)
    215       1.1  mrg       type (*), dimension (..), contiguous :: a
    216       1.1  mrg     end subroutine
    217       1.1  mrg 
    218       1.1  mrg     subroutine acc_present_or_create_32_h (a, len)
    219       1.1  mrg       use iso_c_binding, only: c_int32_t
    220       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    221       1.1  mrg       type (*), dimension (*) :: a
    222       1.1  mrg       integer (c_int32_t) len
    223       1.1  mrg     end subroutine
    224       1.1  mrg 
    225       1.1  mrg     subroutine acc_present_or_create_64_h (a, len)
    226       1.1  mrg       use iso_c_binding, only: c_int64_t
    227       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    228       1.1  mrg       type (*), dimension (*) :: a
    229       1.1  mrg       integer (c_int64_t) len
    230       1.1  mrg     end subroutine
    231       1.1  mrg 
    232       1.1  mrg     subroutine acc_present_or_create_array_h (a)
    233       1.1  mrg       type (*), dimension (..), contiguous :: a
    234       1.1  mrg     end subroutine
    235       1.1  mrg 
    236       1.1  mrg     subroutine acc_copyout_32_h (a, len)
    237       1.1  mrg       use iso_c_binding, only: c_int32_t
    238       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    239       1.1  mrg       type (*), dimension (*) :: a
    240       1.1  mrg       integer (c_int32_t) len
    241       1.1  mrg     end subroutine
    242       1.1  mrg 
    243       1.1  mrg     subroutine acc_copyout_64_h (a, len)
    244       1.1  mrg       use iso_c_binding, only: c_int64_t
    245       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    246       1.1  mrg       type (*), dimension (*) :: a
    247       1.1  mrg       integer (c_int64_t) len
    248       1.1  mrg     end subroutine
    249       1.1  mrg 
    250       1.1  mrg     subroutine acc_copyout_array_h (a)
    251       1.1  mrg       type (*), dimension (..), contiguous :: a
    252       1.1  mrg     end subroutine
    253       1.1  mrg 
    254   1.1.1.7  mrg     subroutine acc_copyout_finalize_32_h (a, len)
    255   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    256   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    257   1.1.1.7  mrg       type (*), dimension (*) :: a
    258   1.1.1.7  mrg       integer (c_int32_t) len
    259   1.1.1.7  mrg     end subroutine
    260   1.1.1.7  mrg 
    261   1.1.1.7  mrg     subroutine acc_copyout_finalize_64_h (a, len)
    262   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    263   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    264   1.1.1.7  mrg       type (*), dimension (*) :: a
    265   1.1.1.7  mrg       integer (c_int64_t) len
    266   1.1.1.7  mrg     end subroutine
    267   1.1.1.7  mrg 
    268   1.1.1.7  mrg     subroutine acc_copyout_finalize_array_h (a)
    269   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    270   1.1.1.7  mrg     end subroutine
    271   1.1.1.7  mrg 
    272       1.1  mrg     subroutine acc_delete_32_h (a, len)
    273       1.1  mrg       use iso_c_binding, only: c_int32_t
    274       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    275       1.1  mrg       type (*), dimension (*) :: a
    276       1.1  mrg       integer (c_int32_t) len
    277       1.1  mrg     end subroutine
    278       1.1  mrg 
    279       1.1  mrg     subroutine acc_delete_64_h (a, len)
    280       1.1  mrg       use iso_c_binding, only: c_int64_t
    281       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    282       1.1  mrg       type (*), dimension (*) :: a
    283       1.1  mrg       integer (c_int64_t) len
    284       1.1  mrg     end subroutine
    285       1.1  mrg 
    286       1.1  mrg     subroutine acc_delete_array_h (a)
    287       1.1  mrg       type (*), dimension (..), contiguous :: a
    288       1.1  mrg     end subroutine
    289       1.1  mrg 
    290   1.1.1.7  mrg     subroutine acc_delete_finalize_32_h (a, len)
    291   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    292   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    293   1.1.1.7  mrg       type (*), dimension (*) :: a
    294   1.1.1.7  mrg       integer (c_int32_t) len
    295   1.1.1.7  mrg     end subroutine
    296   1.1.1.7  mrg 
    297   1.1.1.7  mrg     subroutine acc_delete_finalize_64_h (a, len)
    298   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    299   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    300   1.1.1.7  mrg       type (*), dimension (*) :: a
    301   1.1.1.7  mrg       integer (c_int64_t) len
    302   1.1.1.7  mrg     end subroutine
    303   1.1.1.7  mrg 
    304   1.1.1.7  mrg     subroutine acc_delete_finalize_array_h (a)
    305   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    306   1.1.1.7  mrg     end subroutine
    307   1.1.1.7  mrg 
    308       1.1  mrg     subroutine acc_update_device_32_h (a, len)
    309       1.1  mrg       use iso_c_binding, only: c_int32_t
    310       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    311       1.1  mrg       type (*), dimension (*) :: a
    312       1.1  mrg       integer (c_int32_t) len
    313       1.1  mrg     end subroutine
    314       1.1  mrg 
    315       1.1  mrg     subroutine acc_update_device_64_h (a, len)
    316       1.1  mrg       use iso_c_binding, only: c_int64_t
    317       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    318       1.1  mrg       type (*), dimension (*) :: a
    319       1.1  mrg       integer (c_int64_t) len
    320       1.1  mrg     end subroutine
    321       1.1  mrg 
    322       1.1  mrg     subroutine acc_update_device_array_h (a)
    323       1.1  mrg       type (*), dimension (..), contiguous :: a
    324       1.1  mrg     end subroutine
    325       1.1  mrg 
    326       1.1  mrg     subroutine acc_update_self_32_h (a, len)
    327       1.1  mrg       use iso_c_binding, only: c_int32_t
    328       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    329       1.1  mrg       type (*), dimension (*) :: a
    330       1.1  mrg       integer (c_int32_t) len
    331       1.1  mrg     end subroutine
    332       1.1  mrg 
    333       1.1  mrg     subroutine acc_update_self_64_h (a, len)
    334       1.1  mrg       use iso_c_binding, only: c_int64_t
    335       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    336       1.1  mrg       type (*), dimension (*) :: a
    337       1.1  mrg       integer (c_int64_t) len
    338       1.1  mrg     end subroutine
    339       1.1  mrg 
    340       1.1  mrg     subroutine acc_update_self_array_h (a)
    341       1.1  mrg       type (*), dimension (..), contiguous :: a
    342       1.1  mrg     end subroutine
    343       1.1  mrg 
    344       1.1  mrg     function acc_is_present_32_h (a, len)
    345       1.1  mrg       use iso_c_binding, only: c_int32_t
    346       1.1  mrg       logical acc_is_present_32_h
    347       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    348       1.1  mrg       type (*), dimension (*) :: a
    349       1.1  mrg       integer (c_int32_t) len
    350       1.1  mrg     end function
    351       1.1  mrg 
    352       1.1  mrg     function acc_is_present_64_h (a, len)
    353       1.1  mrg       use iso_c_binding, only: c_int64_t
    354       1.1  mrg       logical acc_is_present_64_h
    355       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    356       1.1  mrg       type (*), dimension (*) :: a
    357       1.1  mrg       integer (c_int64_t) len
    358       1.1  mrg     end function
    359       1.1  mrg 
    360       1.1  mrg     function acc_is_present_array_h (a)
    361       1.1  mrg       logical acc_is_present_array_h
    362       1.1  mrg       type (*), dimension (..), contiguous :: a
    363       1.1  mrg     end function
    364   1.1.1.7  mrg 
    365   1.1.1.7  mrg     subroutine acc_copyin_async_32_h (a, len, async)
    366   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    367   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    368   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    369   1.1.1.7  mrg       type (*), dimension (*) :: a
    370   1.1.1.7  mrg       integer (c_int32_t) len
    371   1.1.1.7  mrg       integer (acc_handle_kind) async
    372   1.1.1.7  mrg     end subroutine
    373   1.1.1.7  mrg 
    374   1.1.1.7  mrg     subroutine acc_copyin_async_64_h (a, len, async)
    375   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    376   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    377   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    378   1.1.1.7  mrg       type (*), dimension (*) :: a
    379   1.1.1.7  mrg       integer (c_int64_t) len
    380   1.1.1.7  mrg       integer (acc_handle_kind) async
    381   1.1.1.7  mrg     end subroutine
    382   1.1.1.7  mrg 
    383   1.1.1.7  mrg     subroutine acc_copyin_async_array_h (a, async)
    384   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    385   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    386   1.1.1.7  mrg       integer (acc_handle_kind) async
    387   1.1.1.7  mrg     end subroutine
    388   1.1.1.7  mrg 
    389   1.1.1.7  mrg     subroutine acc_create_async_32_h (a, len, async)
    390   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    391   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    392   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    393   1.1.1.7  mrg       type (*), dimension (*) :: a
    394   1.1.1.7  mrg       integer (c_int32_t) len
    395   1.1.1.7  mrg       integer (acc_handle_kind) async
    396   1.1.1.7  mrg     end subroutine
    397   1.1.1.7  mrg 
    398   1.1.1.7  mrg     subroutine acc_create_async_64_h (a, len, async)
    399   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    400   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    401   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    402   1.1.1.7  mrg       type (*), dimension (*) :: a
    403   1.1.1.7  mrg       integer (c_int64_t) len
    404   1.1.1.7  mrg       integer (acc_handle_kind) async
    405   1.1.1.7  mrg     end subroutine
    406   1.1.1.7  mrg 
    407   1.1.1.7  mrg     subroutine acc_create_async_array_h (a, async)
    408   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    409   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    410   1.1.1.7  mrg       integer (acc_handle_kind) async
    411   1.1.1.7  mrg     end subroutine
    412   1.1.1.7  mrg 
    413   1.1.1.7  mrg     subroutine acc_copyout_async_32_h (a, len, async)
    414   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    415   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    416   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    417   1.1.1.7  mrg       type (*), dimension (*) :: a
    418   1.1.1.7  mrg       integer (c_int32_t) len
    419   1.1.1.7  mrg       integer (acc_handle_kind) async
    420   1.1.1.7  mrg     end subroutine
    421   1.1.1.7  mrg 
    422   1.1.1.7  mrg     subroutine acc_copyout_async_64_h (a, len, async)
    423   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    424   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    425   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    426   1.1.1.7  mrg       type (*), dimension (*) :: a
    427   1.1.1.7  mrg       integer (c_int64_t) len
    428   1.1.1.7  mrg       integer (acc_handle_kind) async
    429   1.1.1.7  mrg     end subroutine
    430   1.1.1.7  mrg 
    431   1.1.1.7  mrg     subroutine acc_copyout_async_array_h (a, async)
    432   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    433   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    434   1.1.1.7  mrg       integer (acc_handle_kind) async
    435   1.1.1.7  mrg     end subroutine
    436   1.1.1.7  mrg 
    437   1.1.1.7  mrg     subroutine acc_delete_async_32_h (a, len, async)
    438   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    439   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    440   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    441   1.1.1.7  mrg       type (*), dimension (*) :: a
    442   1.1.1.7  mrg       integer (c_int32_t) len
    443   1.1.1.7  mrg       integer (acc_handle_kind) async
    444   1.1.1.7  mrg     end subroutine
    445   1.1.1.7  mrg 
    446   1.1.1.7  mrg     subroutine acc_delete_async_64_h (a, len, async)
    447   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    448   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    449   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    450   1.1.1.7  mrg       type (*), dimension (*) :: a
    451   1.1.1.7  mrg       integer (c_int64_t) len
    452   1.1.1.7  mrg       integer (acc_handle_kind) async
    453   1.1.1.7  mrg     end subroutine
    454   1.1.1.7  mrg 
    455   1.1.1.7  mrg     subroutine acc_delete_async_array_h (a, async)
    456   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    457   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    458   1.1.1.7  mrg       integer (acc_handle_kind) async
    459   1.1.1.7  mrg     end subroutine
    460   1.1.1.7  mrg 
    461   1.1.1.7  mrg     subroutine acc_update_device_async_32_h (a, len, async)
    462   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    463   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    464   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    465   1.1.1.7  mrg       type (*), dimension (*) :: a
    466   1.1.1.7  mrg       integer (c_int32_t) len
    467   1.1.1.7  mrg       integer (acc_handle_kind) async
    468   1.1.1.7  mrg     end subroutine
    469   1.1.1.7  mrg 
    470   1.1.1.7  mrg     subroutine acc_update_device_async_64_h (a, len, async)
    471   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    472   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    473   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    474   1.1.1.7  mrg       type (*), dimension (*) :: a
    475   1.1.1.7  mrg       integer (c_int64_t) len
    476   1.1.1.7  mrg       integer (acc_handle_kind) async
    477   1.1.1.7  mrg     end subroutine
    478   1.1.1.7  mrg 
    479   1.1.1.7  mrg     subroutine acc_update_device_async_array_h (a, async)
    480   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    481   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    482   1.1.1.7  mrg       integer (acc_handle_kind) async
    483   1.1.1.7  mrg     end subroutine
    484   1.1.1.7  mrg 
    485   1.1.1.7  mrg     subroutine acc_update_self_async_32_h (a, len, async)
    486   1.1.1.7  mrg       use iso_c_binding, only: c_int32_t
    487   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    488   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    489   1.1.1.7  mrg       type (*), dimension (*) :: a
    490   1.1.1.7  mrg       integer (c_int32_t) len
    491   1.1.1.7  mrg       integer (acc_handle_kind) async
    492   1.1.1.7  mrg     end subroutine
    493   1.1.1.7  mrg 
    494   1.1.1.7  mrg     subroutine acc_update_self_async_64_h (a, len, async)
    495   1.1.1.7  mrg       use iso_c_binding, only: c_int64_t
    496   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    497   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    498   1.1.1.7  mrg       type (*), dimension (*) :: a
    499   1.1.1.7  mrg       integer (c_int64_t) len
    500   1.1.1.7  mrg       integer (acc_handle_kind) async
    501   1.1.1.7  mrg     end subroutine
    502   1.1.1.7  mrg 
    503   1.1.1.7  mrg     subroutine acc_update_self_async_array_h (a, async)
    504   1.1.1.7  mrg       use openacc_kinds, only: acc_handle_kind
    505   1.1.1.7  mrg       type (*), dimension (..), contiguous :: a
    506   1.1.1.7  mrg       integer (acc_handle_kind) async
    507   1.1.1.7  mrg     end subroutine
    508       1.1  mrg   end interface
    509       1.1  mrg 
    510       1.1  mrg   interface
    511   1.1.1.8  mrg     function acc_get_num_devices_l (devicetype) &
    512       1.1  mrg         bind (C, name = "acc_get_num_devices")
    513       1.1  mrg       use iso_c_binding, only: c_int
    514       1.1  mrg       integer (c_int) :: acc_get_num_devices_l
    515   1.1.1.8  mrg       integer (c_int), value :: devicetype
    516       1.1  mrg     end function
    517       1.1  mrg 
    518   1.1.1.8  mrg     subroutine acc_set_device_type_l (devicetype) &
    519       1.1  mrg         bind (C, name = "acc_set_device_type")
    520       1.1  mrg       use iso_c_binding, only: c_int
    521   1.1.1.8  mrg       integer (c_int), value :: devicetype
    522       1.1  mrg     end subroutine
    523       1.1  mrg 
    524       1.1  mrg     function acc_get_device_type_l () &
    525       1.1  mrg         bind (C, name = "acc_get_device_type")
    526       1.1  mrg       use iso_c_binding, only: c_int
    527       1.1  mrg       integer (c_int) :: acc_get_device_type_l
    528       1.1  mrg     end function
    529       1.1  mrg 
    530   1.1.1.8  mrg     subroutine acc_set_device_num_l (devicenum, devicetype) &
    531       1.1  mrg         bind (C, name = "acc_set_device_num")
    532       1.1  mrg       use iso_c_binding, only: c_int
    533   1.1.1.8  mrg       integer (c_int), value :: devicenum, devicetype
    534       1.1  mrg     end subroutine
    535       1.1  mrg 
    536   1.1.1.8  mrg     function acc_get_device_num_l (devicetype) &
    537       1.1  mrg         bind (C, name = "acc_get_device_num")
    538       1.1  mrg       use iso_c_binding, only: c_int
    539       1.1  mrg       integer (c_int) :: acc_get_device_num_l
    540   1.1.1.8  mrg       integer (c_int), value :: devicetype
    541   1.1.1.8  mrg     end function
    542   1.1.1.8  mrg 
    543   1.1.1.8  mrg     function acc_get_property_l (devicenum, devicetype, property) &
    544   1.1.1.8  mrg         bind (C, name = "acc_get_property")
    545   1.1.1.8  mrg       use iso_c_binding, only: c_int, c_size_t
    546   1.1.1.8  mrg       implicit none (type, external)
    547   1.1.1.8  mrg       integer (c_size_t) :: acc_get_property_l
    548   1.1.1.8  mrg       integer (c_int), value :: devicenum
    549   1.1.1.8  mrg       integer (c_int), value :: devicetype
    550   1.1.1.8  mrg       integer (c_int), value :: property
    551   1.1.1.8  mrg     end function
    552   1.1.1.8  mrg 
    553   1.1.1.8  mrg     function acc_get_property_string_l (devicenum, devicetype, property) &
    554   1.1.1.8  mrg         bind (C, name = "acc_get_property_string")
    555   1.1.1.8  mrg       use iso_c_binding, only: c_int, c_ptr
    556   1.1.1.8  mrg       implicit none (type, external)
    557   1.1.1.8  mrg       type (c_ptr) :: acc_get_property_string_l
    558   1.1.1.8  mrg       integer (c_int), value :: devicenum
    559   1.1.1.8  mrg       integer (c_int), value :: devicetype
    560   1.1.1.8  mrg       integer (c_int), value :: property
    561       1.1  mrg     end function
    562       1.1  mrg 
    563       1.1  mrg     function acc_async_test_l (a) &
    564       1.1  mrg         bind (C, name = "acc_async_test")
    565       1.1  mrg       use iso_c_binding, only: c_int
    566       1.1  mrg       integer (c_int) :: acc_async_test_l
    567       1.1  mrg       integer (c_int), value :: a
    568       1.1  mrg     end function
    569       1.1  mrg 
    570       1.1  mrg     function acc_async_test_all_l () &
    571       1.1  mrg         bind (C, name = "acc_async_test_all")
    572       1.1  mrg       use iso_c_binding, only: c_int
    573       1.1  mrg       integer (c_int) :: acc_async_test_all_l
    574       1.1  mrg     end function
    575       1.1  mrg 
    576       1.1  mrg     subroutine acc_wait_l (a) &
    577       1.1  mrg         bind (C, name = "acc_wait")
    578       1.1  mrg       use iso_c_binding, only: c_int
    579       1.1  mrg       integer (c_int), value :: a
    580       1.1  mrg     end subroutine
    581       1.1  mrg 
    582   1.1.1.8  mrg     subroutine acc_wait_async_l (arg, async) &
    583       1.1  mrg         bind (C, name = "acc_wait_async")
    584       1.1  mrg       use iso_c_binding, only: c_int
    585   1.1.1.8  mrg       integer (c_int), value :: arg, async
    586       1.1  mrg     end subroutine
    587       1.1  mrg 
    588       1.1  mrg     subroutine acc_wait_all_l () &
    589       1.1  mrg         bind (C, name = "acc_wait_all")
    590       1.1  mrg       use iso_c_binding, only: c_int
    591       1.1  mrg     end subroutine
    592       1.1  mrg 
    593   1.1.1.8  mrg     subroutine acc_wait_all_async_l (async) &
    594       1.1  mrg         bind (C, name = "acc_wait_all_async")
    595       1.1  mrg       use iso_c_binding, only: c_int
    596   1.1.1.8  mrg       integer (c_int), value :: async
    597       1.1  mrg     end subroutine
    598       1.1  mrg 
    599   1.1.1.8  mrg     subroutine acc_init_l (devicetype) &
    600       1.1  mrg         bind (C, name = "acc_init")
    601       1.1  mrg       use iso_c_binding, only: c_int
    602   1.1.1.8  mrg       integer (c_int), value :: devicetype
    603       1.1  mrg     end subroutine
    604       1.1  mrg 
    605   1.1.1.8  mrg     subroutine acc_shutdown_l (devicetype) &
    606       1.1  mrg         bind (C, name = "acc_shutdown")
    607       1.1  mrg       use iso_c_binding, only: c_int
    608   1.1.1.8  mrg       integer (c_int), value :: devicetype
    609       1.1  mrg     end subroutine
    610       1.1  mrg 
    611   1.1.1.8  mrg     function acc_on_device_l (devicetype) &
    612       1.1  mrg         bind (C, name = "acc_on_device")
    613       1.1  mrg       use iso_c_binding, only: c_int
    614       1.1  mrg       integer (c_int) :: acc_on_device_l
    615   1.1.1.8  mrg       integer (c_int), value :: devicetype
    616       1.1  mrg     end function
    617       1.1  mrg 
    618       1.1  mrg     subroutine acc_copyin_l (a, len) &
    619       1.1  mrg         bind (C, name = "acc_copyin")
    620       1.1  mrg       use iso_c_binding, only: c_size_t
    621       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    622       1.1  mrg       type (*), dimension (*) :: a
    623       1.1  mrg       integer (c_size_t), value :: len
    624       1.1  mrg     end subroutine
    625       1.1  mrg 
    626       1.1  mrg     subroutine acc_present_or_copyin_l (a, len) &
    627       1.1  mrg         bind (C, name = "acc_present_or_copyin")
    628       1.1  mrg       use iso_c_binding, only: c_size_t
    629       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    630       1.1  mrg       type (*), dimension (*) :: a
    631       1.1  mrg       integer (c_size_t), value :: len
    632       1.1  mrg     end subroutine
    633       1.1  mrg 
    634       1.1  mrg     subroutine acc_create_l (a, len) &
    635       1.1  mrg         bind (C, name = "acc_create")
    636       1.1  mrg       use iso_c_binding, only: c_size_t
    637       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    638       1.1  mrg       type (*), dimension (*) :: a
    639       1.1  mrg       integer (c_size_t), value :: len
    640       1.1  mrg     end subroutine
    641       1.1  mrg 
    642       1.1  mrg     subroutine acc_present_or_create_l (a, len) &
    643       1.1  mrg         bind (C, name = "acc_present_or_create")
    644       1.1  mrg       use iso_c_binding, only: c_size_t
    645       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    646       1.1  mrg       type (*), dimension (*) :: a
    647       1.1  mrg       integer (c_size_t), value :: len
    648       1.1  mrg     end subroutine
    649       1.1  mrg 
    650       1.1  mrg     subroutine acc_copyout_l (a, len) &
    651       1.1  mrg         bind (C, name = "acc_copyout")
    652       1.1  mrg       use iso_c_binding, only: c_size_t
    653       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    654       1.1  mrg       type (*), dimension (*) :: a
    655       1.1  mrg       integer (c_size_t), value :: len
    656       1.1  mrg     end subroutine
    657       1.1  mrg 
    658   1.1.1.7  mrg     subroutine acc_copyout_finalize_l (a, len) &
    659   1.1.1.7  mrg         bind (C, name = "acc_copyout_finalize")
    660   1.1.1.7  mrg       use iso_c_binding, only: c_size_t
    661   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    662   1.1.1.7  mrg       type (*), dimension (*) :: a
    663   1.1.1.7  mrg       integer (c_size_t), value :: len
    664   1.1.1.7  mrg     end subroutine
    665   1.1.1.7  mrg 
    666       1.1  mrg     subroutine acc_delete_l (a, len) &
    667       1.1  mrg         bind (C, name = "acc_delete")
    668       1.1  mrg       use iso_c_binding, only: c_size_t
    669       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    670       1.1  mrg       type (*), dimension (*) :: a
    671       1.1  mrg       integer (c_size_t), value :: len
    672       1.1  mrg     end subroutine
    673       1.1  mrg 
    674   1.1.1.7  mrg     subroutine acc_delete_finalize_l (a, len) &
    675   1.1.1.7  mrg         bind (C, name = "acc_delete_finalize")
    676   1.1.1.7  mrg       use iso_c_binding, only: c_size_t
    677   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    678   1.1.1.7  mrg       type (*), dimension (*) :: a
    679   1.1.1.7  mrg       integer (c_size_t), value :: len
    680   1.1.1.7  mrg     end subroutine
    681   1.1.1.7  mrg 
    682       1.1  mrg     subroutine acc_update_device_l (a, len) &
    683       1.1  mrg         bind (C, name = "acc_update_device")
    684       1.1  mrg       use iso_c_binding, only: c_size_t
    685       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    686       1.1  mrg       type (*), dimension (*) :: a
    687       1.1  mrg       integer (c_size_t), value :: len
    688       1.1  mrg     end subroutine
    689       1.1  mrg 
    690       1.1  mrg     subroutine acc_update_self_l (a, len) &
    691       1.1  mrg         bind (C, name = "acc_update_self")
    692       1.1  mrg       use iso_c_binding, only: c_size_t
    693       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    694       1.1  mrg       type (*), dimension (*) :: a
    695       1.1  mrg       integer (c_size_t), value :: len
    696       1.1  mrg     end subroutine
    697       1.1  mrg 
    698       1.1  mrg     function acc_is_present_l (a, len) &
    699       1.1  mrg         bind (C, name = "acc_is_present")
    700       1.1  mrg       use iso_c_binding, only: c_int32_t, c_size_t
    701       1.1  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    702       1.1  mrg       integer (c_int32_t) :: acc_is_present_l
    703       1.1  mrg       type (*), dimension (*) :: a
    704       1.1  mrg       integer (c_size_t), value :: len
    705       1.1  mrg     end function
    706   1.1.1.7  mrg 
    707   1.1.1.7  mrg     subroutine acc_copyin_async_l (a, len, async) &
    708   1.1.1.7  mrg         bind (C, name = "acc_copyin_async")
    709   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    710   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    711   1.1.1.7  mrg       type (*), dimension (*) :: a
    712   1.1.1.7  mrg       integer (c_size_t), value :: len
    713   1.1.1.7  mrg       integer (c_int), value :: async
    714   1.1.1.7  mrg     end subroutine
    715   1.1.1.7  mrg 
    716   1.1.1.7  mrg     subroutine acc_create_async_l (a, len, async) &
    717   1.1.1.7  mrg         bind (C, name = "acc_create_async")
    718   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    719   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    720   1.1.1.7  mrg       type (*), dimension (*) :: a
    721   1.1.1.7  mrg       integer (c_size_t), value :: len
    722   1.1.1.7  mrg       integer (c_int), value :: async
    723   1.1.1.7  mrg     end subroutine
    724   1.1.1.7  mrg 
    725   1.1.1.7  mrg     subroutine acc_copyout_async_l (a, len, async) &
    726   1.1.1.7  mrg         bind (C, name = "acc_copyout_async")
    727   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    728   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    729   1.1.1.7  mrg       type (*), dimension (*) :: a
    730   1.1.1.7  mrg       integer (c_size_t), value :: len
    731   1.1.1.7  mrg       integer (c_int), value :: async
    732   1.1.1.7  mrg     end subroutine
    733   1.1.1.7  mrg 
    734   1.1.1.7  mrg     subroutine acc_delete_async_l (a, len, async) &
    735   1.1.1.7  mrg         bind (C, name = "acc_delete_async")
    736   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    737   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    738   1.1.1.7  mrg       type (*), dimension (*) :: a
    739   1.1.1.7  mrg       integer (c_size_t), value :: len
    740   1.1.1.7  mrg       integer (c_int), value :: async
    741   1.1.1.7  mrg     end subroutine
    742   1.1.1.7  mrg 
    743   1.1.1.7  mrg     subroutine acc_update_device_async_l (a, len, async) &
    744   1.1.1.7  mrg         bind (C, name = "acc_update_device_async")
    745   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    746   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    747   1.1.1.7  mrg       type (*), dimension (*) :: a
    748   1.1.1.7  mrg       integer (c_size_t), value :: len
    749   1.1.1.7  mrg       integer (c_int), value :: async
    750   1.1.1.7  mrg     end subroutine
    751   1.1.1.7  mrg 
    752   1.1.1.7  mrg     subroutine acc_update_self_async_l (a, len, async) &
    753   1.1.1.7  mrg         bind (C, name = "acc_update_self_async")
    754   1.1.1.7  mrg       use iso_c_binding, only: c_size_t, c_int
    755   1.1.1.7  mrg       !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
    756   1.1.1.7  mrg       type (*), dimension (*) :: a
    757   1.1.1.7  mrg       integer (c_size_t), value :: len
    758   1.1.1.7  mrg       integer (c_int), value :: async
    759   1.1.1.7  mrg     end subroutine
    760       1.1  mrg   end interface
    761   1.1.1.8  mrg end module openacc_internal
    762       1.1  mrg 
    763       1.1  mrg module openacc
    764       1.1  mrg   use openacc_kinds
    765       1.1  mrg   use openacc_internal
    766       1.1  mrg   implicit none
    767       1.1  mrg 
    768   1.1.1.8  mrg   private
    769   1.1.1.8  mrg 
    770   1.1.1.8  mrg   ! From openacc_kinds
    771   1.1.1.8  mrg   public :: acc_device_kind
    772   1.1.1.8  mrg   public :: acc_device_none, acc_device_default, acc_device_host
    773   1.1.1.8  mrg   public :: acc_device_not_host, acc_device_nvidia, acc_device_radeon
    774   1.1.1.8  mrg 
    775   1.1.1.8  mrg   public :: acc_device_property_kind, acc_device_property
    776   1.1.1.8  mrg   public :: acc_property_memory, acc_property_free_memory
    777   1.1.1.8  mrg   public :: acc_property_name, acc_property_vendor, acc_property_driver
    778   1.1.1.8  mrg 
    779   1.1.1.8  mrg   public :: acc_handle_kind
    780   1.1.1.8  mrg   public :: acc_async_noval, acc_async_sync
    781   1.1.1.8  mrg 
    782       1.1  mrg   public :: openacc_version
    783       1.1  mrg 
    784       1.1  mrg   public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type
    785   1.1.1.8  mrg   public :: acc_set_device_num, acc_get_device_num
    786   1.1.1.8  mrg   public :: acc_get_property, acc_get_property_string
    787   1.1.1.8  mrg   public :: acc_async_test, acc_async_test_all
    788   1.1.1.6  mrg   public :: acc_wait, acc_async_wait, acc_wait_async
    789   1.1.1.6  mrg   public :: acc_wait_all, acc_async_wait_all, acc_wait_all_async
    790  1.1.1.10  mrg   public :: acc_init, acc_shutdown, acc_on_device, acc_malloc, acc_free
    791       1.1  mrg   public :: acc_copyin, acc_present_or_copyin, acc_pcopyin, acc_create
    792       1.1  mrg   public :: acc_present_or_create, acc_pcreate, acc_copyout, acc_delete
    793  1.1.1.10  mrg   public :: acc_update_device, acc_update_self, acc_map_data, acc_unmap_data
    794  1.1.1.10  mrg   public :: acc_deviceptr, acc_hostptr, acc_is_present
    795   1.1.1.7  mrg   public :: acc_copyin_async, acc_create_async, acc_copyout_async
    796   1.1.1.7  mrg   public :: acc_delete_async, acc_update_device_async, acc_update_self_async
    797   1.1.1.8  mrg   public :: acc_copyout_finalize, acc_delete_finalize
    798  1.1.1.10  mrg   public :: acc_memcpy_to_device, acc_memcpy_to_device_async
    799  1.1.1.10  mrg   public :: acc_memcpy_from_device, acc_memcpy_from_device_async
    800       1.1  mrg 
    801   1.1.1.8  mrg   integer, parameter :: openacc_version = 201711
    802       1.1  mrg 
    803       1.1  mrg   interface acc_get_num_devices
    804       1.1  mrg     procedure :: acc_get_num_devices_h
    805       1.1  mrg   end interface
    806       1.1  mrg 
    807       1.1  mrg   interface acc_set_device_type
    808       1.1  mrg     procedure :: acc_set_device_type_h
    809       1.1  mrg   end interface
    810       1.1  mrg 
    811       1.1  mrg   interface acc_get_device_type
    812       1.1  mrg     procedure :: acc_get_device_type_h
    813       1.1  mrg   end interface
    814       1.1  mrg 
    815       1.1  mrg   interface acc_set_device_num
    816       1.1  mrg     procedure :: acc_set_device_num_h
    817       1.1  mrg   end interface
    818       1.1  mrg 
    819       1.1  mrg   interface acc_get_device_num
    820       1.1  mrg     procedure :: acc_get_device_num_h
    821       1.1  mrg   end interface
    822       1.1  mrg 
    823   1.1.1.8  mrg   interface acc_get_property
    824   1.1.1.8  mrg     procedure :: acc_get_property_h
    825   1.1.1.8  mrg   end interface
    826   1.1.1.8  mrg 
    827   1.1.1.8  mrg   interface acc_get_property_string
    828   1.1.1.8  mrg     procedure :: acc_get_property_string_h
    829   1.1.1.8  mrg   end interface
    830   1.1.1.8  mrg 
    831       1.1  mrg   interface acc_async_test
    832       1.1  mrg     procedure :: acc_async_test_h
    833       1.1  mrg   end interface
    834       1.1  mrg 
    835       1.1  mrg   interface acc_async_test_all
    836       1.1  mrg     procedure :: acc_async_test_all_h
    837       1.1  mrg   end interface
    838       1.1  mrg 
    839       1.1  mrg   interface acc_wait
    840       1.1  mrg     procedure :: acc_wait_h
    841       1.1  mrg   end interface
    842       1.1  mrg 
    843   1.1.1.6  mrg   ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait.
    844   1.1.1.6  mrg   interface acc_async_wait
    845   1.1.1.6  mrg     procedure :: acc_wait_h
    846   1.1.1.6  mrg   end interface
    847   1.1.1.6  mrg 
    848       1.1  mrg   interface acc_wait_async
    849       1.1  mrg     procedure :: acc_wait_async_h
    850       1.1  mrg   end interface
    851       1.1  mrg 
    852       1.1  mrg   interface acc_wait_all
    853       1.1  mrg     procedure :: acc_wait_all_h
    854       1.1  mrg   end interface
    855       1.1  mrg 
    856   1.1.1.6  mrg   ! acc_async_wait_all is an OpenACC 1.0 compatibility name for acc_wait_all.
    857   1.1.1.6  mrg   interface acc_async_wait_all
    858   1.1.1.6  mrg     procedure :: acc_wait_all_h
    859   1.1.1.6  mrg   end interface
    860   1.1.1.6  mrg 
    861       1.1  mrg   interface acc_wait_all_async
    862       1.1  mrg     procedure :: acc_wait_all_async_h
    863       1.1  mrg   end interface
    864       1.1  mrg 
    865       1.1  mrg   interface acc_init
    866       1.1  mrg     procedure :: acc_init_h
    867       1.1  mrg   end interface
    868       1.1  mrg 
    869       1.1  mrg   interface acc_shutdown
    870       1.1  mrg     procedure :: acc_shutdown_h
    871       1.1  mrg   end interface
    872       1.1  mrg 
    873       1.1  mrg   interface acc_on_device
    874       1.1  mrg     procedure :: acc_on_device_h
    875       1.1  mrg   end interface
    876       1.1  mrg 
    877  1.1.1.10  mrg   interface
    878  1.1.1.10  mrg     type(c_ptr) function acc_malloc (bytes) bind(C)
    879  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
    880  1.1.1.10  mrg       integer(c_size_t), value :: bytes
    881  1.1.1.10  mrg     end function
    882  1.1.1.10  mrg   end interface
    883  1.1.1.10  mrg 
    884  1.1.1.10  mrg   interface
    885  1.1.1.10  mrg     subroutine acc_free (data_dev) bind(C)
    886  1.1.1.10  mrg       use iso_c_binding, only: c_ptr
    887  1.1.1.10  mrg       type(c_ptr), value :: data_dev
    888  1.1.1.10  mrg     end subroutine
    889  1.1.1.10  mrg   end interface
    890       1.1  mrg 
    891       1.1  mrg   ! As vendor extension, the following code supports both 32bit and 64bit
    892       1.1  mrg   ! arguments for "size"; the OpenACC standard only permits default-kind
    893       1.1  mrg   ! integers, which are of kind 4 (i.e. 32 bits).
    894       1.1  mrg   ! Additionally, the two-argument version also takes arrays as argument.
    895       1.1  mrg   ! and the one argument version also scalars. Note that the code assumes
    896       1.1  mrg   ! that the arrays are contiguous.
    897       1.1  mrg 
    898       1.1  mrg   interface acc_copyin
    899       1.1  mrg     procedure :: acc_copyin_32_h
    900       1.1  mrg     procedure :: acc_copyin_64_h
    901       1.1  mrg     procedure :: acc_copyin_array_h
    902       1.1  mrg   end interface
    903       1.1  mrg 
    904       1.1  mrg   interface acc_present_or_copyin
    905       1.1  mrg     procedure :: acc_present_or_copyin_32_h
    906       1.1  mrg     procedure :: acc_present_or_copyin_64_h
    907       1.1  mrg     procedure :: acc_present_or_copyin_array_h
    908       1.1  mrg   end interface
    909       1.1  mrg 
    910       1.1  mrg   interface acc_pcopyin
    911       1.1  mrg     procedure :: acc_present_or_copyin_32_h
    912       1.1  mrg     procedure :: acc_present_or_copyin_64_h
    913       1.1  mrg     procedure :: acc_present_or_copyin_array_h
    914       1.1  mrg   end interface
    915       1.1  mrg 
    916       1.1  mrg   interface acc_create
    917       1.1  mrg     procedure :: acc_create_32_h
    918       1.1  mrg     procedure :: acc_create_64_h
    919       1.1  mrg     procedure :: acc_create_array_h
    920       1.1  mrg   end interface
    921       1.1  mrg 
    922       1.1  mrg   interface acc_present_or_create
    923       1.1  mrg     procedure :: acc_present_or_create_32_h
    924       1.1  mrg     procedure :: acc_present_or_create_64_h
    925       1.1  mrg     procedure :: acc_present_or_create_array_h
    926       1.1  mrg   end interface
    927       1.1  mrg 
    928       1.1  mrg   interface acc_pcreate
    929       1.1  mrg     procedure :: acc_present_or_create_32_h
    930       1.1  mrg     procedure :: acc_present_or_create_64_h
    931       1.1  mrg     procedure :: acc_present_or_create_array_h
    932       1.1  mrg   end interface
    933       1.1  mrg 
    934       1.1  mrg   interface acc_copyout
    935       1.1  mrg     procedure :: acc_copyout_32_h
    936       1.1  mrg     procedure :: acc_copyout_64_h
    937       1.1  mrg     procedure :: acc_copyout_array_h
    938       1.1  mrg   end interface
    939       1.1  mrg 
    940   1.1.1.7  mrg   interface acc_copyout_finalize
    941   1.1.1.7  mrg     procedure :: acc_copyout_finalize_32_h
    942   1.1.1.7  mrg     procedure :: acc_copyout_finalize_64_h
    943   1.1.1.7  mrg     procedure :: acc_copyout_finalize_array_h
    944   1.1.1.7  mrg   end interface
    945   1.1.1.7  mrg 
    946       1.1  mrg   interface acc_delete
    947       1.1  mrg     procedure :: acc_delete_32_h
    948       1.1  mrg     procedure :: acc_delete_64_h
    949       1.1  mrg     procedure :: acc_delete_array_h
    950       1.1  mrg   end interface
    951       1.1  mrg 
    952   1.1.1.7  mrg   interface acc_delete_finalize
    953   1.1.1.7  mrg     procedure :: acc_delete_finalize_32_h
    954   1.1.1.7  mrg     procedure :: acc_delete_finalize_64_h
    955   1.1.1.7  mrg     procedure :: acc_delete_finalize_array_h
    956   1.1.1.7  mrg   end interface
    957   1.1.1.7  mrg 
    958       1.1  mrg   interface acc_update_device
    959       1.1  mrg     procedure :: acc_update_device_32_h
    960       1.1  mrg     procedure :: acc_update_device_64_h
    961       1.1  mrg     procedure :: acc_update_device_array_h
    962       1.1  mrg   end interface
    963       1.1  mrg 
    964       1.1  mrg   interface acc_update_self
    965       1.1  mrg     procedure :: acc_update_self_32_h
    966       1.1  mrg     procedure :: acc_update_self_64_h
    967       1.1  mrg     procedure :: acc_update_self_array_h
    968       1.1  mrg   end interface
    969       1.1  mrg 
    970  1.1.1.10  mrg   interface
    971  1.1.1.10  mrg     subroutine acc_map_data (data_arg, data_dev, bytes) bind(C)
    972  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
    973  1.1.1.10  mrg       type(*), dimension(*) :: data_arg
    974  1.1.1.10  mrg       type(c_ptr), value :: data_dev
    975  1.1.1.10  mrg       integer(c_size_t), value :: bytes
    976  1.1.1.10  mrg     end subroutine
    977  1.1.1.10  mrg   end interface
    978  1.1.1.10  mrg 
    979  1.1.1.10  mrg   interface
    980  1.1.1.10  mrg     subroutine acc_unmap_data (data_arg) bind(C)
    981  1.1.1.10  mrg       type(*), dimension(*) :: data_arg
    982  1.1.1.10  mrg     end subroutine
    983  1.1.1.10  mrg   end interface
    984  1.1.1.10  mrg 
    985  1.1.1.10  mrg   interface
    986  1.1.1.10  mrg     type(c_ptr) function acc_deviceptr (data_arg) bind(C)
    987  1.1.1.10  mrg       use iso_c_binding, only: c_ptr
    988  1.1.1.10  mrg       type(*), dimension(*) :: data_arg
    989  1.1.1.10  mrg     end function
    990  1.1.1.10  mrg   end interface
    991  1.1.1.10  mrg 
    992  1.1.1.10  mrg   interface
    993  1.1.1.10  mrg     type(c_ptr) function acc_hostptr (data_dev) bind(C)
    994  1.1.1.10  mrg       use iso_c_binding, only: c_ptr
    995  1.1.1.10  mrg       type(c_ptr), value :: data_dev
    996  1.1.1.10  mrg     end function
    997  1.1.1.10  mrg   end interface
    998       1.1  mrg 
    999       1.1  mrg   interface acc_is_present
   1000       1.1  mrg     procedure :: acc_is_present_32_h
   1001       1.1  mrg     procedure :: acc_is_present_64_h
   1002       1.1  mrg     procedure :: acc_is_present_array_h
   1003       1.1  mrg   end interface
   1004       1.1  mrg 
   1005  1.1.1.10  mrg   interface
   1006  1.1.1.10  mrg     subroutine acc_memcpy_to_device (data_dev_dest, data_host_src,  &
   1007  1.1.1.10  mrg                                      bytes) bind(C)
   1008  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
   1009  1.1.1.10  mrg       type(c_ptr), value :: data_dev_dest
   1010  1.1.1.10  mrg       type(*),dimension(*) :: data_host_src
   1011  1.1.1.10  mrg       integer(c_size_t), value :: bytes
   1012  1.1.1.10  mrg     end subroutine
   1013  1.1.1.10  mrg   end interface
   1014  1.1.1.10  mrg 
   1015  1.1.1.10  mrg   interface
   1016  1.1.1.10  mrg     subroutine acc_memcpy_to_device_async (data_dev_dest, data_host_src,  &
   1017  1.1.1.10  mrg                                            bytes, async_arg) bind(C)
   1018  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
   1019  1.1.1.10  mrg       import :: acc_handle_kind
   1020  1.1.1.10  mrg       type(c_ptr), value :: data_dev_dest
   1021  1.1.1.10  mrg       type(*),dimension(*) :: data_host_src
   1022  1.1.1.10  mrg       integer(c_size_t), value :: bytes
   1023  1.1.1.10  mrg       integer(acc_handle_kind), value :: async_arg
   1024  1.1.1.10  mrg     end subroutine
   1025  1.1.1.10  mrg   end interface
   1026  1.1.1.10  mrg 
   1027  1.1.1.10  mrg   interface
   1028  1.1.1.10  mrg     subroutine acc_memcpy_from_device (data_host_dest, data_dev_src,  &
   1029  1.1.1.10  mrg                                        bytes) bind(C)
   1030  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
   1031  1.1.1.10  mrg       type(*),dimension(*) :: data_host_dest
   1032  1.1.1.10  mrg       type(c_ptr), value :: data_dev_src
   1033  1.1.1.10  mrg       integer(c_size_t), value :: bytes
   1034  1.1.1.10  mrg     end subroutine
   1035  1.1.1.10  mrg   end interface
   1036  1.1.1.10  mrg 
   1037  1.1.1.10  mrg   interface
   1038  1.1.1.10  mrg     subroutine acc_memcpy_from_device_async (data_host_dest, data_dev_src,  &
   1039  1.1.1.10  mrg                                              bytes, async_arg) bind(C)
   1040  1.1.1.10  mrg       use iso_c_binding, only: c_ptr, c_size_t
   1041  1.1.1.10  mrg       import :: acc_handle_kind
   1042  1.1.1.10  mrg       type(*),dimension(*) :: data_host_dest
   1043  1.1.1.10  mrg       type(c_ptr), value :: data_dev_src
   1044  1.1.1.10  mrg       integer(c_size_t), value :: bytes
   1045  1.1.1.10  mrg       integer(acc_handle_kind), value :: async_arg
   1046  1.1.1.10  mrg     end subroutine
   1047  1.1.1.10  mrg   end interface
   1048       1.1  mrg 
   1049   1.1.1.7  mrg   interface acc_copyin_async
   1050   1.1.1.7  mrg     procedure :: acc_copyin_async_32_h
   1051   1.1.1.7  mrg     procedure :: acc_copyin_async_64_h
   1052   1.1.1.7  mrg     procedure :: acc_copyin_async_array_h
   1053   1.1.1.7  mrg   end interface
   1054   1.1.1.7  mrg 
   1055   1.1.1.7  mrg   interface acc_create_async
   1056   1.1.1.7  mrg     procedure :: acc_create_async_32_h
   1057   1.1.1.7  mrg     procedure :: acc_create_async_64_h
   1058   1.1.1.7  mrg     procedure :: acc_create_async_array_h
   1059   1.1.1.7  mrg   end interface
   1060   1.1.1.7  mrg 
   1061   1.1.1.7  mrg   interface acc_copyout_async
   1062   1.1.1.7  mrg     procedure :: acc_copyout_async_32_h
   1063   1.1.1.7  mrg     procedure :: acc_copyout_async_64_h
   1064   1.1.1.7  mrg     procedure :: acc_copyout_async_array_h
   1065   1.1.1.7  mrg   end interface
   1066   1.1.1.7  mrg 
   1067   1.1.1.7  mrg   interface acc_delete_async
   1068   1.1.1.7  mrg     procedure :: acc_delete_async_32_h
   1069   1.1.1.7  mrg     procedure :: acc_delete_async_64_h
   1070   1.1.1.7  mrg     procedure :: acc_delete_async_array_h
   1071   1.1.1.7  mrg   end interface
   1072   1.1.1.7  mrg 
   1073   1.1.1.7  mrg   interface acc_update_device_async
   1074   1.1.1.7  mrg     procedure :: acc_update_device_async_32_h
   1075   1.1.1.7  mrg     procedure :: acc_update_device_async_64_h
   1076   1.1.1.7  mrg     procedure :: acc_update_device_async_array_h
   1077   1.1.1.7  mrg   end interface
   1078   1.1.1.7  mrg 
   1079   1.1.1.7  mrg   interface acc_update_self_async
   1080   1.1.1.7  mrg     procedure :: acc_update_self_async_32_h
   1081   1.1.1.7  mrg     procedure :: acc_update_self_async_64_h
   1082   1.1.1.7  mrg     procedure :: acc_update_self_async_array_h
   1083   1.1.1.7  mrg   end interface
   1084   1.1.1.7  mrg 
   1085   1.1.1.8  mrg end module openacc
   1086       1.1  mrg 
   1087   1.1.1.8  mrg function acc_get_num_devices_h (devicetype)
   1088       1.1  mrg   use openacc_internal, only: acc_get_num_devices_l
   1089       1.1  mrg   use openacc_kinds
   1090       1.1  mrg   integer acc_get_num_devices_h
   1091   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1092   1.1.1.8  mrg   acc_get_num_devices_h = acc_get_num_devices_l (devicetype)
   1093       1.1  mrg end function
   1094       1.1  mrg 
   1095   1.1.1.8  mrg subroutine acc_set_device_type_h (devicetype)
   1096       1.1  mrg   use openacc_internal, only: acc_set_device_type_l
   1097       1.1  mrg   use openacc_kinds
   1098   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1099   1.1.1.8  mrg   call acc_set_device_type_l (devicetype)
   1100       1.1  mrg end subroutine
   1101       1.1  mrg 
   1102       1.1  mrg function acc_get_device_type_h ()
   1103       1.1  mrg   use openacc_internal, only: acc_get_device_type_l
   1104       1.1  mrg   use openacc_kinds
   1105       1.1  mrg   integer (acc_device_kind) acc_get_device_type_h
   1106       1.1  mrg   acc_get_device_type_h = acc_get_device_type_l ()
   1107       1.1  mrg end function
   1108       1.1  mrg 
   1109   1.1.1.8  mrg subroutine acc_set_device_num_h (devicenum, devicetype)
   1110       1.1  mrg   use openacc_internal, only: acc_set_device_num_l
   1111       1.1  mrg   use openacc_kinds
   1112   1.1.1.8  mrg   integer devicenum
   1113   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1114   1.1.1.8  mrg   call acc_set_device_num_l (devicenum, devicetype)
   1115       1.1  mrg end subroutine
   1116       1.1  mrg 
   1117   1.1.1.8  mrg function acc_get_device_num_h (devicetype)
   1118       1.1  mrg   use openacc_internal, only: acc_get_device_num_l
   1119       1.1  mrg   use openacc_kinds
   1120       1.1  mrg   integer acc_get_device_num_h
   1121   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1122   1.1.1.8  mrg   acc_get_device_num_h = acc_get_device_num_l (devicetype)
   1123   1.1.1.8  mrg end function
   1124   1.1.1.8  mrg 
   1125   1.1.1.8  mrg function acc_get_property_h (devicenum, devicetype, property)
   1126   1.1.1.8  mrg   use iso_c_binding, only: c_size_t
   1127   1.1.1.8  mrg   use openacc_internal, only: acc_get_property_l
   1128   1.1.1.8  mrg   use openacc_kinds
   1129   1.1.1.8  mrg   implicit none (type, external)
   1130   1.1.1.8  mrg   integer (c_size_t) :: acc_get_property_h
   1131   1.1.1.8  mrg   integer, value :: devicenum
   1132   1.1.1.8  mrg   integer (acc_device_kind), value :: devicetype
   1133   1.1.1.8  mrg   integer (acc_device_property_kind), value :: property
   1134   1.1.1.8  mrg   acc_get_property_h = acc_get_property_l (devicenum, devicetype, property)
   1135       1.1  mrg end function
   1136       1.1  mrg 
   1137   1.1.1.8  mrg subroutine acc_get_property_string_h (devicenum, devicetype, property, string)
   1138   1.1.1.8  mrg   use iso_c_binding, only: c_char, c_size_t, c_ptr, c_f_pointer, c_associated
   1139   1.1.1.8  mrg   use openacc_internal, only: acc_get_property_string_l
   1140   1.1.1.8  mrg   use openacc_kinds
   1141   1.1.1.8  mrg   implicit none (type, external)
   1142   1.1.1.8  mrg   integer, value :: devicenum
   1143   1.1.1.8  mrg   integer (acc_device_kind), value :: devicetype
   1144   1.1.1.8  mrg   integer (acc_device_property_kind), value :: property
   1145   1.1.1.8  mrg   character (*) :: string
   1146   1.1.1.8  mrg 
   1147   1.1.1.8  mrg   type (c_ptr) :: cptr
   1148   1.1.1.8  mrg   integer(c_size_t) :: clen, slen, i
   1149   1.1.1.8  mrg   character (kind=c_char, len=1), pointer, contiguous :: sptr (:)
   1150   1.1.1.8  mrg 
   1151   1.1.1.8  mrg   interface
   1152   1.1.1.8  mrg      function strlen (s) bind (C, name = "strlen")
   1153   1.1.1.8  mrg        use iso_c_binding, only: c_ptr, c_size_t
   1154   1.1.1.8  mrg        type (c_ptr), intent(in), value :: s
   1155   1.1.1.8  mrg        integer (c_size_t) :: strlen
   1156   1.1.1.8  mrg      end function strlen
   1157   1.1.1.8  mrg   end interface
   1158   1.1.1.8  mrg 
   1159   1.1.1.8  mrg   cptr = acc_get_property_string_l (devicenum, devicetype, property)
   1160   1.1.1.8  mrg   string = ""
   1161   1.1.1.8  mrg   if (.not. c_associated (cptr)) then
   1162   1.1.1.8  mrg      return
   1163   1.1.1.8  mrg   end if
   1164   1.1.1.8  mrg 
   1165   1.1.1.8  mrg   clen = strlen (cptr)
   1166   1.1.1.8  mrg   call c_f_pointer (cptr, sptr, [clen])
   1167   1.1.1.8  mrg 
   1168   1.1.1.8  mrg   slen = min (clen, len (string, kind=c_size_t))
   1169   1.1.1.8  mrg   do i = 1, slen
   1170   1.1.1.8  mrg     string (i:i) = sptr (i)
   1171   1.1.1.8  mrg   end do
   1172   1.1.1.8  mrg end subroutine
   1173   1.1.1.8  mrg 
   1174   1.1.1.8  mrg function acc_async_test_h (arg)
   1175       1.1  mrg   use openacc_internal, only: acc_async_test_l
   1176       1.1  mrg   logical acc_async_test_h
   1177   1.1.1.8  mrg   integer arg
   1178   1.1.1.8  mrg   acc_async_test_h = acc_async_test_l (arg) /= 0
   1179       1.1  mrg end function
   1180       1.1  mrg 
   1181       1.1  mrg function acc_async_test_all_h ()
   1182       1.1  mrg   use openacc_internal, only: acc_async_test_all_l
   1183       1.1  mrg   logical acc_async_test_all_h
   1184   1.1.1.8  mrg   acc_async_test_all_h = acc_async_test_all_l () /= 0
   1185       1.1  mrg end function
   1186       1.1  mrg 
   1187   1.1.1.8  mrg subroutine acc_wait_h (arg)
   1188       1.1  mrg   use openacc_internal, only: acc_wait_l
   1189   1.1.1.8  mrg   integer arg
   1190   1.1.1.8  mrg   call acc_wait_l (arg)
   1191       1.1  mrg end subroutine
   1192       1.1  mrg 
   1193   1.1.1.8  mrg subroutine acc_wait_async_h (arg, async)
   1194       1.1  mrg   use openacc_internal, only: acc_wait_async_l
   1195   1.1.1.8  mrg   integer arg, async
   1196   1.1.1.8  mrg   call acc_wait_async_l (arg, async)
   1197       1.1  mrg end subroutine
   1198       1.1  mrg 
   1199       1.1  mrg subroutine acc_wait_all_h ()
   1200       1.1  mrg   use openacc_internal, only: acc_wait_all_l
   1201       1.1  mrg   call acc_wait_all_l ()
   1202       1.1  mrg end subroutine
   1203       1.1  mrg 
   1204   1.1.1.8  mrg subroutine acc_wait_all_async_h (async)
   1205       1.1  mrg   use openacc_internal, only: acc_wait_all_async_l
   1206   1.1.1.8  mrg   integer async
   1207   1.1.1.8  mrg   call acc_wait_all_async_l (async)
   1208       1.1  mrg end subroutine
   1209       1.1  mrg 
   1210   1.1.1.8  mrg subroutine acc_init_h (devicetype)
   1211       1.1  mrg   use openacc_internal, only: acc_init_l
   1212       1.1  mrg   use openacc_kinds
   1213   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1214   1.1.1.8  mrg   call acc_init_l (devicetype)
   1215       1.1  mrg end subroutine
   1216       1.1  mrg 
   1217   1.1.1.8  mrg subroutine acc_shutdown_h (devicetype)
   1218       1.1  mrg   use openacc_internal, only: acc_shutdown_l
   1219       1.1  mrg   use openacc_kinds
   1220   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1221   1.1.1.8  mrg   call acc_shutdown_l (devicetype)
   1222       1.1  mrg end subroutine
   1223       1.1  mrg 
   1224   1.1.1.8  mrg function acc_on_device_h (devicetype)
   1225       1.1  mrg   use openacc_internal, only: acc_on_device_l
   1226       1.1  mrg   use openacc_kinds
   1227   1.1.1.8  mrg   integer (acc_device_kind) devicetype
   1228       1.1  mrg   logical acc_on_device_h
   1229   1.1.1.8  mrg   acc_on_device_h = acc_on_device_l (devicetype) /= 0
   1230       1.1  mrg end function
   1231       1.1  mrg 
   1232       1.1  mrg subroutine acc_copyin_32_h (a, len)
   1233       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1234       1.1  mrg   use openacc_internal, only: acc_copyin_l
   1235       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1236       1.1  mrg   type (*), dimension (*) :: a
   1237       1.1  mrg   integer (c_int32_t) len
   1238       1.1  mrg   call acc_copyin_l (a, int (len, kind = c_size_t))
   1239       1.1  mrg end subroutine
   1240       1.1  mrg 
   1241       1.1  mrg subroutine acc_copyin_64_h (a, len)
   1242       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1243       1.1  mrg   use openacc_internal, only: acc_copyin_l
   1244       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1245       1.1  mrg   type (*), dimension (*) :: a
   1246       1.1  mrg   integer (c_int64_t) len
   1247       1.1  mrg   call acc_copyin_l (a, int (len, kind = c_size_t))
   1248       1.1  mrg end subroutine
   1249       1.1  mrg 
   1250       1.1  mrg subroutine acc_copyin_array_h (a)
   1251       1.1  mrg   use openacc_internal, only: acc_copyin_l
   1252       1.1  mrg   type (*), dimension (..), contiguous :: a
   1253       1.1  mrg   call acc_copyin_l (a, sizeof (a))
   1254       1.1  mrg end subroutine
   1255       1.1  mrg 
   1256       1.1  mrg subroutine acc_present_or_copyin_32_h (a, len)
   1257       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1258       1.1  mrg   use openacc_internal, only: acc_present_or_copyin_l
   1259       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1260       1.1  mrg   type (*), dimension (*) :: a
   1261       1.1  mrg   integer (c_int32_t) len
   1262       1.1  mrg   call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
   1263       1.1  mrg end subroutine
   1264       1.1  mrg 
   1265       1.1  mrg subroutine acc_present_or_copyin_64_h (a, len)
   1266       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1267       1.1  mrg   use openacc_internal, only: acc_present_or_copyin_l
   1268       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1269       1.1  mrg   type (*), dimension (*) :: a
   1270       1.1  mrg   integer (c_int64_t) len
   1271       1.1  mrg   call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
   1272       1.1  mrg end subroutine
   1273       1.1  mrg 
   1274       1.1  mrg subroutine acc_present_or_copyin_array_h (a)
   1275       1.1  mrg   use openacc_internal, only: acc_present_or_copyin_l
   1276       1.1  mrg   type (*), dimension (..), contiguous :: a
   1277       1.1  mrg   call acc_present_or_copyin_l (a, sizeof (a))
   1278       1.1  mrg end subroutine
   1279       1.1  mrg 
   1280       1.1  mrg subroutine acc_create_32_h (a, len)
   1281       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1282       1.1  mrg   use openacc_internal, only: acc_create_l
   1283       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1284       1.1  mrg   type (*), dimension (*) :: a
   1285       1.1  mrg   integer (c_int32_t) len
   1286       1.1  mrg   call acc_create_l (a, int (len, kind = c_size_t))
   1287       1.1  mrg end subroutine
   1288       1.1  mrg 
   1289       1.1  mrg subroutine acc_create_64_h (a, len)
   1290       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1291       1.1  mrg   use openacc_internal, only: acc_create_l
   1292       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1293       1.1  mrg   type (*), dimension (*) :: a
   1294       1.1  mrg   integer (c_int64_t) len
   1295       1.1  mrg   call acc_create_l (a, int (len, kind = c_size_t))
   1296       1.1  mrg end subroutine
   1297       1.1  mrg 
   1298       1.1  mrg subroutine acc_create_array_h (a)
   1299       1.1  mrg   use openacc_internal, only: acc_create_l
   1300       1.1  mrg   type (*), dimension (..), contiguous :: a
   1301       1.1  mrg   call acc_create_l (a, sizeof (a))
   1302       1.1  mrg end subroutine
   1303       1.1  mrg 
   1304       1.1  mrg subroutine acc_present_or_create_32_h (a, len)
   1305       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1306       1.1  mrg   use openacc_internal, only: acc_present_or_create_l
   1307       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1308       1.1  mrg   type (*), dimension (*) :: a
   1309       1.1  mrg   integer (c_int32_t) len
   1310       1.1  mrg   call acc_present_or_create_l (a, int (len, kind = c_size_t))
   1311       1.1  mrg end subroutine
   1312       1.1  mrg 
   1313       1.1  mrg subroutine acc_present_or_create_64_h (a, len)
   1314       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1315       1.1  mrg   use openacc_internal, only: acc_present_or_create_l
   1316       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1317       1.1  mrg   type (*), dimension (*) :: a
   1318       1.1  mrg   integer (c_int64_t) len
   1319       1.1  mrg   call acc_present_or_create_l (a, int (len, kind = c_size_t))
   1320       1.1  mrg end subroutine
   1321       1.1  mrg 
   1322       1.1  mrg subroutine acc_present_or_create_array_h (a)
   1323       1.1  mrg   use openacc_internal, only: acc_present_or_create_l
   1324       1.1  mrg   type (*), dimension (..), contiguous :: a
   1325       1.1  mrg   call acc_present_or_create_l (a, sizeof (a))
   1326       1.1  mrg end subroutine
   1327       1.1  mrg 
   1328       1.1  mrg subroutine acc_copyout_32_h (a, len)
   1329       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1330       1.1  mrg   use openacc_internal, only: acc_copyout_l
   1331       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1332       1.1  mrg   type (*), dimension (*) :: a
   1333       1.1  mrg   integer (c_int32_t) len
   1334       1.1  mrg   call acc_copyout_l (a, int (len, kind = c_size_t))
   1335       1.1  mrg end subroutine
   1336       1.1  mrg 
   1337       1.1  mrg subroutine acc_copyout_64_h (a, len)
   1338       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1339       1.1  mrg   use openacc_internal, only: acc_copyout_l
   1340       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1341       1.1  mrg   type (*), dimension (*) :: a
   1342       1.1  mrg   integer (c_int64_t) len
   1343       1.1  mrg   call acc_copyout_l (a, int (len, kind = c_size_t))
   1344       1.1  mrg end subroutine
   1345       1.1  mrg 
   1346       1.1  mrg subroutine acc_copyout_array_h (a)
   1347       1.1  mrg   use openacc_internal, only: acc_copyout_l
   1348       1.1  mrg   type (*), dimension (..), contiguous :: a
   1349       1.1  mrg   call acc_copyout_l (a, sizeof (a))
   1350       1.1  mrg end subroutine
   1351       1.1  mrg 
   1352   1.1.1.7  mrg subroutine acc_copyout_finalize_32_h (a, len)
   1353   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1354   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_finalize_l
   1355   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1356   1.1.1.7  mrg   type (*), dimension (*) :: a
   1357   1.1.1.7  mrg   integer (c_int32_t) len
   1358   1.1.1.7  mrg   call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
   1359   1.1.1.7  mrg end subroutine
   1360   1.1.1.7  mrg 
   1361   1.1.1.7  mrg subroutine acc_copyout_finalize_64_h (a, len)
   1362   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1363   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_finalize_l
   1364   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1365   1.1.1.7  mrg   type (*), dimension (*) :: a
   1366   1.1.1.7  mrg   integer (c_int64_t) len
   1367   1.1.1.7  mrg   call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
   1368   1.1.1.7  mrg end subroutine
   1369   1.1.1.7  mrg 
   1370   1.1.1.7  mrg subroutine acc_copyout_finalize_array_h (a)
   1371   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_finalize_l
   1372   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1373   1.1.1.7  mrg   call acc_copyout_finalize_l (a, sizeof (a))
   1374   1.1.1.7  mrg end subroutine
   1375   1.1.1.7  mrg 
   1376       1.1  mrg subroutine acc_delete_32_h (a, len)
   1377       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1378       1.1  mrg   use openacc_internal, only: acc_delete_l
   1379       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1380       1.1  mrg   type (*), dimension (*) :: a
   1381       1.1  mrg   integer (c_int32_t) len
   1382       1.1  mrg   call acc_delete_l (a, int (len, kind = c_size_t))
   1383       1.1  mrg end subroutine
   1384       1.1  mrg 
   1385       1.1  mrg subroutine acc_delete_64_h (a, len)
   1386       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1387       1.1  mrg   use openacc_internal, only: acc_delete_l
   1388       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1389       1.1  mrg   type (*), dimension (*) :: a
   1390       1.1  mrg   integer (c_int64_t) len
   1391       1.1  mrg   call acc_delete_l (a, int (len, kind = c_size_t))
   1392       1.1  mrg end subroutine
   1393       1.1  mrg 
   1394       1.1  mrg subroutine acc_delete_array_h (a)
   1395       1.1  mrg   use openacc_internal, only: acc_delete_l
   1396       1.1  mrg   type (*), dimension (..), contiguous :: a
   1397       1.1  mrg   call acc_delete_l (a, sizeof (a))
   1398       1.1  mrg end subroutine
   1399       1.1  mrg 
   1400   1.1.1.7  mrg subroutine acc_delete_finalize_32_h (a, len)
   1401   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1402   1.1.1.7  mrg   use openacc_internal, only: acc_delete_finalize_l
   1403   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1404   1.1.1.7  mrg   type (*), dimension (*) :: a
   1405   1.1.1.7  mrg   integer (c_int32_t) len
   1406   1.1.1.7  mrg   call acc_delete_finalize_l (a, int (len, kind = c_size_t))
   1407   1.1.1.7  mrg end subroutine
   1408   1.1.1.7  mrg 
   1409   1.1.1.7  mrg subroutine acc_delete_finalize_64_h (a, len)
   1410   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1411   1.1.1.7  mrg   use openacc_internal, only: acc_delete_finalize_l
   1412   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1413   1.1.1.7  mrg   type (*), dimension (*) :: a
   1414   1.1.1.7  mrg   integer (c_int64_t) len
   1415   1.1.1.7  mrg   call acc_delete_finalize_l (a, int (len, kind = c_size_t))
   1416   1.1.1.7  mrg end subroutine
   1417   1.1.1.7  mrg 
   1418   1.1.1.7  mrg subroutine acc_delete_finalize_array_h (a)
   1419   1.1.1.7  mrg   use openacc_internal, only: acc_delete_finalize_l
   1420   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1421   1.1.1.7  mrg   call acc_delete_finalize_l (a, sizeof (a))
   1422   1.1.1.7  mrg end subroutine
   1423   1.1.1.7  mrg 
   1424       1.1  mrg subroutine acc_update_device_32_h (a, len)
   1425       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1426       1.1  mrg   use openacc_internal, only: acc_update_device_l
   1427       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1428       1.1  mrg   type (*), dimension (*) :: a
   1429       1.1  mrg   integer (c_int32_t) len
   1430       1.1  mrg   call acc_update_device_l (a, int (len, kind = c_size_t))
   1431       1.1  mrg end subroutine
   1432       1.1  mrg 
   1433       1.1  mrg subroutine acc_update_device_64_h (a, len)
   1434       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1435       1.1  mrg   use openacc_internal, only: acc_update_device_l
   1436       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1437       1.1  mrg   type (*), dimension (*) :: a
   1438       1.1  mrg   integer (c_int64_t) len
   1439       1.1  mrg   call acc_update_device_l (a, int (len, kind = c_size_t))
   1440       1.1  mrg end subroutine
   1441       1.1  mrg 
   1442       1.1  mrg subroutine acc_update_device_array_h (a)
   1443       1.1  mrg   use openacc_internal, only: acc_update_device_l
   1444       1.1  mrg   type (*), dimension (..), contiguous :: a
   1445       1.1  mrg   call acc_update_device_l (a, sizeof (a))
   1446       1.1  mrg end subroutine
   1447       1.1  mrg 
   1448       1.1  mrg subroutine acc_update_self_32_h (a, len)
   1449       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1450       1.1  mrg   use openacc_internal, only: acc_update_self_l
   1451       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1452       1.1  mrg   type (*), dimension (*) :: a
   1453       1.1  mrg   integer (c_int32_t) len
   1454       1.1  mrg   call acc_update_self_l (a, int (len, kind = c_size_t))
   1455       1.1  mrg end subroutine
   1456       1.1  mrg 
   1457       1.1  mrg subroutine acc_update_self_64_h (a, len)
   1458       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1459       1.1  mrg   use openacc_internal, only: acc_update_self_l
   1460       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1461       1.1  mrg   type (*), dimension (*) :: a
   1462       1.1  mrg   integer (c_int64_t) len
   1463       1.1  mrg   call acc_update_self_l (a, int (len, kind = c_size_t))
   1464       1.1  mrg end subroutine
   1465       1.1  mrg 
   1466       1.1  mrg subroutine acc_update_self_array_h (a)
   1467       1.1  mrg   use openacc_internal, only: acc_update_self_l
   1468       1.1  mrg   type (*), dimension (..), contiguous :: a
   1469       1.1  mrg   call acc_update_self_l (a, sizeof (a))
   1470       1.1  mrg end subroutine
   1471       1.1  mrg 
   1472       1.1  mrg function acc_is_present_32_h (a, len)
   1473       1.1  mrg   use iso_c_binding, only: c_int32_t, c_size_t
   1474       1.1  mrg   use openacc_internal, only: acc_is_present_l
   1475       1.1  mrg   logical acc_is_present_32_h
   1476       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1477       1.1  mrg   type (*), dimension (*) :: a
   1478       1.1  mrg   integer (c_int32_t) len
   1479   1.1.1.8  mrg   acc_is_present_32_h = acc_is_present_l (a, int (len, kind = c_size_t)) /= 0
   1480       1.1  mrg end function
   1481       1.1  mrg 
   1482       1.1  mrg function acc_is_present_64_h (a, len)
   1483       1.1  mrg   use iso_c_binding, only: c_int64_t, c_size_t
   1484       1.1  mrg   use openacc_internal, only: acc_is_present_l
   1485       1.1  mrg   logical acc_is_present_64_h
   1486       1.1  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1487       1.1  mrg   type (*), dimension (*) :: a
   1488       1.1  mrg   integer (c_int64_t) len
   1489   1.1.1.8  mrg   acc_is_present_64_h = acc_is_present_l (a, int (len, kind = c_size_t)) /= 0
   1490       1.1  mrg end function
   1491       1.1  mrg 
   1492       1.1  mrg function acc_is_present_array_h (a)
   1493       1.1  mrg   use openacc_internal, only: acc_is_present_l
   1494       1.1  mrg   logical acc_is_present_array_h
   1495       1.1  mrg   type (*), dimension (..), contiguous :: a
   1496   1.1.1.8  mrg   acc_is_present_array_h = acc_is_present_l (a, sizeof (a)) /= 0
   1497       1.1  mrg end function
   1498   1.1.1.7  mrg 
   1499   1.1.1.7  mrg subroutine acc_copyin_async_32_h (a, len, async)
   1500   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1501   1.1.1.7  mrg   use openacc_internal, only: acc_copyin_async_l
   1502   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1503   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1504   1.1.1.7  mrg   type (*), dimension (*) :: a
   1505   1.1.1.7  mrg   integer (c_int32_t) len
   1506   1.1.1.7  mrg   integer (acc_handle_kind) async
   1507   1.1.1.7  mrg   call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1508   1.1.1.7  mrg end subroutine
   1509   1.1.1.7  mrg 
   1510   1.1.1.7  mrg subroutine acc_copyin_async_64_h (a, len, async)
   1511   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1512   1.1.1.7  mrg   use openacc_internal, only: acc_copyin_async_l
   1513   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1514   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1515   1.1.1.7  mrg   type (*), dimension (*) :: a
   1516   1.1.1.7  mrg   integer (c_int64_t) len
   1517   1.1.1.7  mrg   integer (acc_handle_kind) async
   1518   1.1.1.7  mrg   call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1519   1.1.1.7  mrg end subroutine
   1520   1.1.1.7  mrg 
   1521   1.1.1.7  mrg subroutine acc_copyin_async_array_h (a, async)
   1522   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1523   1.1.1.7  mrg   use openacc_internal, only: acc_copyin_async_l
   1524   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1525   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1526   1.1.1.7  mrg   integer (acc_handle_kind) async
   1527   1.1.1.7  mrg   call acc_copyin_async_l (a, sizeof (a), int (async, kind = c_int))
   1528   1.1.1.7  mrg end subroutine
   1529   1.1.1.7  mrg 
   1530   1.1.1.7  mrg subroutine acc_create_async_32_h (a, len, async)
   1531   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1532   1.1.1.7  mrg   use openacc_internal, only: acc_create_async_l
   1533   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1534   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1535   1.1.1.7  mrg   type (*), dimension (*) :: a
   1536   1.1.1.7  mrg   integer (c_int32_t) len
   1537   1.1.1.7  mrg   integer (acc_handle_kind) async
   1538   1.1.1.7  mrg   call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1539   1.1.1.7  mrg end subroutine
   1540   1.1.1.7  mrg 
   1541   1.1.1.7  mrg subroutine acc_create_async_64_h (a, len, async)
   1542   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1543   1.1.1.7  mrg   use openacc_internal, only: acc_create_async_l
   1544   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1545   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1546   1.1.1.7  mrg   type (*), dimension (*) :: a
   1547   1.1.1.7  mrg   integer (c_int64_t) len
   1548   1.1.1.7  mrg   integer (acc_handle_kind) async
   1549   1.1.1.7  mrg   call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1550   1.1.1.7  mrg end subroutine
   1551   1.1.1.7  mrg 
   1552   1.1.1.7  mrg subroutine acc_create_async_array_h (a, async)
   1553   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1554   1.1.1.7  mrg   use openacc_internal, only: acc_create_async_l
   1555   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1556   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1557   1.1.1.7  mrg   integer (acc_handle_kind) async
   1558   1.1.1.7  mrg   call acc_create_async_l (a, sizeof (a), int (async, kind = c_int))
   1559   1.1.1.7  mrg end subroutine
   1560   1.1.1.7  mrg 
   1561   1.1.1.7  mrg subroutine acc_copyout_async_32_h (a, len, async)
   1562   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1563   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_async_l
   1564   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1565   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1566   1.1.1.7  mrg   type (*), dimension (*) :: a
   1567   1.1.1.7  mrg   integer (c_int32_t) len
   1568   1.1.1.7  mrg   integer (acc_handle_kind) async
   1569   1.1.1.7  mrg   call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1570   1.1.1.7  mrg end subroutine
   1571   1.1.1.7  mrg 
   1572   1.1.1.7  mrg subroutine acc_copyout_async_64_h (a, len, async)
   1573   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1574   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_async_l
   1575   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1576   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1577   1.1.1.7  mrg   type (*), dimension (*) :: a
   1578   1.1.1.7  mrg   integer (c_int64_t) len
   1579   1.1.1.7  mrg   integer (acc_handle_kind) async
   1580   1.1.1.7  mrg   call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1581   1.1.1.7  mrg end subroutine
   1582   1.1.1.7  mrg 
   1583   1.1.1.7  mrg subroutine acc_copyout_async_array_h (a, async)
   1584   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1585   1.1.1.7  mrg   use openacc_internal, only: acc_copyout_async_l
   1586   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1587   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1588   1.1.1.7  mrg   integer (acc_handle_kind) async
   1589   1.1.1.7  mrg   call acc_copyout_async_l (a, sizeof (a), int (async, kind = c_int))
   1590   1.1.1.7  mrg end subroutine
   1591   1.1.1.7  mrg 
   1592   1.1.1.7  mrg subroutine acc_delete_async_32_h (a, len, async)
   1593   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1594   1.1.1.7  mrg   use openacc_internal, only: acc_delete_async_l
   1595   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1596   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1597   1.1.1.7  mrg   type (*), dimension (*) :: a
   1598   1.1.1.7  mrg   integer (c_int32_t) len
   1599   1.1.1.7  mrg   integer (acc_handle_kind) async
   1600   1.1.1.7  mrg   call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1601   1.1.1.7  mrg end subroutine
   1602   1.1.1.7  mrg 
   1603   1.1.1.7  mrg subroutine acc_delete_async_64_h (a, len, async)
   1604   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1605   1.1.1.7  mrg   use openacc_internal, only: acc_delete_async_l
   1606   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1607   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1608   1.1.1.7  mrg   type (*), dimension (*) :: a
   1609   1.1.1.7  mrg   integer (c_int64_t) len
   1610   1.1.1.7  mrg   integer (acc_handle_kind) async
   1611   1.1.1.7  mrg   call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1612   1.1.1.7  mrg end subroutine
   1613   1.1.1.7  mrg 
   1614   1.1.1.7  mrg subroutine acc_delete_async_array_h (a, async)
   1615   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1616   1.1.1.7  mrg   use openacc_internal, only: acc_delete_async_l
   1617   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1618   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1619   1.1.1.7  mrg   integer (acc_handle_kind) async
   1620   1.1.1.7  mrg   call acc_delete_async_l (a, sizeof (a), int (async, kind = c_int))
   1621   1.1.1.7  mrg end subroutine
   1622   1.1.1.7  mrg 
   1623   1.1.1.7  mrg subroutine acc_update_device_async_32_h (a, len, async)
   1624   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1625   1.1.1.7  mrg   use openacc_internal, only: acc_update_device_async_l
   1626   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1627   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1628   1.1.1.7  mrg   type (*), dimension (*) :: a
   1629   1.1.1.7  mrg   integer (c_int32_t) len
   1630   1.1.1.7  mrg   integer (acc_handle_kind) async
   1631   1.1.1.7  mrg   call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1632   1.1.1.7  mrg end subroutine
   1633   1.1.1.7  mrg 
   1634   1.1.1.7  mrg subroutine acc_update_device_async_64_h (a, len, async)
   1635   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1636   1.1.1.7  mrg   use openacc_internal, only: acc_update_device_async_l
   1637   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1638   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1639   1.1.1.7  mrg   type (*), dimension (*) :: a
   1640   1.1.1.7  mrg   integer (c_int64_t) len
   1641   1.1.1.7  mrg   integer (acc_handle_kind) async
   1642   1.1.1.7  mrg   call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1643   1.1.1.7  mrg end subroutine
   1644   1.1.1.7  mrg 
   1645   1.1.1.7  mrg subroutine acc_update_device_async_array_h (a, async)
   1646   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1647   1.1.1.7  mrg   use openacc_internal, only: acc_update_device_async_l
   1648   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1649   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1650   1.1.1.7  mrg   integer (acc_handle_kind) async
   1651   1.1.1.7  mrg   call acc_update_device_async_l (a, sizeof (a), int (async, kind = c_int))
   1652   1.1.1.7  mrg end subroutine
   1653   1.1.1.7  mrg 
   1654   1.1.1.7  mrg subroutine acc_update_self_async_32_h (a, len, async)
   1655   1.1.1.7  mrg   use iso_c_binding, only: c_int32_t, c_size_t, c_int
   1656   1.1.1.7  mrg   use openacc_internal, only: acc_update_self_async_l
   1657   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1658   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1659   1.1.1.7  mrg   type (*), dimension (*) :: a
   1660   1.1.1.7  mrg   integer (c_int32_t) len
   1661   1.1.1.7  mrg   integer (acc_handle_kind) async
   1662   1.1.1.7  mrg   call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1663   1.1.1.7  mrg end subroutine
   1664   1.1.1.7  mrg 
   1665   1.1.1.7  mrg subroutine acc_update_self_async_64_h (a, len, async)
   1666   1.1.1.7  mrg   use iso_c_binding, only: c_int64_t, c_size_t, c_int
   1667   1.1.1.7  mrg   use openacc_internal, only: acc_update_self_async_l
   1668   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1669   1.1.1.7  mrg   !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
   1670   1.1.1.7  mrg   type (*), dimension (*) :: a
   1671   1.1.1.7  mrg   integer (c_int64_t) len
   1672   1.1.1.7  mrg   integer (acc_handle_kind) async
   1673   1.1.1.7  mrg   call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
   1674   1.1.1.7  mrg end subroutine
   1675   1.1.1.7  mrg 
   1676   1.1.1.7  mrg subroutine acc_update_self_async_array_h (a, async)
   1677   1.1.1.7  mrg   use iso_c_binding, only: c_int
   1678   1.1.1.7  mrg   use openacc_internal, only: acc_update_self_async_l
   1679   1.1.1.7  mrg   use openacc_kinds, only: acc_handle_kind
   1680   1.1.1.7  mrg   type (*), dimension (..), contiguous :: a
   1681   1.1.1.7  mrg   integer (acc_handle_kind) async
   1682   1.1.1.7  mrg   call acc_update_self_async_l (a, sizeof (a), int (async, kind = c_int))
   1683   1.1.1.7  mrg end subroutine
   1684