Update docs.

llvm-svn: 216954
This commit is contained in:
Bill Wendling
2014-09-02 21:29:19 +00:00
parent 08cbe67bbf
commit f77ae18bae
2 changed files with 5 additions and 57 deletions

View File

@@ -1787,12 +1787,8 @@ Extensions for loop hint optimizations
The ``#pragma clang loop`` directive is used to specify hints for optimizing the
subsequent for, while, do-while, or c++11 range-based for loop. The directive
provides options for vectorization, interleaving, and unrolling. Loop hints can
be specified before any loop and will be ignored if the optimization is not safe
to apply.
Vectorization and Interleaving
------------------------------
provides options for vectorization and interleaving. Loop hints can be specified
before any loop and will be ignored if the optimization is not safe to apply.
A vectorized loop performs multiple iterations of the original loop
in parallel using vector instructions. The instruction set of the target
@@ -1835,46 +1831,6 @@ width/count of the set of target architectures supported by your application.
Specifying a width/count of 1 disables the optimization, and is equivalent to
``vectorize(disable)`` or ``interleave(disable)``.
Loop Unrolling
--------------
Unrolling a loop reduces the loop control overhead and exposes more
opportunities for ILP. Loops can be fully or partially unrolled. Full unrolling
eliminates the loop and replaces it with an enumerated sequence of loop
iterations. Full unrolling is only possible if the loop trip count is known at
compile time. Partial unrolling replicates the loop body within the loop and
reduces the trip count.
If ``unroll(enable)`` is specified the unroller will attempt to fully unroll the
loop if the trip count is known at compile time. If the loop count is not known
or the fully unrolled code size is greater than the limit specified by the
`-pragma-unroll-threshold` command line option the loop will be partially
unrolled subject to the same limit.
.. code-block:: c++
#pragma clang loop unroll(enable)
for(...) {
...
}
The unroll count can be specified explicitly with ``unroll_count(_value_)`` where
_value_ is a positive integer. If this value is greater than the trip count the
loop will be fully unrolled. Otherwise the loop is partially unrolled subject
to the `-pragma-unroll-threshold` limit.
.. code-block:: c++
#pragma clang loop unroll_count(8)
for(...) {
...
}
Unrolling of a loop can be prevented by specifying ``unroll(disable)``.
Additional Information
----------------------
For convenience multiple loop hints can be specified on a single line.
.. code-block:: c++

View File

@@ -184,17 +184,9 @@ New Pragmas in Clang
-----------------------
Loop optimization hints can be specified using the new `#pragma clang loop`
directive just prior to the desired loop. The directive allows vectorization,
interleaving, and unrolling to be enabled or disabled. Vector width as well
as interleave and unrolling count can be manually specified. See
:ref:`langext-pragma-loop` for details.
Clang now supports the `#pragma unroll` directive to specify loop unrolling
optimization hints. Placed just prior to the desired loop, `#pragma unroll`
directs the loop unroller to attempt to fully unroll the loop. The pragma may
also be specified with a positive integer parameter indicating the desired
unroll count: `#pragma unroll _value_`. The unroll count parameter can be
optionally enclosed in parentheses.
directive just prior to the desired loop. The directive allows vectorization and
interleaving to be enabled or disabled. Vector width as well as interleave count
can be manually specified. See :ref:`langext-pragma-loop` for details.
C Language Changes in Clang
---------------------------