[PATCH] D18626: [PM] Add a SpeculativeExecution pass for targets with divergent branches.

Justin Lebar via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 30 14:46:36 PDT 2016


jlebar created this revision.
jlebar added a reviewer: chandlerc.
jlebar added subscribers: tra, rnk, jingyue, llvm-commits.
Herald added a subscriber: joker.eph.

This IR pass is helpful for GPUs, and other targets with divergent
branches.  It's a nop on targets without divergent branches.

http://reviews.llvm.org/D18626

Files:
  lib/Transforms/IPO/PassManagerBuilder.cpp

Index: lib/Transforms/IPO/PassManagerBuilder.cpp
===================================================================
--- lib/Transforms/IPO/PassManagerBuilder.cpp
+++ lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -234,6 +234,8 @@
   else
     MPM.add(createScalarReplAggregatesPass(-1, false));
   MPM.add(createEarlyCSEPass());              // Catch trivial redundancies
+  // Speculative execution if the target has divergent branches; otherwise nop.
+  MPM.add(createSpeculativeExecutionIfHasBranchDivergencePass());
   MPM.add(createJumpThreadingPass());         // Thread jumps.
   MPM.add(createCorrelatedValuePropagationPass()); // Propagate conditionals
   MPM.add(createCFGSimplificationPass());     // Merge & remove BBs


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18626.52131.patch
Type: text/x-patch
Size: 730 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160330/f1d4676f/attachment.bin>


More information about the llvm-commits mailing list