[clang] [llvm] [SPIR-V] Encode Atomic metadata as UserSemantic string decoration (PR #193019)
Marcos Maronas via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 21 02:08:20 PDT 2026
================
@@ -576,6 +579,28 @@ StringRef SPIRVTargetCodeGenInfo::getLLVMSyncScopeStr(
return "";
}
+void SPIRVTargetCodeGenInfo::setTargetAtomicMetadata(
+ CodeGenFunction &CGF, llvm::Instruction &AtomicInst,
+ const AtomicExpr *AE) const {
+ if (CGF.CGM.getTriple().getVendor() != llvm::Triple::VendorType::AMD)
+ return;
+
+ auto *RMW = dyn_cast<llvm::AtomicRMWInst>(&AtomicInst);
+ if (!RMW)
+ return;
+
+ AtomicOptions AO = CGF.CGM.getAtomicOpts();
+ llvm::MDNode *Empty = llvm::MDNode::get(CGF.getLLVMContext(), {});
+ if (!AO.getOption(clang::AtomicOptionKind::FineGrainedMemory))
+ RMW->setMetadata("amdgpu.no.fine.grained.memory", Empty);
+ if (!AO.getOption(clang::AtomicOptionKind::RemoteMemory))
+ RMW->setMetadata("amdgpu.no.remote.memory", Empty);
+ if (AO.getOption(clang::AtomicOptionKind::IgnoreDenormalMode) &&
+ RMW->getOperation() == llvm::AtomicRMWInst::FAdd &&
+ RMW->getType()->isFloatTy())
+ RMW->setMetadata("amdgpu.ignore.denormal.mode", Empty);
----------------
maarquitos14 wrote:
Do we never need to set anything other than empty metadata?
https://github.com/llvm/llvm-project/pull/193019
More information about the cfe-commits
mailing list