Divergence analysis for GPU programs
authorJingyue Wu <jingyue@google.com>
Fri, 10 Apr 2015 05:03:50 +0000 (05:03 +0000)
committerJingyue Wu <jingyue@google.com>
Fri, 10 Apr 2015 05:03:50 +0000 (05:03 +0000)
commit5da831cc3109ff1fc5c8f43be2cf1a1f52e030da
treebc580cdb0efc9fce2e03473d920d295c31a16e78
parent5c65f58f6487dd5d9dec43d927dd9842e8b72ba2
Divergence analysis for GPU programs

Summary:
Some optimizations such as jump threading and loop unswitching can negatively
affect performance when applied to divergent branches. The divergence analysis
added in this patch conservatively estimates which branches in a GPU program
can diverge. This information can then help LLVM to run certain optimizations
selectively.

Test Plan: test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll

Reviewers: resistor, hfinkel, eliben, meheff, jholewinski

Subscribers: broune, bjarke.roune, madhur13490, tstellarAMD, dberlin, echristo, jholewinski, llvm-commits

Differential Revision: http://reviews.llvm.org/D8576

llvm-svn: 234567
14 files changed:
llvm/include/llvm/Analysis/Passes.h
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/LinkAllPasses.h
llvm/lib/Analysis/Analysis.cpp
llvm/lib/Analysis/CMakeLists.txt
llvm/lib/Analysis/DivergenceAnalysis.cpp [new file with mode: 0644]
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
llvm/test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll [new file with mode: 0644]
llvm/test/Analysis/DivergenceAnalysis/NVPTX/lit.local.cfg [new file with mode: 0644]