[llvm] [AMDGPU] Enable volatile and non-temporal for loads to LDS (PR #153244)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 20 06:01:35 PDT 2025


================
@@ -2818,6 +2871,23 @@ bool SIMemoryLegalizer::expandAtomicCmpxchgOrRmw(const SIMemOpInfo &MOI,
   return Changed;
 }
 
+bool SIMemoryLegalizer::expandLdsLoadStore(const SIMemOpInfo &MOI,
+                                           SIMemOp OpKind,
+                                           MachineBasicBlock::iterator &MI) {
+  assert(MI->mayLoad() && MI->mayStore());
+
+  bool Changed = false;
+
+  // Handle volatile and/or nontemporal markers on direct-to-LDS loads and
+  // stores. The operation is treated as a volatile/nontemporal store
+  // to its second argument.
+  Changed |= CC->enableVolatileAndOrNonTemporal(
+      MI, MOI.getInstrAddrSpace(), OpKind, MOI.isVolatile(),
+      MOI.isNonTemporal(), MOI.isLastUse());
+
+  return Changed;
----------------
arsenm wrote:

```suggestion
  // Handle volatile and/or nontemporal markers on direct-to-LDS loads and
  // stores. The operation is treated as a volatile/nontemporal store
  // to its second argument.
  return CC->enableVolatileAndOrNonTemporal(
      MI, MOI.getInstrAddrSpace(), OpKind, MOI.isVolatile(),
      MOI.isNonTemporal(), MOI.isLastUse());
```

https://github.com/llvm/llvm-project/pull/153244


More information about the llvm-commits mailing list