[PATCH] D50433: A New Divergence Analysis for LLVM

Simon Moll via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 24 07:01:25 PDT 2018


simoll updated this revision to Diff 162372.
simoll edited the summary of this revision.
simoll added a comment.

General

- Doxygen comments in DA, SDA headers.
- LLVM Coding Style: upper-case first letter in variable names, comments, ...
- Use find() instead of operator[] or count().
- Use `BasicBlock::phis()` to traverse PHI nodes in BB.
- Spelling, typos, ..

LegacyDivergenceAnalysis

- Default to the existing implementation if the CFG is irreducible (ignore `-use-gpu-divergence-analysis` flag on irreducible CFGs). Added irreducible loop tests (`Analysis/DivergenceAnalysis/AMDGPU/irreducible.ll` and `Analysis/DivergenceAnalysis/NVPTX/irreducible.ll`).

SyncDependendenceAnalysis

- Use `std::unique_ptr<ConstBlockSet>`.

DivergenceAnalysis

- Fixed `isTemporalDivergent` for the case that users live in sibling loops (along with tests in `Analysis/DivergenceAnalysis/AMDGPU/temporal_diverge.ll`).
- Fixed `taintLoopLiveOuts` (successors of wrong block taken). This is also covered by the `temporal_diverge.ll` tests.


Repository:
  rL LLVM

https://reviews.llvm.org/D50433

Files:
  include/llvm/ADT/PostOrderIterator.h
  include/llvm/Analysis/DivergenceAnalysis.h
  include/llvm/Analysis/LegacyDivergenceAnalysis.h
  include/llvm/Analysis/Passes.h
  include/llvm/Analysis/SyncDependenceAnalysis.h
  include/llvm/Analysis/TargetTransformInfo.h
  include/llvm/CodeGen/SelectionDAG.h
  include/llvm/CodeGen/TargetLowering.h
  include/llvm/InitializePasses.h
  include/llvm/LinkAllPasses.h
  lib/Analysis/Analysis.cpp
  lib/Analysis/CMakeLists.txt
  lib/Analysis/DivergenceAnalysis.cpp
  lib/Analysis/LegacyDivergenceAnalysis.cpp
  lib/Analysis/SyncDependenceAnalysis.cpp
  lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
  lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
  lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
  lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp
  lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
  lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
  lib/Target/AMDGPU/SIISelLowering.cpp
  lib/Target/AMDGPU/SIISelLowering.h
  lib/Transforms/Scalar/LoopUnswitch.cpp
  lib/Transforms/Scalar/StructurizeCFG.cpp
  test/Analysis/DivergenceAnalysis/AMDGPU/always_uniform.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/hidden_diverge.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/hidden_loopdiverge.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/intrinsics.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/irreducible.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/kernel-args.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/llvm.amdgcn.buffer.atomic.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/llvm.amdgcn.image.atomic.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/loads.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/no-return-blocks.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/phi-undef.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/temporal_diverge.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll
  test/Analysis/DivergenceAnalysis/AMDGPU/workitem-intrinsics.ll
  test/Analysis/DivergenceAnalysis/Loops/IndirectUniAccess.ll
  test/Analysis/DivergenceAnalysis/Loops/LoopWithDivBranch.ll
  test/Analysis/DivergenceAnalysis/Loops/LoopWithDivLoop.ll
  test/Analysis/DivergenceAnalysis/Loops/LoopWithLI.ll
  test/Analysis/DivergenceAnalysis/Loops/LoopWithUniBranch.ll
  test/Analysis/DivergenceAnalysis/Loops/LoopWithUniLoop.ll
  test/Analysis/DivergenceAnalysis/Loops/NonAffineUniLoop.ll
  test/Analysis/DivergenceAnalysis/Loops/SingleBlockLoop.ll
  test/Analysis/DivergenceAnalysis/NVPTX/daorder.ll
  test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll
  test/Analysis/DivergenceAnalysis/NVPTX/hidden_diverge.ll
  test/Analysis/DivergenceAnalysis/NVPTX/irreducible.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/intrinsics.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/kernel-args.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/lit.local.cfg
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/llvm.amdgcn.buffer.atomic.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/llvm.amdgcn.image.atomic.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/no-return-blocks.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/phi-undef.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/unreachable-loop-block.ll
  test/Analysis/LegacyDivergenceAnalysis/AMDGPU/workitem-intrinsics.ll
  test/Analysis/LegacyDivergenceAnalysis/NVPTX/diverge.ll
  test/Analysis/LegacyDivergenceAnalysis/NVPTX/lit.local.cfg

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50433.162372.patch
Type: text/x-patch
Size: 149836 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180824/dfabc920/attachment.bin>


More information about the llvm-commits mailing list