[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