[llvm] 8e1e871 - [AMDGPU] Preserve dom-tree analysis in atomic optimizer.

Pravin Jagtap via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 21 05:04:04 PDT 2023


Author: Pravin Jagtap
Date: 2023-06-21T08:02:43-04:00
New Revision: 8e1e871e2ff1d08e96e2238c8efe881a7e8b4824

URL: https://github.com/llvm/llvm-project/commit/8e1e871e2ff1d08e96e2238c8efe881a7e8b4824
DIFF: https://github.com/llvm/llvm-project/commit/8e1e871e2ff1d08e96e2238c8efe881a7e8b4824.diff

LOG: [AMDGPU] Preserve dom-tree analysis in atomic optimizer.

AMDGPUAtomicOptimizer updates the dominator tree whenever
it modified the control flow. Therefore preserving the
analysis similar to legacy PM.

Reviewed By: arsenm, yassingh, #amdgpu

Differential Revision: https://reviews.llvm.org/D153349

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
    llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
index 21696ace0aab7..a9200c4245c6b 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
@@ -145,10 +145,17 @@ PreservedAnalyses AMDGPUAtomicOptimizerPass::run(Function &F,
 
   bool IsPixelShader = F.getCallingConv() == CallingConv::AMDGPU_PS;
 
-  return AMDGPUAtomicOptimizerImpl(UA, DL, DTU, ST, IsPixelShader, ScanImpl)
-                 .run(F)
-             ? PreservedAnalyses::none()
-             : PreservedAnalyses::all();
+  bool IsChanged =
+      AMDGPUAtomicOptimizerImpl(UA, DL, DTU, ST, IsPixelShader, ScanImpl)
+          .run(F);
+
+  if (!IsChanged) {
+    return PreservedAnalyses::all();
+  }
+
+  PreservedAnalyses PA;
+  PA.preserve<DominatorTreeAnalysis>();
+  return PA;
 }
 
 bool AMDGPUAtomicOptimizerImpl::run(Function &F) {

diff  --git a/llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll b/llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll
index 3a63629bc7705..45f6d183398b9 100644
--- a/llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll
+++ b/llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll
@@ -1,5 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN:  opt -S -mtriple=amdgcn-- -passes=amdgpu-atomic-optimizer %s | FileCheck -check-prefix=IR %s
+; RUN:  opt -S -mtriple=amdgcn-- -passes='amdgpu-atomic-optimizer,verify<domtree>' %s | FileCheck -check-prefix=IR %s
 
 define amdgpu_kernel void @atomic_add_i32_offset(ptr addrspace(1) %out, i32 %in) {
 ; IR-LABEL: @atomic_add_i32_offset(


        


More information about the llvm-commits mailing list