[ was: Re: [patch][nvptx] libgomp: Split testcase in order to XFAIL __sync_val_compare_and_swap_16 (was: [PATCH] nvptx: Add support for subword compare-and-swap) ] On 9/2/20 9:56 AM, Tom de Vries wrote: > On 9/1/20 2:58 PM, Tom de Vries wrote: >> On 9/1/20 1:41 PM, Tobias Burnus wrote: >>> Hi Tom, hello all, >>> >>> it turned out that the testcase fails on PowerPC (but not x86_64) >>> as the nvptx lto complains: unresolved symbol >>> __sync_val_compare_and_swap_16 >>> >>> The testcase uses int128 – and that's the culprit, but I have no idea >>> why it only fails with PowerPC and not with x86-64. >>> >> > > Reproduced on x86_64 using trigger patch: > ... > $ git diff > diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md > index ed17bb00205..eccedac192f 100644 > --- a/gcc/config/i386/sync.md > +++ b/gcc/config/i386/sync.md > @@ -153,9 +153,15 @@ > (DI "TARGET_64BIT || (TARGET_CMPXCHG8B && (TARGET_80387 || > TARGET_SSE))") > ]) > > + (define_mode_iterator ATOMIC2 > + [QI HI SI > + (DI "TARGET_64BIT || (TARGET_CMPXCHG8B && (TARGET_80387 || > TARGET_SSE))") > + TI > + ]) > + > (define_expand "atomic_load" > - [(set (match_operand:ATOMIC 0 "nonimmediate_operand") > - (unspec:ATOMIC [(match_operand:ATOMIC 1 "memory_operand") > + [(set (match_operand:ATOMIC2 0 "nonimmediate_operand") > + (unspec:ATOMIC2 [(match_operand:ATOMIC2 1 "memory_operand") > (match_operand:SI 2 "const_int_operand")] > UNSPEC_LDA))] > "" > diff --git a/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c > b/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c > index d0e82b04790..62b0e032c33 100644 > --- a/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c > +++ b/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c > @@ -1,4 +1,5 @@ > /* { dg-do run } */ > +/* { dg-additional-options "-mcx16" } */ > > #include > > ... > And test-case passes on x86_64 with this patch (obviously, in combination with trigger patch above). Jakub, WDYT? Tobias, can you try on powerpc? Thanks, - Tom