summaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authortschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-24 13:23:45 +0000
committertschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-24 13:23:45 +0000
commit4a5596a04ac52ae4df1347e7980e0d60fcd1e84b (patch)
treeb588d5d4e4a4a327e0d3991c9c752b215128b21c /libgomp
parente4d15e02dfbaf61fb5655595423baaff4a345a60 (diff)
downloadgcc-4a5596a04ac52ae4df1347e7980e0d60fcd1e84b.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@248411 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog3
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c1
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f179
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f173
4 files changed, 356 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 4a9575567b3..af8c5ca07fc 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -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 6a9e995530f..1696fb6f9ef 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..4606d7732ec
--- /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 (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 (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..88f55667ab5
--- /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 (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 (H)
+ IF (.NOT. SHARED_MEM) THEN
+ IF (ACC_IS_PRESENT (H)) CALL ABORT
+ ENDIF
+
+ DEALLOCATE (H)
+
+ END PROGRAM MAIN