diff options
Diffstat (limited to 'libgomp/config')
-rw-r--r-- | libgomp/config/nvptx/atomic.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libgomp/config/nvptx/atomic.c b/libgomp/config/nvptx/atomic.c new file mode 100644 index 0000000..2e13b09 --- /dev/null +++ b/libgomp/config/nvptx/atomic.c @@ -0,0 +1,18 @@ +#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; +} |