Add global structure vectorization to docs
authorRenato Golin <renato.golin@linaro.org>
Sat, 23 Feb 2013 13:25:41 +0000 (13:25 +0000)
committerRenato Golin <renato.golin@linaro.org>
Sat, 23 Feb 2013 13:25:41 +0000 (13:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175965 91177308-0d34-0410-b5e6-96231b3b80d8

docs/Vectorizers.rst

index 07486347e374ece62f1c2e612ba51f8d50bf4b3c..0894b1eb3f10f3f3ac4bd26c9896937110945764 100644 (file)
@@ -206,6 +206,25 @@ vectorization is profitable.
       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
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^