1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/lib
Matthew Simpson 2ebb736740 [LV] Vectorize first-order recurrences
This patch enables the vectorization of first-order recurrences. A first-order
recurrence is a non-reduction recurrence relation in which the value of the
recurrence in the current loop iteration equals a value defined in the previous
iteration. The load PRE of the GVN pass often creates these recurrences by
hoisting loads from within loops.

In this patch, we add a new recurrence kind for first-order phi nodes and
attempt to vectorize them if possible. Vectorization is performed by shuffling
the values for the current and previous iterations. The vectorization cost
estimate is updated to account for the added shuffle instruction.

Contributed-by: Matthew Simpson and Chad Rosier <mcrosier@codeaurora.org>
Differential Revision: http://reviews.llvm.org/D16197

llvm-svn: 261346
2016-02-19 17:56:08 +00:00
..
Analysis Remove uses of builtin comma operator. 2016-02-18 22:09:30 +00:00
AsmParser [IR] Extend cmpxchg to allow pointer type operands 2016-02-19 00:06:41 +00:00
Bitcode Bitcode writer: fix a typo, using getName() instead of getSourceFileName() 2016-02-16 22:07:03 +00:00
CodeGen [StatepointLowering] Change AllocatedStackSlots to use SmallBitVector 2016-02-19 17:15:26 +00:00
DebugInfo [DebugInfoPDB] Add source / line number accessors for PDB. 2016-02-18 18:47:29 +00:00
ExecutionEngine Fix build LLVM with -D LLVM_USE_INTEL_JITEVENTS:BOOL=ON on Windows 2016-02-16 23:52:18 +00:00
Fuzzer [libFuzzer] only read MaxLen bytes from every file in the corpus to speedup loading the corpus 2016-02-18 21:49:10 +00:00
IR [IR] Extend cmpxchg to allow pointer type operands 2016-02-19 00:06:41 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LibDriver Remove autoconf support 2016-01-26 21:29:08 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Pass a std::unique_ptr to IRMover::move. 2016-02-16 18:50:12 +00:00
LTO [PM] Port the PostOrderFunctionAttrs pass to the new pass manager and 2016-02-18 11:03:11 +00:00
MC Add support for merging strings with alignment larger than one char. 2016-02-19 14:13:52 +00:00
Object Represent the dynamic table itself with a DynRegionInfo. 2016-02-17 16:48:00 +00:00
Option Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Passes [PM] Port the PostOrderFunctionAttrs pass to the new pass manager and 2016-02-18 11:03:11 +00:00
ProfileData Add profile summary support for sample profile. 2016-02-19 03:15:33 +00:00
Support When printing MIR, output to errs() rather than outs(). 2016-02-19 00:18:46 +00:00
TableGen Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Target AMDGPU/SI: Fix s_waitcnt insertion for flat instructions 2016-02-19 15:33:13 +00:00
Transforms [LV] Vectorize first-order recurrences 2016-02-19 17:56:08 +00:00
CMakeLists.txt
LLVMBuild.txt