aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-diff/DifferenceEngine.cpp
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2020-02-21 13:36:01 +0100
committerNicolai Hähnle <nicolai.haehnle@amd.com>2020-02-26 15:30:42 +0100
commit0f1df4892538ccd9ecc23d68c65c7bd2b00f3f01 (patch)
treeabfd0cc44e2a6fc4345de465a7cb8b4a9fcb65bf /llvm/tools/llvm-diff/DifferenceEngine.cpp
parentfcfd4fb686b83a5c8c7ba2c3bd4992ff24e83870 (diff)
downloadllvm-0f1df4892538ccd9ecc23d68c65c7bd2b00f3f01.zip
llvm-0f1df4892538ccd9ecc23d68c65c7bd2b00f3f01.tar.gz
llvm-0f1df4892538ccd9ecc23d68c65c7bd2b00f3f01.tar.bz2
AMDGPU/SIInsertSkips: Fix the determination of whether early-exit-after-kill is possible
Summary: The old code made some incorrect assumptions about the order in which basic blocks are laid out in a function. This could lead to incorrect early-exits, especially when kills occurred inside of loops. The new approach is to check whether the point where the conditional kill occurs dominates all reachable code. If that is the case, there cannot be any other threads in the wave that are waiting to rejoin at a later point in the CFG, i.e. if exec=0 at that point, then all threads really are dead and we can exit the wave. Make some other minor cleanups to the pass while we're at it. v2: preserve the dominator tree Reviewers: arsenm, cdevadas, foad, critson Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74908 Change-Id: Ia0d2b113ac944ad642d1c622b6da1b20aa1aabcc
Diffstat (limited to 'llvm/tools/llvm-diff/DifferenceEngine.cpp')
0 files changed, 0 insertions, 0 deletions