[llvm-commits] [llvm] r171445 - /llvm/trunk/docs/Vectorizers.rst
Nadav Rotem
nrotem at apple.com
Wed Jan 2 17:47:03 PST 2013
Author: nadav
Date: Wed Jan 2 19:47:02 2013
New Revision: 171445
URL: http://llvm.org/viewvc/llvm-project?rev=171445&view=rev
Log:
LoopVectorizer: Document the unrolling feature.
Modified:
llvm/trunk/docs/Vectorizers.rst
Modified: llvm/trunk/docs/Vectorizers.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/Vectorizers.rst?rev=171445&r1=171444&r2=171445&view=diff
==============================================================================
--- llvm/trunk/docs/Vectorizers.rst (original)
+++ llvm/trunk/docs/Vectorizers.rst Wed Jan 2 19:47:02 2013
@@ -159,8 +159,8 @@
Scatter / Gather
^^^^^^^^^^^^^^^^
-The Loop Vectorizer can vectorize code that becomes scatter/gather
-memory accesses.
+The Loop Vectorizer can vectorize code that becomes a sequence of scalar instructions
+that scatter/gathers memory.
.. code-block:: c++
@@ -203,6 +203,38 @@
| | | fmuladd |
+-----+-----+---------+
+
+Partial unrolling during vectorization
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Modern processors feature multiple execution units, and only programs that contain a
+high degree of parallelism can fully utilize the entire width of the machine.
+
+The Loop Vectorizer increases the instruction level parallelism (ILP) by
+performing partial-unrolling of loops.
+
+In the example below the entire array is accumulated into the variable 'sum'.
+This is inefficient because only a single 'adder' can be used by the processor.
+By unrolling the code the Loop Vectorizer allows two or more execution ports
+to be used.
+
+.. code-block:: c++
+
+ int foo(int *A, int *B, int n) {
+ unsigned sum = 0;
+ for (int i = 0; i < n; ++i)
+ sum += A[i];
+ return sum;
+ }
+
+At the moment the unrolling feature is not enabled by default and needs to be enabled
+in opt or clang using the following flag:
+
+.. code-block:: console
+
+ -force-vector-unroll=2
+
+
Performance
-----------
More information about the llvm-commits
mailing list