llvm-6502/include/llvm
Jingyue Wu 85e632de29 Add a speculative execution pass
Summary:
This is a pass for speculative execution of instructions for simple if-then (triangle) control flow. It's aimed at GPUs, but could perhaps be used in other contexts. Enabling this pass gives us a 1.0% geomean improvement on Google benchmark suites, with one benchmark improving 33%.

Credit goes to Jingyue Wu for writing an earlier version of this pass.

Patched by Bjarke Roune. 

Test Plan:
This patch adds a set of tests in test/Transforms/SpeculativeExecution/spec.ll
The pass is controlled by a flag which defaults to having the pass not run.

Reviewers: eliben, dberlin, meheff, jingyue, hfinkel

Reviewed By: jingyue, hfinkel

Subscribers: majnemer, jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237459 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-15 17:54:48 +00:00
..
ADT Construct ArrayRef<const T*> from vector<T> 2015-05-13 22:43:09 +00:00
Analysis Allow min/max detection to see through casts. 2015-05-15 16:04:50 +00:00
AsmParser
Bitcode
CodeGen Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
Config
DebugInfo Add more missing #includes, found by modules build. 2015-05-11 22:41:07 +00:00
ExecutionEngine
IR Add a speculative execution pass 2015-05-15 17:54:48 +00:00
IRReader
LineEditor
Linker
LTO
MC MC: clang-format MCSymbol.h, NFC 2015-05-13 21:41:14 +00:00
Object
Option
Passes
ProfileData Tidy comments in SampleProfile header. NFC. 2015-05-12 22:03:00 +00:00
Support YAML: Add support for literal block scalar I/O. 2015-05-14 23:08:22 +00:00
TableGen [TableGen] Remove ListInit::size() in favor of getSize() which does the same thing and is already used in most places. NFC. 2015-05-14 05:53:56 +00:00
Target Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
Transforms Add a speculative execution pass 2015-05-15 17:54:48 +00:00
CMakeLists.txt
InitializePasses.h Add a speculative execution pass 2015-05-15 17:54:48 +00:00
LinkAllIR.h
LinkAllPasses.h Add a speculative execution pass 2015-05-15 17:54:48 +00:00
module.modulemap
module.modulemap.build
Pass.h
PassAnalysisSupport.h
PassInfo.h
PassRegistry.h
PassSupport.h