[llvm] [AMDGPU] Lower mem intrinsics on LDS pointers in AMDGPUSwLowerLDS (PR #202552)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 9 02:22:18 PDT 2026
================
@@ -729,6 +735,46 @@ void AMDGPUSwLowerLDS::translateLDSMemoryOperationsToGlobalMemory(
AsanInfo.Instructions.insert(NewXCHG);
XCHG->replaceAllUsesWith(NewXCHG);
XCHG->eraseFromParent();
+ } else if (AnyMemIntrinsic *MI = dyn_cast<AnyMemIntrinsic>(Inst)) {
+ Value *NewDest = MI->getRawDest();
+ if (MI->getDestAddressSpace() == AMDGPUAS::LOCAL_ADDRESS)
+ NewDest = getTranslatedGlobalMemoryPtrOfLDS(LoadMallocPtr, NewDest);
+ CallInst *NewMI = nullptr;
+ if (AnyMemSetInst *MSI = dyn_cast<AnyMemSetInst>(MI)) {
+ if (MI->isAtomic())
+ NewMI = IRB.CreateElementUnorderedAtomicMemSet(
+ NewDest, MSI->getValue(), MSI->getLength(),
+ MSI->getDestAlign().valueOrOne(), MSI->getElementSizeInBytes());
+ else
+ NewMI = IRB.CreateMemSet(NewDest, MSI->getValue(), MSI->getLength(),
+ MSI->getDestAlign(),
+ cast<MemSetInst>(MI)->isVolatile());
+ } else if (AnyMemTransferInst *MTI = dyn_cast<AnyMemTransferInst>(MI)) {
+ Value *NewSrc = MTI->getRawSource();
+ if (MTI->getSourceAddressSpace() == AMDGPUAS::LOCAL_ADDRESS)
+ NewSrc = getTranslatedGlobalMemoryPtrOfLDS(LoadMallocPtr, NewSrc);
+ if (MI->isAtomic()) {
+ if (MI->getIntrinsicID() ==
----------------
arsenm wrote:
Braces
https://github.com/llvm/llvm-project/pull/202552
More information about the llvm-commits
mailing list