mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Update the vectorizer docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167688 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d7cb600514
commit
d324c48e55
@ -473,15 +473,31 @@ Release Notes</a>.</h1>
|
||||
<b>-mllvm -force-vector-width=4</b>.
|
||||
The default value is <b>0</b> which means auto-select.
|
||||
<br/>
|
||||
We can now vectorize this code:
|
||||
We can now vectorize this function:
|
||||
|
||||
<pre class="doc_code">
|
||||
for (i=0; i<n; i++) {
|
||||
a[i] = b[i+1] + c[i+3] + i;
|
||||
sum += d[i];
|
||||
unsigned sum_arrays(int *A, int *B, int start, int end) {
|
||||
unsigned sum = 0;
|
||||
for (int i = start; i < end; ++i)
|
||||
sum += A[i] + B[i] + i;
|
||||
|
||||
return sum;
|
||||
}
|
||||
</pre>
|
||||
|
||||
We vectorize under the following loops:
|
||||
<ul>
|
||||
<li>The inner most loops must have a single basic block.</li>
|
||||
<li>The number of iterations are known before the loop starts to execute.</li>
|
||||
<li>The loop counter needs to be incrimented by one.</li>
|
||||
<li>The loop trip count <b>can</b> be a variable.</li>
|
||||
<li>Loops do <b>not</b> need to start at zero.</li>
|
||||
<li>The induction variable can be used inside the loop.</li>
|
||||
<li>Loop reductions are supported.</li>
|
||||
<li>Arrays with affine access pattern do <b>not</b> need to be marked as 'noalias' and are checked at runtime.</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
|
||||
</p>
|
||||
|
||||
<p>SROA - We've re-written SROA to be significantly more powerful.
|
||||
|
Loading…
x
Reference in New Issue
Block a user