[RFC][nvptx, libgomp] Add 128-bit atomic support
Tom de Vries
tdevries@suse.de
Wed Sep 2 10:22:28 GMT 2020
[ 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<mode>"
> - [(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 <stdlib.h>
>
> ...
>
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-nvptx-libgomp-Add-128-bit-atomic-support.patch
Type: text/x-patch
Size: 1182 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200902/4c89bb20/attachment.bin>
More information about the Gcc-patches
mailing list