[libc] Add intrinsic for thread fence to the atomic support

This function mimics the std::atomic_thread_fence function from
<atomic>. This has no uses in source currently, but this will be used by
the proposed RPC client for the GPU mode support. There is varying
support for direct memory ordering for the GPU atomics on shared memory
resources. So the implementation will use relaxed atomics and explicit
memory fences.

Some additional work may need to be done to map this to `NVPTX` system
level fences.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D145608
This commit is contained in:
Joseph Huber
2023-03-08 15:17:14 -06:00
parent 8d4998b478
commit a9cb298b39

View File

@@ -92,6 +92,11 @@ public:
void set(T rhs) { val = rhs; }
};
// Issue a thread fence with the given memory ordering.
LIBC_INLINE void atomic_thread_fence(MemoryOrder mem_ord) {
__atomic_thread_fence(int(mem_ord));
}
} // namespace cpp
} // namespace __llvm_libc