#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; }