gcc/libgomp/config/nvptx/atomic.c

19 lines
598 B
C
Raw Normal View History

#include "libgomp.h"
#include "../../atomic.c"
/* Implement __sync_val_compare_and_swap_16, to support offloading from hosts
that support this builtin. Fallback on libatomic. This can be removed
once omp-expand starts using __atomic_compare_exchange_n instead. */
unsigned __int128
__sync_val_compare_and_swap_16 (volatile void *vptr, unsigned __int128 oldval,
unsigned __int128 newval)
{
volatile __int128 *ptr = vptr;
__int128 expected = oldval;
__atomic_compare_exchange_n (ptr, &expected, newval, false,
MEMMODEL_SEQ_CST, MEMMODEL_SEQ_CST);
return expected;
}