Many riscv/amo/ testcases use check-function-bodies. These testcases can be
consolidated with related testcases (memory ordering variants) without affecting
the assertions.

Give functions descriptive names so testsuite failures are obvious from the
'FAIL:' line.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/amo/amo-table-a-6-amo-add-1.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-amo-add-2.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-amo-add-3.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-amo-add-4.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-amo-add-5.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-fence-1.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-fence-2.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-fence-3.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-fence-4.c: Removed.
        * gcc.target/riscv/amo/amo-table-a-6-fence-5.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-amo-add-1.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-amo-add-2.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-amo-add-3.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-amo-add-4.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-amo-add-5.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-fence-1.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-fence-2.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-fence-3.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-fence-4.c: Removed.
        * gcc.target/riscv/amo/amo-table-ztso-fence-5.c: Removed.
        * gcc.target/riscv/amo/amo-zalrsc-amo-add-1.c: Removed.
        * gcc.target/riscv/amo/amo-zalrsc-amo-add-2.c: Removed.
        * gcc.target/riscv/amo/amo-zalrsc-amo-add-3.c: Removed.
        * gcc.target/riscv/amo/amo-zalrsc-amo-add-4.c: Removed.
        * gcc.target/riscv/amo/amo-zalrsc-amo-add-5.c: Removed.
        * gcc.target/riscv/amo/a-rvwmo-fence.c: New test.
        * gcc.target/riscv/amo/a-ztso-fence.c: New test.
        * gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c: New test.
        * gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c: New test.
        * gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c: New test.
        * gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c: New test.

Signed-off-by: Patrick O'Neill <patr...@rivosinc.com>
---
 .../gcc.target/riscv/amo/a-rvwmo-fence.c      | 56 +++++++++++++
 .../gcc.target/riscv/amo/a-ztso-fence.c       | 52 +++++++++++++
 .../riscv/amo/amo-table-a-6-amo-add-1.c       | 17 ----
 .../riscv/amo/amo-table-a-6-amo-add-2.c       | 17 ----
 .../riscv/amo/amo-table-a-6-amo-add-3.c       | 17 ----
 .../riscv/amo/amo-table-a-6-amo-add-4.c       | 17 ----
 .../riscv/amo/amo-table-a-6-amo-add-5.c       | 17 ----
 .../riscv/amo/amo-table-a-6-fence-1.c         | 15 ----
 .../riscv/amo/amo-table-a-6-fence-2.c         | 16 ----
 .../riscv/amo/amo-table-a-6-fence-3.c         | 16 ----
 .../riscv/amo/amo-table-a-6-fence-4.c         | 16 ----
 .../riscv/amo/amo-table-a-6-fence-5.c         | 16 ----
 .../riscv/amo/amo-table-ztso-amo-add-1.c      | 17 ----
 .../riscv/amo/amo-table-ztso-amo-add-2.c      | 17 ----
 .../riscv/amo/amo-table-ztso-amo-add-3.c      | 17 ----
 .../riscv/amo/amo-table-ztso-amo-add-4.c      | 17 ----
 .../riscv/amo/amo-table-ztso-amo-add-5.c      | 17 ----
 .../riscv/amo/amo-table-ztso-fence-1.c        | 15 ----
 .../riscv/amo/amo-table-ztso-fence-2.c        | 15 ----
 .../riscv/amo/amo-table-ztso-fence-3.c        | 15 ----
 .../riscv/amo/amo-table-ztso-fence-4.c        | 15 ----
 .../riscv/amo/amo-table-ztso-fence-5.c        | 16 ----
 .../riscv/amo/amo-zalrsc-amo-add-1.c          | 22 ------
 .../riscv/amo/amo-zalrsc-amo-add-2.c          | 22 ------
 .../riscv/amo/amo-zalrsc-amo-add-3.c          | 22 ------
 .../riscv/amo/amo-zalrsc-amo-add-4.c          | 22 ------
 .../riscv/amo/amo-zalrsc-amo-add-5.c          | 22 ------
 .../riscv/amo/zaamo-rvwmo-amo-add-int.c       | 57 ++++++++++++++
 .../riscv/amo/zaamo-ztso-amo-add-int.c        | 57 ++++++++++++++
 .../riscv/amo/zalrsc-rvwmo-amo-add-int.c      | 78 +++++++++++++++++++
 .../riscv/amo/zalrsc-ztso-amo-add-int.c       | 78 +++++++++++++++++++
 31 files changed, 378 insertions(+), 435 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c
 create mode 100644 gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-1.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-2.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-3.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-4.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-5.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-1.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-2.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-3.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-4.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-5.c
 delete mode 100644 
gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-1.c
 delete mode 100644 
gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-2.c
 delete mode 100644 
gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-3.c
 delete mode 100644 
gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-4.c
 delete mode 100644 
gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-5.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-1.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-2.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-3.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-4.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-5.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-1.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-2.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-3.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-4.c
 delete mode 100644 gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-5.c
 create mode 100644 gcc/testsuite/gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c
 create mode 100644 gcc/testsuite/gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c
 create mode 100644 
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c
 create mode 100644 gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c

diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c
new file mode 100644
index 00000000000..5b9400f7da8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c
@@ -0,0 +1,56 @@
+/* { dg-do compile } */
+/* Verify that fence mappings match Table A.6's recommended mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-remove-options riscv_ztso } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** fence_relaxed:
+**     ret
+*/
+void fence_relaxed()
+{
+  __atomic_thread_fence(__ATOMIC_RELAXED);
+}
+
+/*
+** fence_acquire:
+**     fence\tr,rw
+**     ret
+*/
+void fence_acquire()
+{
+  __atomic_thread_fence(__ATOMIC_ACQUIRE);
+}
+
+/*
+** fence_release:
+**     fence\trw,w
+**     ret
+*/
+void fence_release()
+{
+  __atomic_thread_fence(__ATOMIC_RELEASE);
+}
+
+/*
+** fence_acq_rel:
+**     fence\.tso
+**     ret
+*/
+void fence_acq_rel()
+{
+  __atomic_thread_fence(__ATOMIC_ACQ_REL);
+}
+
+/*
+** fence_seq_cst:
+**     fence\trw,rw
+**     ret
+*/
+void fence_seq_cst()
+{
+  __atomic_thread_fence(__ATOMIC_SEQ_CST);
+}
+
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c
new file mode 100644
index 00000000000..37daeda8354
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c
@@ -0,0 +1,52 @@
+/* { dg-do compile } */
+/* Verify that fence mappings match the Ztso suggested mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-add-options riscv_ztso } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** fence_relaxed:
+**     ret
+*/
+void fence_relaxed()
+{
+  __atomic_thread_fence(__ATOMIC_RELAXED);
+}
+
+/*
+** fence_acquire:
+**     ret
+*/
+void fence_acquire()
+{
+  __atomic_thread_fence(__ATOMIC_ACQUIRE);
+}
+
+/*
+** fence_release:
+**     ret
+*/
+void fence_release()
+{
+  __atomic_thread_fence(__ATOMIC_RELEASE);
+}
+
+/*
+** fence_acq_rel:
+**     ret
+*/
+void fence_acq_rel()
+{
+  __atomic_thread_fence(__ATOMIC_ACQ_REL);
+}
+
+/*
+** fence_seq_cst:
+**     fence\trw,rw
+**     ret
+*/
+void fence_seq_cst()
+{
+  __atomic_thread_fence(__ATOMIC_SEQ_CST);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-1.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-1.c
deleted file mode 100644
index 2acad7d44bf..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-1.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-2.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-2.c
deleted file mode 100644
index ab21f079eaa..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-2.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\.aq\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-3.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-3.c
deleted file mode 100644
index 919ff37d096..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-3.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\.rl\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-4.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-4.c
deleted file mode 100644
index 1531d3763b7..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-4.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\.aqrl\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-5.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-5.c
deleted file mode 100644
index 03b70111a74..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-amo-add-5.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\.aqrl\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-1.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-1.c
deleted file mode 100644
index 202479a005e..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-1.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_RELAXED);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-2.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-2.c
deleted file mode 100644
index 7d6c73a6b50..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-2.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     fence\tr,rw
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_ACQUIRE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-3.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-3.c
deleted file mode 100644
index a53889a4fa1..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-3.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     fence\trw,w
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_RELEASE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-4.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-4.c
deleted file mode 100644
index 63a3a234d43..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-4.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     fence\.tso
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_ACQ_REL);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-5.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-5.c
deleted file mode 100644
index 78040bd11e9..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-a-6-fence-5.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match Table A.6's recommended mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     fence\trw,rw
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_SEQ_CST);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-1.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-1.c
deleted file mode 100644
index 000407a2583..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-1.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-2.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-2.c
deleted file mode 100644
index 3e441cadbf3..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-2.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-3.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-3.c
deleted file mode 100644
index 8af1a2f79a4..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-3.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-4.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-4.c
deleted file mode 100644
index 0b3a7e59689..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-4.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-5.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-5.c
deleted file mode 100644
index f189827d6cf..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-amo-add-5.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* Verify that atomic op mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zaamo } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     amoadd\.w\tzero,a1,0\(a0\)
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-1.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-1.c
deleted file mode 100644
index ec008d25794..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-1.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_RELAXED);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-2.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-2.c
deleted file mode 100644
index acef911573f..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-2.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_ACQUIRE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-3.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-3.c
deleted file mode 100644
index 6931ba0a799..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-3.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_RELEASE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-4.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-4.c
deleted file mode 100644
index b5a04294ad0..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-4.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_ACQ_REL);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-5.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-5.c
deleted file mode 100644
index 860fb978cbc..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-table-ztso-fence-5.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* Verify that fence mappings match the Ztso suggested mapping.  */
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     fence\trw,rw
-**     ret
-*/
-void foo()
-{
-  __atomic_thread_fence(__ATOMIC_SEQ_CST);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-1.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-1.c
deleted file mode 100644
index 582e96534de..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-1.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping.  
*/
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zalrsc } */
-/* { dg-remove-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     1:
-**     lr.w\t[atx][0-9]+, 0\(a0\)
-**     add\t[atx][0-9]+, [atx][0-9]+, a1
-**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
-**      bnez\t[atx][0-9]+, 1b
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-2.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-2.c
deleted file mode 100644
index 987429640de..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-2.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping.  
*/
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zalrsc } */
-/* { dg-remove-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     1:
-**     lr.w.aq\t[atx][0-9]+, 0\(a0\)
-**     add\t[atx][0-9]+, [atx][0-9]+, a1
-**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
-**      bnez\t[atx][0-9]+, 1b
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-3.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-3.c
deleted file mode 100644
index b29966ce7d7..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-3.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping.  
*/
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zalrsc } */
-/* { dg-remove-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     1:
-**     lr.w\t[atx][0-9]+, 0\(a0\)
-**     add\t[atx][0-9]+, [atx][0-9]+, a1
-**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
-**      bnez\t[atx][0-9]+, 1b
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-4.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-4.c
deleted file mode 100644
index 5dfb7ac2bac..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-4.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping.  
*/
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zalrsc } */
-/* { dg-remove-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     1:
-**     lr.w.aq\t[atx][0-9]+, 0\(a0\)
-**     add\t[atx][0-9]+, [atx][0-9]+, a1
-**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
-**      bnez\t[atx][0-9]+, 1b
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-5.c 
b/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-5.c
deleted file mode 100644
index fcc64131fec..00000000000
--- a/gcc/testsuite/gcc.target/riscv/amo/amo-zalrsc-amo-add-5.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping.  
*/
-/* { dg-options "-O3" } */
-/* { dg-add-options riscv_zalrsc } */
-/* { dg-remove-options riscv_zaamo } */
-/* { dg-remove-options riscv_ztso } */
-/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
-/* { dg-final { check-function-bodies "**" "" } } */
-
-/*
-** foo:
-**     1:
-**     lr.w.aqrl\t[atx][0-9]+, 0\(a0\)
-**     add\t[atx][0-9]+, [atx][0-9]+, a1
-**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
-**      bnez\t[atx][0-9]+, 1b
-**     ret
-*/
-void foo (int* bar, int baz)
-{
-  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
-}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c 
b/gcc/testsuite/gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c
new file mode 100644
index 00000000000..22187243314
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c
@@ -0,0 +1,57 @@
+/* { dg-do compile } */
+/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-add-options riscv_zaamo } */
+/* { dg-remove-options riscv_ztso } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** atomic_add_fetch_int_relaxed:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_relaxed (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
+}
+
+/*
+** atomic_add_fetch_int_acquire:
+**     amoadd\.w\.aq\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_acquire (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
+}
+
+/*
+** atomic_add_fetch_int_release:
+**     amoadd\.w\.rl\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_release (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
+}
+
+/*
+** atomic_add_fetch_int_acq_rel:
+**     amoadd\.w\.aqrl\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_acq_rel (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
+}
+
+/*
+** atomic_add_fetch_int_seq_cst:
+**     amoadd\.w\.aqrl\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_seq_cst (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c 
b/gcc/testsuite/gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c
new file mode 100644
index 00000000000..8cfd601f12a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c
@@ -0,0 +1,57 @@
+/* { dg-do compile } */
+/* Verify that atomic op mappings match Table A.6's recommended mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-add-options riscv_zaamo } */
+/* { dg-add-options riscv_ztso } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** atomic_add_fetch_int_relaxed:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_relaxed (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
+}
+
+/*
+** atomic_add_fetch_int_acquire:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_acquire (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
+}
+
+/*
+** atomic_add_fetch_int_release:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_release (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
+}
+
+/*
+** atomic_add_fetch_int_acq_rel:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_acq_rel (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
+}
+
+/*
+** atomic_add_fetch_int_seq_cst:
+**     amoadd\.w\tzero,a1,0\(a0\)
+**     ret
+*/
+void atomic_add_fetch_int_seq_cst (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c
new file mode 100644
index 00000000000..4cf617d6035
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c
@@ -0,0 +1,78 @@
+/* { dg-do compile } */
+/* Verify that lrsc atomic op mappings match the PSABI doc's recommended 
mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-add-options riscv_zalrsc } */
+/* { dg-remove-options riscv_zaamo } */
+/* { dg-remove-options riscv_ztso } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** atomic_add_fetch_int_relaxed:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_relaxed (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
+}
+
+/*
+** atomic_add_fetch_int_acquire:
+**     1:
+**     lr.w.aq\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_acquire (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
+}
+
+/*
+** atomic_add_fetch_int_release:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_release (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
+}
+
+/*
+** atomic_add_fetch_int_acq_rel:
+**     1:
+**     lr.w.aq\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_acq_rel (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
+}
+
+/*
+** atomic_add_fetch_int_seq_cst:
+**     1:
+**     lr.w.aqrl\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_seq_cst (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c
new file mode 100644
index 00000000000..3fb16c01191
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c
@@ -0,0 +1,78 @@
+/* { dg-do compile } */
+/* Verify that lrsc atomic op mappings match the PSABI doc's recommended 
mapping.  */
+/* { dg-options "-O3" } */
+/* { dg-add-options riscv_zalrsc } */
+/* { dg-add-options riscv_ztso } */
+/* { dg-remove-options riscv_zaamo } */
+/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */
+/* { dg-final { check-function-bodies "**" "" } } */
+
+/*
+** atomic_add_fetch_int_relaxed:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_relaxed (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED);
+}
+
+/*
+** atomic_add_fetch_int_acquire:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_acquire (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE);
+}
+
+/*
+** atomic_add_fetch_int_release:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_release (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE);
+}
+
+/*
+** atomic_add_fetch_int_acq_rel:
+**     1:
+**     lr.w\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_acq_rel (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL);
+}
+
+/*
+** atomic_add_fetch_int_seq_cst:
+**     1:
+**     lr.w.aqrl\t[atx][0-9]+, 0\(a0\)
+**     add\t[atx][0-9]+, [atx][0-9]+, a1
+**     sc.w.rl\t[atx][0-9]+, [atx][0-9]+, 0\(a0\)
+**      bnez\t[atx][0-9]+, 1b
+**     ret
+*/
+void atomic_add_fetch_int_seq_cst (int* bar, int baz)
+{
+  __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST);
+}
-- 
2.34.1

Reply via email to