[llvm] [AMDGPU] Check noalias.addrspace in mayAccessScratchThroughFlat (PR #151319)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 5 07:08:29 PDT 2025


================
@@ -4266,12 +4266,15 @@ bool SIInstrInfo::mayAccessScratchThroughFlat(const MachineInstr &MI) const {
   if (MI.memoperands_empty())
     return true;
 
-  // TODO (?): Does this need to be taught how to read noalias.addrspace ?
-
   // See if any memory operand specifies an address space that involves scratch.
   return any_of(MI.memoperands(), [](const MachineMemOperand *Memop) {
     unsigned AS = Memop->getAddrSpace();
-    return AS == AMDGPUAS::PRIVATE_ADDRESS || AS == AMDGPUAS::FLAT_ADDRESS;
+    if (AS == AMDGPUAS::FLAT_ADDRESS) {
+      const MDNode *MD = Memop->getAAInfo().NoAliasAddrSpace;
+      return !(MD && AMDGPU::hasValueInRangeLikeMetadata(
+                         *MD, AMDGPUAS::PRIVATE_ADDRESS));
----------------
arsenm wrote:

```suggestion
      return !MD || !AMDGPU::hasValueInRangeLikeMetadata(
                         *MD, AMDGPUAS::PRIVATE_ADDRESS));
```

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


More information about the llvm-commits mailing list