diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2017-05-24 13:25:54 +0000 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2017-05-24 13:25:54 +0000 |
commit | f3db70e5ce7fba5dd03d9d7d888ce0d501e99607 (patch) | |
tree | eb5a11433b7f7e457c3d21b7abd62fd7121509c9 | |
parent | 51fb2c43096ff0aa698fb61339893f50260186f0 (diff) |
Translate libgomp.oacc-c-c++-common/lib-32.c into Fortran
libgomp/
* testsuite/libgomp.oacc-fortran/lib-32-1.f: New file.
* testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.
trunk r248411
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@248415 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libgomp/ChangeLog.gomp | 3 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c | 1 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f | 179 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f | 173 |
4 files changed, 356 insertions, 0 deletions
diff --git a/libgomp/ChangeLog.gomp b/libgomp/ChangeLog.gomp index 4ab1004c96d..de4eeb42b54 100644 --- a/libgomp/ChangeLog.gomp +++ b/libgomp/ChangeLog.gomp @@ -1,5 +1,8 @@ 2017-05-24 Thomas Schwinge <thomas@codesourcery.com> + * testsuite/libgomp.oacc-fortran/lib-32-1.f: New file. + * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise. + * openacc.h (acc_pcopyin, acc_pcreate): Provide prototypes instead of preprocessor definitions. * libgomp.h (strong_alias): Guard by "#ifdef diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c index 666d4b8e8f5..9ec345361d8 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c @@ -1,4 +1,5 @@ /* acc_present_or_create, acc_present_or_copyin, etc. */ +/* See also Fortran variants in "../libgomp.oacc-fortran/lib-32*". */ #include <stdbool.h> #include <stdlib.h> diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f new file mode 100644 index 00000000000..4ed866b65d3 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f @@ -0,0 +1,179 @@ +! ACC_PRESENT_OR_CREATE, ACC_PRESENT_OR_COPYIN, etc. +! Variant of "../libgomp.oacc-c-c++-common/lib-32.c". +! Variant using "openacc_lib.h". + +! { dg-do run } + + PROGRAM MAIN + IMPLICIT NONE + INCLUDE "openacc_lib.h" + + INTEGER, PARAMETER :: N = 10000 + INTEGER, ALLOCATABLE :: H(:) + INTEGER :: I + LOGICAL :: SHARED_MEM + + ALLOCATE (H(N)) + DO I = 1, N + H(I) = I + 0 + END DO + + SHARED_MEM = ACC_IS_PRESENT (H) + + CALL ACC_PRESENT_OR_CREATE (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + H(I) = I + 1 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) CALL ABORT + H(I) = I + 2 + END DO + + CALL ACC_PRESENT_OR_CREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) CALL ABORT + H(I) = I + 3 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) CALL ABORT + H(I) = I + 4 + END DO + +! CALL ACC_PCREATE (H) + CALL ACC_PRESENT_OR_CREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) CALL ABORT + H(I) = I + 5 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) CALL ABORT + H(I) = I + 6 + END DO + + CALL ACC_PRESENT_OR_COPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) CALL ABORT + H(I) = I + 7 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) CALL ABORT + H(I) = I + 8 + END DO + +! CALL ACC_PCOPYIN (H) + CALL ACC_PRESENT_OR_COPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) CALL ABORT + H(I) = I + 9 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) CALL ABORT + H(I) = I + 10 + END DO + + CALL ACC_COPYOUT_FINALIZE (H) + IF (.NOT. SHARED_MEM) THEN + IF (ACC_IS_PRESENT (H)) CALL ABORT + ENDIF + + DO I = 1, N + IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT + END DO + +! CALL ACC_PCOPYIN (H) + CALL ACC_PRESENT_OR_COPYIN (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT + H(I) = I + 11 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) CALL ABORT + H(I) = I + 12 + END DO + +! CALL ACC_PCOPYIN (H) + CALL ACC_PRESENT_OR_COPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) CALL ABORT + H(I) = I + 13 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) CALL ABORT + H(I) = I + 14 + END DO + +! CALL ACC_PCREATE (H) + CALL ACC_PRESENT_OR_CREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) CALL ABORT + H(I) = I + 15 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) CALL ABORT + H(I) = I + 16 + END DO + +! CALL ACC_PCREATE (H) + CALL ACC_PRESENT_OR_CREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) CALL ABORT + H(I) = I + 17 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) CALL ABORT + H(I) = I + 18 + END DO + + CALL ACC_UPDATE_SELF (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + + DO I = 1, N + IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT + END DO + + CALL ACC_DELETE_FINALIZE (H) + IF (.NOT. SHARED_MEM) THEN + IF (ACC_IS_PRESENT (H)) CALL ABORT + ENDIF + + DEALLOCATE (H) + + END PROGRAM MAIN diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f new file mode 100644 index 00000000000..3e88ce22361 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f @@ -0,0 +1,173 @@ +! ACC_PRESENT_OR_CREATE, ACC_PRESENT_OR_COPYIN, etc. +! Variant of "../libgomp.oacc-c-c++-common/lib-32.c". +! Variant using the "openacc" module. + +! { dg-do run } + + PROGRAM MAIN + USE OPENACC + IMPLICIT NONE + + INTEGER, PARAMETER :: N = 10000 + INTEGER, ALLOCATABLE :: H(:) + INTEGER :: I + LOGICAL :: SHARED_MEM + + ALLOCATE (H(N)) + DO I = 1, N + H(I) = I + 0 + END DO + + SHARED_MEM = ACC_IS_PRESENT (H) + + CALL ACC_PRESENT_OR_CREATE (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + H(I) = I + 1 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) CALL ABORT + H(I) = I + 2 + END DO + + CALL ACC_PRESENT_OR_CREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) CALL ABORT + H(I) = I + 3 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) CALL ABORT + H(I) = I + 4 + END DO + + CALL ACC_PCREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) CALL ABORT + H(I) = I + 5 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) CALL ABORT + H(I) = I + 6 + END DO + + CALL ACC_PRESENT_OR_COPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) CALL ABORT + H(I) = I + 7 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) CALL ABORT + H(I) = I + 8 + END DO + + CALL ACC_PCOPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) CALL ABORT + H(I) = I + 9 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) CALL ABORT + H(I) = I + 10 + END DO + + CALL ACC_COPYOUT_FINALIZE (H) + IF (.NOT. SHARED_MEM) THEN + IF (ACC_IS_PRESENT (H)) CALL ABORT + ENDIF + + DO I = 1, N + IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT + END DO + + CALL ACC_PCOPYIN (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT + H(I) = I + 11 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) CALL ABORT + H(I) = I + 12 + END DO + + CALL ACC_PCOPYIN (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) CALL ABORT + H(I) = I + 13 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) CALL ABORT + H(I) = I + 14 + END DO + + CALL ACC_PCREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) CALL ABORT + H(I) = I + 15 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) CALL ABORT + H(I) = I + 16 + END DO + + CALL ACC_PCREATE (H) + +!$ACC PARALLEL LOOP DEFAULT (PRESENT) + DO I = 1, N + IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) CALL ABORT + H(I) = I + 17 + END DO +!$ACC END PARALLEL LOOP + + DO I = 1, N + IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) CALL ABORT + H(I) = I + 18 + END DO + + CALL ACC_UPDATE_SELF (H) + IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT + + DO I = 1, N + IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT + END DO + + CALL ACC_DELETE_FINALIZE (H) + IF (.NOT. SHARED_MEM) THEN + IF (ACC_IS_PRESENT (H)) CALL ABORT + ENDIF + + DEALLOCATE (H) + + END PROGRAM MAIN |