From 7daadf21fe976bfa9ea9c90bb8d1f29c8e543b6d Mon Sep 17 00:00:00 2001 From: Nadav Rotem Date: Fri, 4 Jan 2013 17:49:45 +0000 Subject: [PATCH] Update the docs about the new unroll features. llvm-svn: 171470 --- llvm/docs/Vectorizers.rst | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/llvm/docs/Vectorizers.rst b/llvm/docs/Vectorizers.rst index d679ca495404..bbf337cec951 100644 --- a/llvm/docs/Vectorizers.rst +++ b/llvm/docs/Vectorizers.rst @@ -35,6 +35,27 @@ will only vectorize loops that do not require a major increase in code size. We plan to enable the Loop Vectorizer by default as part of the LLVM 3.3 release. +Command line flags +^^^^^^^^^^^^^^^^^^ + +The loop vectorizer uses a cost model to decide on the optimal vectorization factor +and unroll factor. However, users of the vectorizer can force the vectorizer to use +specific values. Both 'clang' and 'opt' support the flags below. + +Users can control the vectorization SIMD width using the command line flag "-force-vector-width". + +.. code-block:: console + + $ clang -mllvm -force-vector-width=8 ... + $ opt -loop-vectorize -force-vector-width=8 ... + +Users can control the unroll factor using the command line flag "-force-vector-unroll" + +.. code-block:: console + + $ clang -mllvm -force-vector-unroll=2 ... + $ opt -loop-vectorize -force-vector-unroll=2 ... + Features -------- @@ -226,13 +247,8 @@ to be used simultaneously. 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 - +The Loop Vectorizer uses a cost model to decide when it is profitable to unroll loops. +The decision to unroll the loop depends on the register pressure and the generated code size. Performance -----------