[DA] GPUDivergenceAnalysis for unstructured GPU kernels
authorNicolai Haehnle <nhaehnle@gmail.com>
Fri, 30 Nov 2018 22:55:20 +0000 (22:55 +0000)
committerNicolai Haehnle <nhaehnle@gmail.com>
Fri, 30 Nov 2018 22:55:20 +0000 (22:55 +0000)
commit56d0ed2a508088067f417b786ae00c88bf59c66b
treea1dc79ed60fa766880834e97c83d18a224b581b0
parent39298cae9f9a45a67e2630770899c42171037be4
[DA] GPUDivergenceAnalysis for unstructured GPU kernels

Summary:
This is patch #3 of the new DivergenceAnalysis

  <https://lists.llvm.org/pipermail/llvm-dev/2018-May/123606.html>

The GPUDivergenceAnalysis is intended to eventually supersede the existing
LegacyDivergenceAnalysis. The existing LegacyDivergenceAnalysis produces
incorrect results on unstructured Control-Flow Graphs:

  <https://bugs.llvm.org/show_bug.cgi?id=37185>

This patch adds the option -use-gpu-divergence-analysis to the
LegacyDivergenceAnalysis to turn it into a transparent wrapper for the
GPUDivergenceAnalysis.

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: jholewinski, jvesely, jfb, llvm-commits, alex-t, sameerds, arsenm, nhaehnle

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

llvm-svn: 348048
23 files changed:
llvm/include/llvm/Analysis/DivergenceAnalysis.h
llvm/include/llvm/Analysis/LegacyDivergenceAnalysis.h
llvm/lib/Analysis/DivergenceAnalysis.cpp
llvm/lib/Analysis/LegacyDivergenceAnalysis.cpp
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/always_uniform.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/hidden_diverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/hidden_loopdiverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/intrinsics.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/irreducible.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/kernel-args.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/lit.local.cfg [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/llvm.amdgcn.buffer.atomic.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/llvm.amdgcn.image.atomic.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/no-return-blocks.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/phi-undef.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/temporal_diverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/workitem-intrinsics.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/daorder.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/hidden_diverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/irreducible.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/lit.local.cfg [new file with mode: 0644]