On 30/06/2026 16:19, Jakub Jelinek wrote:
On Tue, Jun 30, 2026 at 04:12:46PM +0200, Paul-Antoine Arras wrote:
On 26/06/2026 11:43, Jakub Jelinek wrote:
So, makes me wonder if it shouldn't be instead a compile test
(in addition to int128 effective target of course) whether
__atomic_compare_exchange_16 appears in the assembly or not.

Is it something like this that you have in mind?

Yes.  With appropriate ChangeLog entry this is ok for trunk.

diff --git gcc/testsuite/lib/target-supports.exp
gcc/testsuite/lib/target-supports.exp
index ae3af5893cc..394580ed871 100644
--- gcc/testsuite/lib/target-supports.exp
+++ gcc/testsuite/lib/target-supports.exp
@@ -10364,7 +10364,15 @@ proc check_effective_target_section_anchors { } {
  # Return 1 if the target supports atomic operations on "int_128" values.

  proc check_effective_target_sync_int_128 { } {
-    return 0
+    return [check_no_messages_and_pattern sync_int_128 \
+           "__atomic_compare_exchange_16" assembly {
+       __int128 v;
+       void foo (__int128 *expected, __int128 desired)
+       {
+           __atomic_compare_exchange_n (&v, expected, desired, 0,
+                                       __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
+       }
+    } ""]

Just please tweak indentation a little bit, the 7 columns indentation
and then further 4 is just weird.
Elsewhere the check_no_messages_and_pattern body is
one tab indented and __atomic would be 2 more columns to the right from
that.

Thanks! Now committed with the description and ChangeLog updated, and the indentation tidied up.
--
PA

Reply via email to