diff options
author | Nadav Rotem <nrotem@apple.com> | 2013-06-26 17:59:35 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2013-06-26 17:59:35 +0000 |
commit | b5a8a905ae58cb1019080f97130890e554afb852 (patch) | |
tree | c85fa9ee052959e4783368f8e814c1175d06acb6 /docs | |
parent | 97c2a0a1100fecb3c2dcd4d582eeaa8fe2ffb335 (diff) | |
download | external_llvm-b5a8a905ae58cb1019080f97130890e554afb852.zip external_llvm-b5a8a905ae58cb1019080f97130890e554afb852.tar.gz external_llvm-b5a8a905ae58cb1019080f97130890e554afb852.tar.bz2 |
The SLP Vectorizer works across basic blocks. Update the docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184973 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r-- | docs/Vectorizers.rst | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/docs/Vectorizers.rst b/docs/Vectorizers.rst index d565c21..221fb29 100644 --- a/docs/Vectorizers.rst +++ b/docs/Vectorizers.rst @@ -7,11 +7,11 @@ Auto-Vectorization in LLVM LLVM has two vectorizers: The :ref:`Loop Vectorizer <loop-vectorizer>`, which operates on Loops, and the :ref:`SLP Vectorizer -<slp-vectorizer>`, which optimizes straight-line code. These vectorizers +<slp-vectorizer>`. These vectorizers focus on different optimization opportunities and use different techniques. The SLP vectorizer merges multiple scalars that are found in the code into -vectors while the Loop Vectorizer widens instructions in the original loop -to operate on multiple consecutive loop iterations. +vectors while the Loop Vectorizer widens instructions in loops +to operate on multiple consecutive iterations. .. _loop-vectorizer: @@ -302,10 +302,9 @@ Details ------- The goal of SLP vectorization (a.k.a. superword-level parallelism) is -to combine similar independent instructions within simple control-flow regions -into vector instructions. Memory accesses, arithemetic operations, comparison -operations and some math functions can all be vectorized using this technique -(subject to the capabilities of the target architecture). +to combine similar independent instructions +into vector instructions. Memory accesses, arithmetic operations, comparison +operations, PHI-nodes, can all be vectorized using this technique. For example, the following function performs very similar operations on its inputs (a1, b1) and (a2, b2). The basic-block vectorizer may combine these @@ -318,8 +317,7 @@ into vector operations. A[1] = a2*(a2 + b2)/b2 + 50*b2/a2; } -The SLP-vectorizer has two phases, bottom-up, and top-down. The top-down vectorization -phase is more aggressive, but takes more time to run. +The SLP-vectorizer processes the code bottom-up, across basic blocks, in search of scalars to combine. Usage ------ |