[llvm] r179510 - Docs: merge the description of the BB and SLP vectorizers and document the -fslp-vectorize-aggressive flag.

Nadav Rotem nrotem at apple.com
Sun Apr 14 22:53:23 PDT 2013


Author: nadav
Date: Mon Apr 15 00:53:23 2013
New Revision: 179510

URL: http://llvm.org/viewvc/llvm-project?rev=179510&view=rev
Log:
Docs: merge the description of the BB and SLP vectorizers and document the -fslp-vectorize-aggressive flag.

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=179510&r1=179509&r2=179510&view=diff
==============================================================================
--- llvm/trunk/docs/Vectorizers.rst (original)
+++ llvm/trunk/docs/Vectorizers.rst Mon Apr 15 00:53:23 2013
@@ -292,25 +292,15 @@ And Linpack-pc with the same configurati
 
 .. image:: linpack-pc.png
 
-.. _bb-vectorizer:
-
-The Basic Block Vectorizer
-==========================
-
-Usage
-------
-
-The Basic Block Vectorizer is not enabled by default, but it can be enabled
-through clang using the command line flag:
-
-.. code-block:: console
+.. _slp-vectorizer:
 
-   $ clang -fslp-vectorize file.c
+The SLP Vectorizer
+==================
 
 Details
 -------
 
-The goal of basic-block vectorization (a.k.a. superword-level parallelism) is
+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
@@ -322,22 +312,30 @@ into vector operations.
 
 .. code-block:: c++
 
-  int foo(int a1, int a2, int b1, int b2) {
-    int r1 = a1*(a1 + b1)/b1 + 50*b1/a1;
-    int r2 = a2*(a2 + b2)/b2 + 50*b2/a2;
-    return r1 + r2;
+  void foo(int a1, int a2, int b1, int b2, int *A) {
+    A[0] = a1*(a1 + b1)/b1 + 50*b1/a1;
+    A[1] = a2*(a2 + b2)/b2 + 50*b2/a2;
   }
 
 
-.. _slp-vectorizer:
+Usage
+------
 
-The SLP Vectorizer
-==========================
+The SLP Vectorizer is not enabled by default, but it can be enabled
+through clang using the command line flag:
+
+.. code-block:: console
+
+   $ clang -fslp-vectorize file.c
+
+LLVM has a second phase basic block vectorization phase
+which is more compile-time intensive (The BB vectorizer). This optimization
+can be enabled through clang using the command line flag:
+
+.. code-block:: console
+
+   $ clang -fslp-vectorize-aggressive file.c
 
-The SLP vectorizer (superword-level parallelism) is a new experimental 
-infrastructure for vectorizing code and rolling loops. 
-A major focus of the work on the SLP vectorizer is to make it fast and
-flexible. It is designed as a library that can be used by other passes.
 
 The SLP vectorizer is in early development stages but can already vectorize
 and accelerate many programs in the LLVM test suite.





More information about the llvm-commits mailing list