llvm-project/llvm/test
Jingyue Wu e7981cee24 [NVPTX] enable SpeculativeExecution in NVPTX
Summary:
SpeculativeExecution enables a series straight line optimizations (such
as SLSR and NaryReassociate) on conditional code. For example,

  if (...)
    ... b * s ...
  if (...)
    ... (b + 1) * s ...

speculative execution can hoist b * s and (b + 1) * s from then-blocks,
so that we have

  ... b * s ...
  if (...)
    ...
  ... (b + 1) * s ...
  if (...)
    ...

Then, SLSR can rewrite (b + 1) * s to (b * s + s) because after
speculative execution b * s dominates (b + 1) * s.

The performance impact of this change is significant. It speeds up the
benchmarks running EigenFloatContractionKernelInternal16x16
(ba68f42fa6/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h?at=default#cl-526)
by roughly 2%. Some internal benchmarks that have the above code pattern
are improved by up to 40%. No significant slowdowns are observed on
Eigen CUDA microbenchmarks.

Reviewers: jholewinski, broune, eliben

Subscribers: llvm-commits, jholewinski

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

llvm-svn: 242437
2015-07-16 20:13:48 +00:00
..
Analysis Fix memcheck interval ends for pointers with negative strides 2015-07-16 14:02:58 +00:00
Assembler Extended syntax of vector version of getelementptr instruction. 2015-07-09 07:42:48 +00:00
Bindings test: Move target dependent test in their own folder for c API test 2015-06-23 06:46:54 +00:00
Bitcode Add argmemonly attribute. 2015-07-11 10:30:36 +00:00
BugPoint IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
CodeGen AArch64: Implement conditional compare sequence matching. 2015-07-16 20:02:37 +00:00
DebugInfo Add a "debugger tuning" concept that allows us to fine-tune how we 2015-07-15 22:04:54 +00:00
ExecutionEngine [Mips] Add support for MCJIT for MIPS32r6 2015-07-06 12:50:55 +00:00
Feature Revert the new EH instructions 2015-07-10 07:15:17 +00:00
FileCheck
Instrumentation [SanitizerCoverage] Don't add instrumentation to unreachable blocks. 2015-06-30 23:11:45 +00:00
Integer [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
JitListener IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
LTO Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
LibDriver LibDriver: Fix output path inference. 2015-07-08 19:00:46 +00:00
Linker Linker: Do not expect comdat to exist in source module. 2015-06-22 21:46:51 +00:00
MC [PPC] Disassemble little endian ppc instructions in the right byte order 2015-07-15 12:56:19 +00:00
Object Trying to fix the windows bots. 2015-07-16 00:38:34 +00:00
Other [llvm-extract] Drop comdats from declarations 2015-07-06 18:48:02 +00:00
SymbolRewriter
TableGen [TableGen] Improve decoding options for non-orthogonal instructions 2015-07-15 08:04:27 +00:00
Transforms [NVPTX] enable SpeculativeExecution in NVPTX 2015-07-16 20:13:48 +00:00
Unit
Verifier Revert the new EH instructions 2015-07-10 07:15:17 +00:00
YAMLParser YAML: Implement block scalar parsing. 2015-05-13 23:10:51 +00:00
tools [llvm-readobj] Print MIPS PLT table 2015-07-09 18:23:10 +00:00
.clang-format
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
Makefile
Makefile.tests
TestRunner.sh
lit.cfg LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
lit.site.cfg.in