Hi!

On 2025-05-12T17:03:29+0200, I wrote:
> "Add effective-target 'offload_device_usm', 
> 'libgomp.c-c++-common/target-usm-1.c'"

On top, we could then add the attached
"libgomp: Add a few more OpenMP/USM test cases"?  These all PASS for GCN
gfx90a with 'HSA_XNACK=1'.


Grüße
 Thomas


>From 8c0404527575fc4fae81190376b6b6ef748fc6a5 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwi...@baylibre.com>
Date: Fri, 9 May 2025 15:09:51 +0200
Subject: [PATCH] libgomp: Add a few more OpenMP/USM test cases

... where there are already clear differences in havior for USM run-time
configurations.

	libgomp/
	* testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c: New.
	* testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c:
	Likewise.
	* testsuite/libgomp.c-c++-common/struct-elem-5-usm.c: Likewise.
	* testsuite/libgomp.c-c++-common/target-present-1-usm.c: Likewise.
	* testsuite/libgomp.c-c++-common/target-present-2-usm.c: Likewise.
	* testsuite/libgomp.c-c++-common/target-present-3-usm.c: Likewise.
	* testsuite/libgomp.fortran/map-subarray-5-usm.f90: Likewise.
	* testsuite/libgomp.fortran/map-subarray-6-usm.f90: Likewise.
	* testsuite/libgomp.fortran/map-subarray-7-usm.f90: Likewise.
	* testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90:
	Likewise.
	* testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90:
	Likewise.
	* testsuite/libgomp.fortran/target-enter-data-2-usm.F90: Likewise.
	* testsuite/libgomp.fortran/target-present-1-usm.f90: Likewise.
	* testsuite/libgomp.fortran/target-present-2-usm.f90: Likewise.
	* testsuite/libgomp.fortran/target-present-3-usm.f90: Likewise.
	* testsuite/libgomp.fortran/target-allocatable-1-1.f90: Adjust.
	* testsuite/libgomp.fortran/target-allocatable-1-2.f90: Likewise.
	* testsuite/libgomp.fortran/target-present-1.f90: Likewise.
	* testsuite/libgomp.fortran/target-present-2.f90: Likewise.
	* testsuite/libgomp.fortran/target-present-3.f90: Likewise.
---
 .../libgomp.c-c++-common/map-arrayofstruct-2-usm.c         | 7 +++++++
 .../libgomp.c-c++-common/map-arrayofstruct-3-usm.c         | 7 +++++++
 libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c | 7 +++++++
 .../testsuite/libgomp.c-c++-common/target-present-1-usm.c  | 7 +++++++
 .../testsuite/libgomp.c-c++-common/target-present-2-usm.c  | 7 +++++++
 .../testsuite/libgomp.c-c++-common/target-present-3-usm.c  | 7 +++++++
 libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90   | 7 +++++++
 libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90   | 7 +++++++
 libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90   | 7 +++++++
 .../libgomp.fortran/target-allocatable-1-1-usm.f90         | 6 ++++++
 .../testsuite/libgomp.fortran/target-allocatable-1-1.f90   | 4 ++++
 .../libgomp.fortran/target-allocatable-1-2-usm.f90         | 6 ++++++
 .../testsuite/libgomp.fortran/target-allocatable-1-2.f90   | 4 ++++
 .../testsuite/libgomp.fortran/target-enter-data-2-usm.F90  | 6 ++++++
 libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 | 7 +++++++
 libgomp/testsuite/libgomp.fortran/target-present-1.f90     | 6 ++++++
 libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 | 7 +++++++
 libgomp/testsuite/libgomp.fortran/target-present-2.f90     | 6 ++++++
 libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 | 7 +++++++
 libgomp/testsuite/libgomp.fortran/target-present-3.f90     | 6 ++++++
 20 files changed, 128 insertions(+)
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
 create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90

diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
new file mode 100644
index 00000000000..e0ee5712d93
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
@@ -0,0 +1,7 @@
+/* { dg-skip-if {} { ! offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "map-arrayofstruct-2.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
new file mode 100644
index 00000000000..c6f33f009b6
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
@@ -0,0 +1,7 @@
+/* { dg-skip-if {} { ! offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "map-arrayofstruct-3.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
new file mode 100644
index 00000000000..7a124e438c3
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
@@ -0,0 +1,7 @@
+/* { dg-do run { target offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "struct-elem-5.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
new file mode 100644
index 00000000000..68ff786e8ae
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
@@ -0,0 +1,7 @@
+/* { dg-skip-if {} { ! offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "target-present-1.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
new file mode 100644
index 00000000000..f600289dc03
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
@@ -0,0 +1,7 @@
+/* { dg-skip-if {} { ! offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "target-present-2.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
new file mode 100644
index 00000000000..df672d92b7d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
@@ -0,0 +1,7 @@
+/* { dg-skip-if {} { ! offload_device_usm } } */
+
+#pragma omp requires unified_shared_memory
+
+#include "target-present-3.c"
+
+/* No 'dg-shouldfail'.  */
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
new file mode 100644
index 00000000000..841abd126c0
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
@@ -0,0 +1,7 @@
+! { dg-do run { target offload_device_usm } }
+
+!$omp requires unified_shared_memory
+
+include 'map-subarray-5.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
new file mode 100644
index 00000000000..a1ae027f585
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
@@ -0,0 +1,7 @@
+! { dg-do run { target offload_device_usm } }
+
+!$omp requires unified_shared_memory
+
+include 'map-subarray-6.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
new file mode 100644
index 00000000000..537684e47ff
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
@@ -0,0 +1,7 @@
+! { dg-skip-if {} { ! offload_device_usm } }
+
+!$omp requires unified_shared_memory
+
+include 'map-subarray-7.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
new file mode 100644
index 00000000000..5a59ec65feb
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
@@ -0,0 +1,6 @@
+! { dg-do run { target offload_device_usm } }
+! { dg-additional-options "-cpp" }
+! { dg-additional-options "-DOMP_R_USM" }
+! { dg-additional-options "-DMEM_SHARED" }
+
+#include "target-allocatable-1-1.f90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
index 429a855a20b..631259402d7 100644
--- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
@@ -8,6 +8,10 @@
 
 program main
   implicit none
+#ifdef OMP_R_USM
+  !$omp requires unified_shared_memory
+#endif
+
   integer, allocatable :: a, b, c, d, e
 
   allocate (a)
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
new file mode 100644
index 00000000000..a8fb54f440e
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
@@ -0,0 +1,6 @@
+! { dg-do run { target offload_device_usm } }
+! { dg-additional-options "-cpp" }
+! { dg-additional-options "-DOMP_R_USM" }
+! { dg-additional-options "-DMEM_SHARED" }
+
+#include "target-allocatable-1-2.f90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
index 5301c8eeffb..be8fb4f4d90 100644
--- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
@@ -8,6 +8,10 @@
 ! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } }
 
 module m
+#ifdef OMP_R_USM
+  !$omp requires unified_shared_memory
+#endif
+
 contains
   subroutine r (a, b, c, d, e)
     implicit none
diff --git a/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90 b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
new file mode 100644
index 00000000000..53daf3736e4
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
@@ -0,0 +1,6 @@
+! { dg-additional-options "-DMEM_SHARED" }
+! { dg-do run { target offload_device_usm } }
+
+!$omp requires unified_shared_memory
+
+#include "target-enter-data-2.F90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
new file mode 100644
index 00000000000..d3f54b7f2d9
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
@@ -0,0 +1,7 @@
+! { dg-skip-if {} { ! offload_device_usm } }
+! { dg-additional-options -cpp }
+! { dg-additional-options -DOMP_R_USM }
+
+#include "target-present-1.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1.f90 b/libgomp/testsuite/libgomp.fortran/target-present-1.f90
index fc13609d528..d09861b7019 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-1.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
 program main
   implicit none
+#ifdef OMP_R_USM
+  !$omp requires unified_shared_memory
+#endif
+
   integer, parameter :: N = 100
   integer :: a(N), b(N), c(N), i
 
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
new file mode 100644
index 00000000000..9d36a6bab4d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
@@ -0,0 +1,7 @@
+! { dg-skip-if {} { ! offload_device_usm } }
+! { dg-additional-options -cpp }
+! { dg-additional-options -DOMP_R_USM }
+
+#include "target-present-2.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2.f90 b/libgomp/testsuite/libgomp.fortran/target-present-2.f90
index 524d01d9465..e8f0a12ee82 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-2.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-2.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
 program main
   implicit none
+#ifdef OMP_R_USM
+  !$omp requires unified_shared_memory
+#endif
+
   integer, parameter :: N = 100
   integer :: a(N), b(N), c(N), i
 
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
new file mode 100644
index 00000000000..4015f974556
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
@@ -0,0 +1,7 @@
+! { dg-skip-if {} { ! offload_device_usm } }
+! { dg-additional-options -cpp }
+! { dg-additional-options -DOMP_R_USM }
+
+#include "target-present-3.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3.f90 b/libgomp/testsuite/libgomp.fortran/target-present-3.f90
index dd4af4c1651..1c48a4ca1f6 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-3.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-3.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
 program main
   implicit none
+#ifdef OMP_R_USM
+  !$omp requires unified_shared_memory
+#endif
+
   integer, parameter :: N = 100
   integer :: a(N), b(N), c(N), i
 
-- 
2.34.1

Reply via email to