[llvm] [SPIR-V] Honor explicit memory_order/memory_scope in atomic load/store (PR #215572)
Arseniy Obolenskiy via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 12 23:42:32 PDT 2026
================
@@ -635,24 +635,22 @@ static bool buildAtomicLoadInst(const SPIRV::IncomingCall *Call,
if (Call->isSpirvOp())
return buildOpFromWrapper(MIRBuilder, SPIRV::OpAtomicLoad, Call, TypeReg);
+ // atomic_load_explicit(ptr, memory_order[, memory_scope]).
Register PtrRegister = Call->Arguments[0];
- // TODO: if true insert call to __translate_ocl_memory_sccope before
- // OpAtomicLoad and the function implementation. We can use Translator's
- // output for transcoding/atomic_explicit_arguments.cl as an example.
+ MachineRegisterInfo *MRI = MIRBuilder.getMRI();
+
+ unsigned Semantics =
+ SPIRV::MemorySemantics::SequentiallyConsistent |
+ getMemSemanticsForStorageClass(GR->getPointerStorageClass(PtrRegister));
+ Register MemSemanticsReg =
+ Call->Arguments.size() >= 2 ? Call->Arguments[1] : Register();
----------------
aobolensk wrote:
Done. Split it into computeMemSemantics and buildMemSemanticsReg
https://github.com/llvm/llvm-project/pull/215572
More information about the llvm-commits
mailing list