diff options
author | Hal Finkel <hfinkel@anl.gov> | 2012-02-01 03:51:43 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2012-02-01 03:51:43 +0000 |
commit | de5e5ec3045a73a06b1054417f9ac6c02929e9ce (patch) | |
tree | 02f43070729c0328db2d86e33acd94df3ab52d53 /docs/Passes.html | |
parent | d0e277d272d517ca1cda368267d199f0da7cad95 (diff) | |
download | external_llvm-de5e5ec3045a73a06b1054417f9ac6c02929e9ce.zip external_llvm-de5e5ec3045a73a06b1054417f9ac6c02929e9ce.tar.gz external_llvm-de5e5ec3045a73a06b1054417f9ac6c02929e9ce.tar.bz2 |
Add a basic-block autovectorization pass.
This is the initial checkin of the basic-block autovectorization pass along with some supporting vectorization infrastructure.
Special thanks to everyone who helped review this code over the last several months (especially Tobias Grosser).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/Passes.html')
-rw-r--r-- | docs/Passes.html | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/docs/Passes.html b/docs/Passes.html index 5c42f3f..840b2ef 100644 --- a/docs/Passes.html +++ b/docs/Passes.html @@ -126,6 +126,7 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if ! <tr><td><a href="#adce">-adce</a></td><td>Aggressive Dead Code Elimination</td></tr> <tr><td><a href="#always-inline">-always-inline</a></td><td>Inliner for always_inline functions</td></tr> <tr><td><a href="#argpromotion">-argpromotion</a></td><td>Promote 'by reference' arguments to scalars</td></tr> +<tr><td><a href="#bb-vectorize">-bb-vectorize</a></td><td>Combine instructions to form vector instructions within basic blocks</td></tr> <tr><td><a href="#block-placement">-block-placement</a></td><td>Profile Guided Basic Block Placement</td></tr> <tr><td><a href="#break-crit-edges">-break-crit-edges</a></td><td>Break critical edges in CFG</td></tr> <tr><td><a href="#codegenprepare">-codegenprepare</a></td><td>Optimize for code generation</td></tr> @@ -817,6 +818,26 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if ! <!-------------------------------------------------------------------------- --> <h3> + <a name="bb-vectorize">-bb-vectorize: Basic-Block Vectorization</a> +</h3> +<div> + <p>This pass combines instructions inside basic blocks to form vector + instructions. It iterates over each basic block, attempting to pair + compatible instructions, repeating this process until no additional + pairs are selected for vectorization. When the outputs of some pair + of compatible instructions are used as inputs by some other pair of + compatible instructions, those pairs are part of a potential + vectorization chain. Instruction pairs are only fused into vector + instructions when they are part of a chain longer than some + threshold length. Moreover, the pass attempts to find the best + possible chain for each pair of compatible instructions. These + heuristics are intended to prevent vectorization in cases where + it would not yield a performance increase of the resulting code. + </p> +</div> + +<!-------------------------------------------------------------------------- --> +<h3> <a name="block-placement">-block-placement: Profile Guided Basic Block Placement</a> </h3> <div> |