<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Analysis/ValueTracking.cpp, branch users/vitalybuka/spr/main.clangcodegen-remove-simplifycfgpass-preceding-removetrapspass</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>[ValueTracking] Add more conditions in to `isTruePredicate`</title>
<updated>2024-04-04T17:42:58+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2024-03-21T03:08:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=678f32ab66508aea2068a5e4e07d53b71ce5cf31'/>
<id>678f32ab66508aea2068a5e4e07d53b71ce5cf31</id>
<content type='text'>
There is one notable "regression". This patch replaces the bespoke `or
disjoint` logic we a direct match. This means we fail some
simplification during `instsimplify`.
All the cases we fail in `instsimplify` we do handle in `instcombine`
as we add `disjoint` flags.

Other than that, just some basic cases.

See proofs: https://alive2.llvm.org/ce/z/_-g7C8

Closes #86083
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is one notable "regression". This patch replaces the bespoke `or
disjoint` logic we a direct match. This means we fail some
simplification during `instsimplify`.
All the cases we fail in `instsimplify` we do handle in `instcombine`
as we add `disjoint` flags.

Other than that, just some basic cases.

See proofs: https://alive2.llvm.org/ce/z/_-g7C8

Closes #86083
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Infer known bits fromfrom `(icmp eq (and/or x,y), C)`</title>
<updated>2024-04-04T17:42:58+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2024-03-28T19:24:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=05cff99a29b2df17142907aa81ae488559756f01'/>
<id>05cff99a29b2df17142907aa81ae488559756f01</id>
<content type='text'>
In `(icmp eq (and x,y), C)` all 1s in `C` must also be set in both
`x`/`y`.

In `(icmp eq (or x,y), C)` all 0s in `C` must also be set in both
`x`/`y`.

Closes #87143
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In `(icmp eq (and x,y), C)` all 1s in `C` must also be set in both
`x`/`y`.

In `(icmp eq (or x,y), C)` all 0s in `C` must also be set in both
`x`/`y`.

Closes #87143
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Tracking `or disjoint` conditions as `add` in Assumption/DomCondition Cache</title>
<updated>2024-03-28T18:49:05+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2024-03-21T01:12:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=637421cb887fd51e6edde31d8f9e041f53c3f495'/>
<id>637421cb887fd51e6edde31d8f9e041f53c3f495</id>
<content type='text'>
We can definitionally treat `or disjoint` as `add` anywhere.

Closes #86302
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We can definitionally treat `or disjoint` as `add` anywhere.

Closes #86302
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Handle range attributes (#85143)</title>
<updated>2024-03-20T11:43:00+00:00</updated>
<author>
<name>Andreas Jonson</name>
<email>andjo403@hotmail.com</email>
</author>
<published>2024-03-20T11:43:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e66cfebb04ff4fcf313905f49dbd863e7113432c'/>
<id>e66cfebb04ff4fcf313905f49dbd863e7113432c</id>
<content type='text'>
Handle the range attribute in ValueTracking.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Handle the range attribute in ValueTracking.</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Handle `not` in `isImpliedCondition` (#85397)</title>
<updated>2024-03-20T08:16:42+00:00</updated>
<author>
<name>Yingwei Zheng</name>
<email>dtcxzyw2333@gmail.com</email>
</author>
<published>2024-03-20T08:16:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f0420c7bc67339e080cb2a13b6f3eb824faf9288'/>
<id>f0420c7bc67339e080cb2a13b6f3eb824faf9288</id>
<content type='text'>
This patch handles `not` in `isImpliedCondition` to enable more fold in
some multi-use cases.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch handles `not` in `isImpliedCondition` to enable more fold in
some multi-use cases.</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Move MD_range handling to isKnownNonZeroFromOperator()</title>
<updated>2024-03-19T15:16:48+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-03-19T15:14:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2cc75aed0925f3c7e8e50b2f4bdc94daac4cb08d'/>
<id>2cc75aed0925f3c7e8e50b2f4bdc94daac4cb08d</id>
<content type='text'>
All the isKnownNonZero() handling for instructions should be inside
this function. This makes the structure more similar to
computeKnownBitsFromOperator() as well.

This may not be entirely NFC due to different depth handling.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All the isKnownNonZero() handling for instructions should be inside
this function. This makes the structure more similar to
computeKnownBitsFromOperator() as well.

This may not be entirely NFC due to different depth handling.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Fix release build</title>
<updated>2024-03-19T15:07:14+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-03-19T15:01:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d1e2305a6d70bbf565104644a4594cbf4f78e6ac'/>
<id>d1e2305a6d70bbf565104644a4594cbf4f78e6ac</id>
<content type='text'>
Move the declaration of the Ty variable outside the NDEBUG guard
and make use of it in the remainder of the function.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the declaration of the Ty variable outside the NDEBUG guard
and make use of it in the remainder of the function.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Handle vector range metadata in isKnownNonZero()</title>
<updated>2024-03-19T14:50:13+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-03-19T14:46:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6872a646523c1e85a98dfa20b2f4dd7774e10ba4'/>
<id>6872a646523c1e85a98dfa20b2f4dd7774e10ba4</id>
<content type='text'>
Nowadays !range can be placed on instructions with vector of int
return value. Support this case in isKnownNonZero().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nowadays !range can be placed on instructions with vector of int
return value. Support this case in isKnownNonZero().
</pre>
</div>
</content>
</entry>
<entry>
<title>ValueTracking: Fix bug with fcmp false to nan constant</title>
<updated>2024-03-19T09:22:45+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2024-03-19T08:54:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1a6953a75d3120a4f9196911e6a6b79fcc315553'/>
<id>1a6953a75d3120a4f9196911e6a6b79fcc315553</id>
<content type='text'>
If we had a comparison to a literal nan with a false predicate,
we were incorrectly treating it as an unordered compare. This was
correct for fcmp true, but not fcmp false. I noticed this in the
review for e44d3b3e503fa12fdaead2936b28844aa36237c1 but misdiagnosed
the reason. Also change the test for the fcmp true case to be more
useful, but it wasn't wrong previously.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we had a comparison to a literal nan with a false predicate,
we were incorrectly treating it as an unordered compare. This was
correct for fcmp true, but not fcmp false. I noticed this in the
review for e44d3b3e503fa12fdaead2936b28844aa36237c1 but misdiagnosed
the reason. Also change the test for the fcmp true case to be more
useful, but it wasn't wrong previously.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ValueTracking] Handle non-canonical operand order in `isImpliedCondICmps`</title>
<updated>2024-03-17T22:46:06+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2024-03-17T17:07:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=01d8e1ca01223bdeda74096be2a1d869b2d52ea2'/>
<id>01d8e1ca01223bdeda74096be2a1d869b2d52ea2</id>
<content type='text'>
We don't always have canonical order here, so do it manually.

Closes #85575
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We don't always have canonical order here, so do it manually.

Closes #85575
</pre>
</div>
</content>
</entry>
</feed>
