<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/LoopVectorize, branch master</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/LoopVectorize?h=master</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/LoopVectorize?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-05-14T00:21:18Z</updated>
<entry>
<title>LoopVectorize: Handle loops with multiple forward inductions</title>
<updated>2013-05-14T00:21:18Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-14T00:21:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=123f18bcb9baeb6dc177cb642126a3a4d9ca8b43'/>
<id>urn:sha1:123f18bcb9baeb6dc177cb642126a3a4d9ca8b43</id>
<content type='text'>
We used to give up if we saw two integer inductions. After this patch, we base
further induction variables on the chosen one like we do in the reverse
induction and pointer induction case.

Fixes PR15720.

radar://13851975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181746 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorize: Use the widest induction variable type</title>
<updated>2013-05-11T23:04:28Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-11T23:04:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=9b5d70f07630f99f1ec5589aeaba96c6d8ab0aee'/>
<id>urn:sha1:9b5d70f07630f99f1ec5589aeaba96c6d8ab0aee</id>
<content type='text'>
Use the widest induction type encountered for the cannonical induction variable.

We used to turn the following loop into an empty loop because we used i8 as
induction variable type and truncated 1024 to 0 as trip count.

int a[1024];
void fail() {
  int reverse_induction = 1023;
  unsigned char forward_induction = 0;
  while ((reverse_induction) &gt;= 0) {
    forward_induction++;
    a[reverse_induction] = forward_induction;
    --reverse_induction;
  }
}

radar://13862901

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181667 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Add an additional testcase for PR15882.</title>
<updated>2013-05-10T22:55:44Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2013-05-10T22:55:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=ef3e423e2313ee05ba136aafc1e34c45a2702577'/>
<id>urn:sha1:ef3e423e2313ee05ba136aafc1e34c45a2702577</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181646 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorizer: Don't assert on the absence of induction variables</title>
<updated>2013-05-09T00:32:18Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-09T00:32:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=c121f5dc267e5d7048b8f27ddcfdc41f8c8e7073'/>
<id>urn:sha1:c121f5dc267e5d7048b8f27ddcfdc41f8c8e7073</id>
<content type='text'>
A computable loop exit count does not imply the presence of an induction
variable. Scalar evolution can return a value for an infinite loop.

Fixes PR15926.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181495 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorizer: Improve reduction variable identification</title>
<updated>2013-05-07T21:55:37Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-07T21:55:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=280e1df8585e62f0c801de8e4b625a7e73178d85'/>
<id>urn:sha1:280e1df8585e62f0c801de8e4b625a7e73178d85</id>
<content type='text'>
The two nested loops were confusing and also conservative in identifying
reduction variables. This patch replaces them by a worklist based approach.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181369 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorize: getConsecutiveVector must respect signed arithmetic</title>
<updated>2013-05-07T04:37:05Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-07T04:37:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=eb95cec176ad4154ac4ed509baf1c9c51ca29be0'/>
<id>urn:sha1:eb95cec176ad4154ac4ed509baf1c9c51ca29be0</id>
<content type='text'>
We were passing an i32 to ConstantInt::get where an i64 was needed and we must
also pass the sign if we pass negatives numbers. The start index passed to
getConsecutiveVector must also be signed.

Should fix PR15882.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181286 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorize: Add support for floating point min/max reductions</title>
<updated>2013-05-05T01:54:48Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-05T01:54:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=87defd0924e08dd9c9db51e2fb208f289fa6adf7'/>
<id>urn:sha1:87defd0924e08dd9c9db51e2fb208f289fa6adf7</id>
<content type='text'>
Add support for min/max reductions when "no-nans-float-math" is enabled. This
allows us to assume we have ordered floating point math and treat ordered and
unordered predicates equally.

radar://13723044

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181144 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorize: We don't need an identity element for min/max reductions</title>
<updated>2013-05-05T01:54:42Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-05-05T01:54:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=c1738fdadd1c969f13bbf09fe9c36fff56ccd709'/>
<id>urn:sha1:c1738fdadd1c969f13bbf09fe9c36fff56ccd709</id>
<content type='text'>
We can just use the initial element that feeds the reduction.

  max(max(x, y), z) == max(max(x,y), max(x,z))

radar://13723044

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181141 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>LoopVectorizer: Add support for if-conversion of PHINodes with 3+ incoming values.</title>
<updated>2013-05-03T17:42:55Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2013-05-03T17:42:55Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=4bcd5f888fa762613cf8096a79ba7b8a72665de2'/>
<id>urn:sha1:4bcd5f888fa762613cf8096a79ba7b8a72665de2</id>
<content type='text'>
By supporting the vectorization of PHINodes with more than two incoming values we can increase the complexity of nested if statements.

We can now vectorize this loop:

int foo(int *A, int *B, int n) {
  for (int i=0; i &lt; n; i++) {
    int x = 9;
    if (A[i] &gt; B[i]) {
      if (A[i] &gt; 19) {
        x = 3;
      } else if (B[i] &lt; 4 ) {
        x = 4;
      } else {
        x = 5;
      }
    }
    A[i] = x;
  }
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181037 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>TBAA: remove !tbaa from testing cases if not used.</title>
<updated>2013-05-02T18:11:35Z</updated>
<author>
<name>Manman Ren</name>
<email>mren@apple.com</email>
</author>
<published>2013-05-02T18:11:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=436849be6acc1b8fe28d27dac9baa49129710fb3'/>
<id>urn:sha1:436849be6acc1b8fe28d27dac9baa49129710fb3</id>
<content type='text'>
This will make it easier to turn on struct-path aware TBAA since the metadata
format will change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180935 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
