diff options
author | Akshay Deodhar <adeodhar@nvidia.com> | 2025-02-24 10:13:23 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-24 10:13:23 -0800 |
commit | 9638d08af96c4cb8cf16785eed92179b2658bdfe (patch) | |
tree | b398714963b14beca3c388e8d822e92791431b66 /clang/lib/Serialization/InMemoryModuleCache.cpp | |
parent | d9d1f241f27bab3c7b8914196316a6e6202cc61e (diff) | |
download | llvm-9638d08af96c4cb8cf16785eed92179b2658bdfe.zip llvm-9638d08af96c4cb8cf16785eed92179b2658bdfe.tar.gz llvm-9638d08af96c4cb8cf16785eed92179b2658bdfe.tar.bz2 |
[NVPTX] Support for memory orderings for cmpxchg (#126159)
So far, all cmpxchg instructions were lowered to atom.cas. This change
adds support for memory orders in lowering. Specifically:
- For cmpxchg which are emulated, memory ordering is enforced by adding
fences around the emulation loops.
- For cmpxchg which are lowered to PTX directly, where the memory order
is supported in ptx, lower directly to the correct ptx instruction.
- For seq_cst cmpxchg which are lowered to PTX directly, use a sequence
(fence.sc; atom.cas.acquire) to provide the semantics that we want.
Also adds tests for all possible combinations of (size, memory ordering,
address space, SM/PTX versions)
This also adds `atomicOperationOrderAfterFenceSplit` in TargetLowering,
for specially handling seq_cst atomics.
Diffstat (limited to 'clang/lib/Serialization/InMemoryModuleCache.cpp')
0 files changed, 0 insertions, 0 deletions