<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/IndVarSimplify/outer_phi.ll, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[IndVarSimplify] Convert tests to opaque pointers (NFC)</title>
<updated>2022-12-13T13:50:13+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-12-13T13:44:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=864bb84a427de367528d15270790dd152871daf2'/>
<id>864bb84a427de367528d15270790dd152871daf2</id>
<content type='text'>
This leaves lftr.ll alone, because there is a suspicious test diff.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This leaves lftr.ll alone, because there is a suspicious test diff.
</pre>
</div>
</content>
</entry>
<entry>
<title>[test][IndVarSimplify] Use -passes syntax in RUN lines. NFC</title>
<updated>2022-10-13T08:44:37+00:00</updated>
<author>
<name>Bjorn Pettersson</name>
<email>bjorn.a.pettersson@ericsson.com</email>
</author>
<published>2022-10-12T17:17:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f15ed06a65de2715130ffeba5ed3698a08047d27'/>
<id>f15ed06a65de2715130ffeba5ed3698a08047d27</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCEV] Prove condition invariance via context, try 2</title>
<updated>2022-08-22T07:31:19+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2022-08-22T06:09:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e587199a505bf517935026e878fc811a38532e4a'/>
<id>e587199a505bf517935026e878fc811a38532e4a</id>
<content type='text'>
Initial implementation had too weak requirements to positive/negative
range crossings. Not crossing zero with nuw is not enough for two reasons:

- If ArLHS has negative step, it may turn from positive to negative
  without crossing 0 boundary from left to right (and crossing right to
  left doesn't count for unsigned);
- If ArLHS crosses SINT_MAX boundary, it still turns from positive to
  negative;

In fact we require that ArLHS always stays non-negative or negative,
which an be enforced by the following set of preconditions:

- both nuw and nsw;
- positive step (looks liftable);

Because of positive step, boundary crossing is only possible from left
part to the right part. And because of no-wrap flags, it is guaranteed
to never happen.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Initial implementation had too weak requirements to positive/negative
range crossings. Not crossing zero with nuw is not enough for two reasons:

- If ArLHS has negative step, it may turn from positive to negative
  without crossing 0 boundary from left to right (and crossing right to
  left doesn't count for unsigned);
- If ArLHS crosses SINT_MAX boundary, it still turns from positive to
  negative;

In fact we require that ArLHS always stays non-negative or negative,
which an be enforced by the following set of preconditions:

- both nuw and nsw;
- positive step (looks liftable);

Because of positive step, boundary crossing is only possible from left
part to the right part. And because of no-wrap flags, it is guaranteed
to never happen.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[SCEV] Prove condition invariance via context"</title>
<updated>2022-08-19T14:02:06+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2022-08-19T13:51:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f798c042f42aaa47604af30eb235edb22d0ca5d3'/>
<id>f798c042f42aaa47604af30eb235edb22d0ca5d3</id>
<content type='text'>
This reverts commit a3d1fb3b59b473e4f262a05f187de6474b7721e7.

Reverting until investigation of https://github.com/llvm/llvm-project/issues/57247
has concluded.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit a3d1fb3b59b473e4f262a05f187de6474b7721e7.

Reverting until investigation of https://github.com/llvm/llvm-project/issues/57247
has concluded.
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCEV] Prove condition invariance via context</title>
<updated>2022-08-12T07:23:35+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2022-08-12T06:27:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a3d1fb3b59b473e4f262a05f187de6474b7721e7'/>
<id>a3d1fb3b59b473e4f262a05f187de6474b7721e7</id>
<content type='text'>
Contextual knowledge may be used to prove invariance of some conditions.
For example, in this case:
```
  ; %len &gt;= 0
  guard(%iv = {start,+,1}&lt;nuw&gt; &lt;s %len)
  guard(%iv = {start,+,1}&lt;nuw&gt; &lt;u %len)
```
the 2nd check always fails if `start` is negative and always passes otherwise.

It looks like there are more opportunities of this kind that are still to be
implemented in the future.

Differential Revision: https://reviews.llvm.org/D129753
Reviewed By: apilipenko
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Contextual knowledge may be used to prove invariance of some conditions.
For example, in this case:
```
  ; %len &gt;= 0
  guard(%iv = {start,+,1}&lt;nuw&gt; &lt;s %len)
  guard(%iv = {start,+,1}&lt;nuw&gt; &lt;u %len)
```
the 2nd check always fails if `start` is negative and always passes otherwise.

It looks like there are more opportunities of this kind that are still to be
implemented in the future.

Differential Revision: https://reviews.llvm.org/D129753
Reviewed By: apilipenko
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCEV] Prove implication of predicates to their sign-flipped counterparts</title>
<updated>2021-10-15T04:49:18+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2021-10-15T04:01:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=90ae538cab4b0535450b079244241424ff90711c'/>
<id>90ae538cab4b0535450b079244241424ff90711c</id>
<content type='text'>
This patch teaches SCEV two implication rules:

  x &lt;u y &amp;&amp; y &gt;=s 0 --&gt; x &lt;s y,
  x &lt;s y &amp;&amp; y &lt;s 0 --&gt; x &lt;u y.

And all equivalents with signs/parts swapped.

Differential Revision: https://reviews.llvm.org/D110517
Reviewed By: nikic
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch teaches SCEV two implication rules:

  x &lt;u y &amp;&amp; y &gt;=s 0 --&gt; x &lt;s y,
  x &lt;s y &amp;&amp; y &lt;s 0 --&gt; x &lt;u y.

And all equivalents with signs/parts swapped.

Differential Revision: https://reviews.llvm.org/D110517
Reviewed By: nikic
</pre>
</div>
</content>
</entry>
<entry>
<title>[Test] Few more symmetrical test for D110517</title>
<updated>2021-10-06T12:02:28+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2021-10-06T12:00:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=576ab15b9092e5a3ef7db656d2472d633cae96a5'/>
<id>576ab15b9092e5a3ef7db656d2472d633cae96a5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Test] Add some more symmetrical test cases for D110517</title>
<updated>2021-10-06T10:38:48+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2021-10-06T10:36:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=78873840ff4112e6fb8e04fa6f7637febe114c96'/>
<id>78873840ff4112e6fb8e04fa6f7637febe114c96</id>
<content type='text'>
More similar cases to see that the opt we are trying to make is generic enough.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
More similar cases to see that the opt we are trying to make is generic enough.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Test] Add some simple tests where IndVars cannot remove a check in loop</title>
<updated>2021-09-27T05:12:51+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2021-09-27T05:12:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e787678cef03348fddce84d45963fbe4d6570d8e'/>
<id>e787678cef03348fddce84d45963fbe4d6570d8e</id>
<content type='text'>
Previously I've added tests that require context for inference, but it
seems tha SCEV can't prove same facts even when the context isn't required.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously I've added tests that require context for inference, but it
seems tha SCEV can't prove same facts even when the context isn't required.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Test] One more missing opportunity on IndVars check removal</title>
<updated>2021-09-17T07:52:15+00:00</updated>
<author>
<name>Max Kazantsev</name>
<email>mkazantsev@azul.com</email>
</author>
<published>2021-09-17T07:20:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=74fa174f339ce378c44010c579634ddefb35ff29'/>
<id>74fa174f339ce378c44010c579634ddefb35ff29</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
