[llvm] [AMDGPU][Attributor] Don't run `AAAddressSpace` for graphics functions (PR #108560)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 13 06:26:58 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Shilei Tian (shiltian)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/108560.diff


1 Files Affected:

- (modified) llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp (+16-13) 


``````````diff
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
index 687a7339da379d..37c8b043aca198 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
@@ -1077,19 +1077,22 @@ static bool runImpl(Module &M, AnalysisGetter &AG, TargetMachine &TM,
       addPreloadKernArgHint(*F, TM);
     }
 
-    for (auto &I : instructions(F)) {
-      if (auto *LI = dyn_cast<LoadInst>(&I)) {
-        A.getOrCreateAAFor<AAAddressSpace>(
-            IRPosition::value(*LI->getPointerOperand()));
-      } else if (auto *SI = dyn_cast<StoreInst>(&I)) {
-        A.getOrCreateAAFor<AAAddressSpace>(
-            IRPosition::value(*SI->getPointerOperand()));
-      } else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) {
-        A.getOrCreateAAFor<AAAddressSpace>(
-            IRPosition::value(*RMW->getPointerOperand()));
-      } else if (auto *CmpX = dyn_cast<AtomicCmpXchgInst>(&I)) {
-        A.getOrCreateAAFor<AAAddressSpace>(
-            IRPosition::value(*CmpX->getPointerOperand()));
+    // Don't bother to run AAAddressSpace for graphics.
+    if (!AMDGPU::isGraphics(F->getCallingConv())) {
+      for (auto &I : instructions(F)) {
+        if (auto *LI = dyn_cast<LoadInst>(&I)) {
+          A.getOrCreateAAFor<AAAddressSpace>(
+              IRPosition::value(*LI->getPointerOperand()));
+        } else if (auto *SI = dyn_cast<StoreInst>(&I)) {
+          A.getOrCreateAAFor<AAAddressSpace>(
+              IRPosition::value(*SI->getPointerOperand()));
+        } else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) {
+          A.getOrCreateAAFor<AAAddressSpace>(
+              IRPosition::value(*RMW->getPointerOperand()));
+        } else if (auto *CmpX = dyn_cast<AtomicCmpXchgInst>(&I)) {
+          A.getOrCreateAAFor<AAAddressSpace>(
+              IRPosition::value(*CmpX->getPointerOperand()));
+        }
       }
     }
   }

``````````

</details>


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


More information about the llvm-commits mailing list