mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 12:50:00 +00:00
Add global structure vectorization to docs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4ff470e608
commit
abafaba4d5
@ -206,6 +206,25 @@ vectorization is profitable.
|
|||||||
A[i] += 4 * B[i];
|
A[i] += 4 * B[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Global Structures Alias Analysis
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Access to global structures can also be vectorized, with alias analysis being
|
||||||
|
used to make sure accesses don't alias. Run-time checks can also be added on
|
||||||
|
pointer access to structure members.
|
||||||
|
|
||||||
|
Many variations are supported, but some that rely on undefined behaviour being
|
||||||
|
ignored (as other compilers do) are still being left un-vectorized.
|
||||||
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
struct { int A[100], K, B[100]; } Foo;
|
||||||
|
|
||||||
|
int foo() {
|
||||||
|
for (int i = 0; i < 100; ++i)
|
||||||
|
Foo.A[i] = Foo.B[i] + 100;
|
||||||
|
}
|
||||||
|
|
||||||
Vectorization of function calls
|
Vectorization of function calls
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user