<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/JumpThreading, 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>Reland "[NVPTX] Unify and extend barrier{.cta} intrinsic support" (#141143)</title>
<updated>2025-05-23T02:38:10+00:00</updated>
<author>
<name>Alex MacLean</name>
<email>amaclean@nvidia.com</email>
</author>
<published>2025-05-23T02:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3a84a4e55d896e573fe175f34c793b0c294dec6b'/>
<id>3a84a4e55d896e573fe175f34c793b0c294dec6b</id>
<content type='text'>
Note: This relands #140615 adding a ".count" suffix to the non-".all"
variants.

Our current intrinsic support for barrier intrinsics is confusing and
incomplete, with multiple intrinsics mapping to the same instruction and
intrinsic names not clearly conveying intrinsic semantics. Further, we
lack support for some variants. This change unifies the IR
representation to a single consistently named set of intrinsics.

- llvm.nvvm.barrier.cta.sync.aligned.all(i32)
- llvm.nvvm.barrier.cta.sync.aligned.count(i32, i32)
- llvm.nvvm.barrier.cta.arrive.aligned.count(i32, i32)
- llvm.nvvm.barrier.cta.sync.all(i32)
- llvm.nvvm.barrier.cta.sync.count(i32, i32)
- llvm.nvvm.barrier.cta.arrive.count(i32, i32)

The following Auto-Upgrade rules are used to maintain compatibility with
IR using the legacy intrinsics:

* llvm.nvvm.barrier0 --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(0)
* llvm.nvvm.barrier.n --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.bar.sync --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.barrier --&gt; llvm.nvvm.barrier.cta.sync.aligned.count(x, y)
* llvm.nvvm.barrier.sync --&gt; llvm.nvvm.barrier.cta.sync.all(x)
* llvm.nvvm.barrier.sync.cnt --&gt; llvm.nvvm.barrier.cta.sync.count(x, y)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Note: This relands #140615 adding a ".count" suffix to the non-".all"
variants.

Our current intrinsic support for barrier intrinsics is confusing and
incomplete, with multiple intrinsics mapping to the same instruction and
intrinsic names not clearly conveying intrinsic semantics. Further, we
lack support for some variants. This change unifies the IR
representation to a single consistently named set of intrinsics.

- llvm.nvvm.barrier.cta.sync.aligned.all(i32)
- llvm.nvvm.barrier.cta.sync.aligned.count(i32, i32)
- llvm.nvvm.barrier.cta.arrive.aligned.count(i32, i32)
- llvm.nvvm.barrier.cta.sync.all(i32)
- llvm.nvvm.barrier.cta.sync.count(i32, i32)
- llvm.nvvm.barrier.cta.arrive.count(i32, i32)

The following Auto-Upgrade rules are used to maintain compatibility with
IR using the legacy intrinsics:

* llvm.nvvm.barrier0 --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(0)
* llvm.nvvm.barrier.n --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.bar.sync --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.barrier --&gt; llvm.nvvm.barrier.cta.sync.aligned.count(x, y)
* llvm.nvvm.barrier.sync --&gt; llvm.nvvm.barrier.cta.sync.all(x)
* llvm.nvvm.barrier.sync.cnt --&gt; llvm.nvvm.barrier.cta.sync.count(x, y)</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[NVPTX] Unify and extend barrier{.cta} intrinsic support (#140615)"</title>
<updated>2025-05-22T17:28:43+00:00</updated>
<author>
<name>Alex Maclean</name>
<email>amaclean@nvidia.com</email>
</author>
<published>2025-05-22T17:28:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e72d8b25531cb5a4fd1e802bac8c9aa6efee0aa1'/>
<id>e72d8b25531cb5a4fd1e802bac8c9aa6efee0aa1</id>
<content type='text'>
This reverts commit 735209c0688b10a66c24750422b35d8c2ad01bb5.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 735209c0688b10a66c24750422b35d8c2ad01bb5.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo "redudant"</title>
<updated>2025-05-22T14:42:22+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2025-05-22T14:42:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1f0c1784118da963dce825de7a07da672fe5de57'/>
<id>1f0c1784118da963dce825de7a07da672fe5de57</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[NVPTX] Unify and extend barrier{.cta} intrinsic support (#140615)</title>
<updated>2025-05-21T15:14:15+00:00</updated>
<author>
<name>Alex MacLean</name>
<email>amaclean@nvidia.com</email>
</author>
<published>2025-05-21T15:14:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=735209c0688b10a66c24750422b35d8c2ad01bb5'/>
<id>735209c0688b10a66c24750422b35d8c2ad01bb5</id>
<content type='text'>
Our current intrinsic support for barrier intrinsics is confusing and
incomplete, with multiple intrinsics mapping to the same instruction and
intrinsic names not clearly conveying intrinsic semantics. Further, we
lack support for some variants. This change unifies the IR
representation to a single consistently named set of intrinsics.

- llvm.nvvm.barrier.cta.sync.aligned.all(i32)
- llvm.nvvm.barrier.cta.sync.aligned(i32, i32)
- llvm.nvvm.barrier.cta.arrive.aligned(i32, i32)
- llvm.nvvm.barrier.cta.sync.all(i32)
- llvm.nvvm.barrier.cta.sync(i32, i32)
- llvm.nvvm.barrier.cta.arrive(i32, i32)

The following Auto-Upgrade rules are used to maintain compatibility with
IR using the legacy intrinsics:

* llvm.nvvm.barrier0 --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(0)
* llvm.nvvm.barrier.n --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.bar.sync --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.barrier --&gt; llvm.nvvm.barrier.cta.sync.aligned(x, y)
* llvm.nvvm.barrier.sync --&gt; llvm.nvvm.barrier.cta.sync.all(x)
* llvm.nvvm.barrier.sync.cnt --&gt; llvm.nvvm.barrier.cta.sync(x, y)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Our current intrinsic support for barrier intrinsics is confusing and
incomplete, with multiple intrinsics mapping to the same instruction and
intrinsic names not clearly conveying intrinsic semantics. Further, we
lack support for some variants. This change unifies the IR
representation to a single consistently named set of intrinsics.

- llvm.nvvm.barrier.cta.sync.aligned.all(i32)
- llvm.nvvm.barrier.cta.sync.aligned(i32, i32)
- llvm.nvvm.barrier.cta.arrive.aligned(i32, i32)
- llvm.nvvm.barrier.cta.sync.all(i32)
- llvm.nvvm.barrier.cta.sync(i32, i32)
- llvm.nvvm.barrier.cta.arrive(i32, i32)

The following Auto-Upgrade rules are used to maintain compatibility with
IR using the legacy intrinsics:

* llvm.nvvm.barrier0 --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(0)
* llvm.nvvm.barrier.n --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.bar.sync --&gt; llvm.nvvm.barrier.cta.sync.aligned.all(x)
* llvm.nvvm.barrier --&gt; llvm.nvvm.barrier.cta.sync.aligned(x, y)
* llvm.nvvm.barrier.sync --&gt; llvm.nvvm.barrier.cta.sync.all(x)
* llvm.nvvm.barrier.sync.cnt --&gt; llvm.nvvm.barrier.cta.sync(x, y)</pre>
</div>
</content>
</entry>
<entry>
<title>[JumpThreading] Use [BB-&gt;SuccIndx] to get probability when updating BB info. (#134585)</title>
<updated>2025-04-08T08:32:34+00:00</updated>
<author>
<name>tianleliu</name>
<email>tianle.l.liu@intel.com</email>
</author>
<published>2025-04-08T08:32:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0df0906af67fe81c0cc3ed6230518f4314884389'/>
<id>0df0906af67fe81c0cc3ed6230518f4314884389</id>
<content type='text'>
In case the same src BB targets to the same dest BB in different
conditions/edges, such as switch-cases, we should use
prob[SrcBB-&gt;SuccIndx] instead of prob[SrcBB-&gt;DstBB] to get probability.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case the same src BB targets to the same dest BB in different
conditions/edges, such as switch-cases, we should use
prob[SrcBB-&gt;SuccIndx] instead of prob[SrcBB-&gt;DstBB] to get probability.</pre>
</div>
</content>
</entry>
<entry>
<title>[IR][JumpThreading] Fix infinite recursion on compare self-reference (#129501)</title>
<updated>2025-04-07T08:01:36+00:00</updated>
<author>
<name>Robert Imschweiler</name>
<email>robert.imschweiler@amd.com</email>
</author>
<published>2025-04-07T08:01:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2f8b486f979f4b89929a447f516fd1da9a659834'/>
<id>2f8b486f979f4b89929a447f516fd1da9a659834</id>
<content type='text'>
In unreachable code, constant PHI nodes may appear and be replaced by their
single value. As a result, instructions may become self-referencing. This
commit adds checks to avoid going into infinite recursion when handling
self-referencing compare instructions in `evaluateOnPredecessorEdge()`.

This LLVM defect was identified via the AMD Fuzzing project.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In unreachable code, constant PHI nodes may appear and be replaced by their
single value. As a result, instructions may become self-referencing. This
commit adds checks to avoid going into infinite recursion when handling
self-referencing compare instructions in `evaluateOnPredecessorEdge()`.

This LLVM defect was identified via the AMD Fuzzing project.</pre>
</div>
</content>
</entry>
<entry>
<title>[RemoveDIs] Remove "try-debuginfo-iterators..." test flags (#130298)</title>
<updated>2025-03-14T15:50:49+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2025-03-14T15:50:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=792a6f81198842352fa5213faf7ecad4b1d27ddd'/>
<id>792a6f81198842352fa5213faf7ecad4b1d27ddd</id>
<content type='text'>
These date back to when the non-intrinsic format of variable locations
was still being tested and was behind a compile-time flag, so not all
builds / bots would correctly run them. The solution at the time, to get
at least some test coverage, was to have tests opt-in to non-intrinsic
debug-info if it was built into LLVM.

Nowadays, non-intrinsic format is the default and has been on for more
than a year, there's no need for this flag to exist.

(I've downgraded the flag from "try" to explicitly requesting
non-intrinsic format in some places, so that we can deal with tests that
are explicitly about non-intrinsic format in their own commit).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These date back to when the non-intrinsic format of variable locations
was still being tested and was behind a compile-time flag, so not all
builds / bots would correctly run them. The solution at the time, to get
at least some test coverage, was to have tests opt-in to non-intrinsic
debug-info if it was built into LLVM.

Nowadays, non-intrinsic format is the default and has been on for more
than a year, there's no need for this flag to exist.

(I've downgraded the flag from "try" to explicitly requesting
non-intrinsic format in some places, so that we can deal with tests that
are explicitly about non-intrinsic format in their own commit).</pre>
</div>
</content>
</entry>
<entry>
<title>[JumpThreading] Remove deleted BB from Unreachable (#126984)</title>
<updated>2025-02-27T23:40:21+00:00</updated>
<author>
<name>weiguozhi</name>
<email>57237827+weiguozhi@users.noreply.github.com</email>
</author>
<published>2025-02-27T23:40:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=11e65b98b3c0088a84ca5d1d74a0fd4bab462b40'/>
<id>11e65b98b3c0088a84ca5d1d74a0fd4bab462b40</id>
<content type='text'>
Although an unreachable BB is skipped by processBlock, its successor can
still be handled by processBlock, and maybeMergeBasicBlockIntoOnlyPred
may merge the two BBs and delete the unreachable BB. Then the garbage
pointer is left in Unreachable set. This patch avoids merging a BB into 
unreachable predecessor.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Although an unreachable BB is skipped by processBlock, its successor can
still be handled by processBlock, and maybeMergeBasicBlockIntoOnlyPred
may merge the two BBs and delete the unreachable BB. Then the garbage
pointer is left in Unreachable set. This patch avoids merging a BB into 
unreachable predecessor.</pre>
</div>
</content>
</entry>
<entry>
<title>[LVI] Skip self loops in `solveBlockValueNonLocal` (#127763)</title>
<updated>2025-02-23T09:52:38+00:00</updated>
<author>
<name>Yingwei Zheng</name>
<email>dtcxzyw2333@gmail.com</email>
</author>
<published>2025-02-23T09:52:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2071ea24a27c7009feac699e3e70ee50f185134f'/>
<id>2071ea24a27c7009feac699e3e70ee50f185134f</id>
<content type='text'>
We cannot infer more information from backedges in
`solveBlockValueNonLocal`. However, since DT is unavailable in LVI,
there is not a precise way to check whether a BB edge is a backedge.
This patch only skips self loops to unblock the range analysis.

The motivating case is extracted from
https://github.com/llvm/llvm-project/pull/127663.

Compile-time impact is high:
https://llvm-compile-time-tracker.com/compare.php?from=84ddda58c870681dd12ed765e9d59d5e00567f94&amp;to=af032f1351358f2f5b5d9f4e87c5601c23b9bd37&amp;stat=instructions:u</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We cannot infer more information from backedges in
`solveBlockValueNonLocal`. However, since DT is unavailable in LVI,
there is not a precise way to check whether a BB edge is a backedge.
This patch only skips self loops to unblock the range analysis.

The motivating case is extracted from
https://github.com/llvm/llvm-project/pull/127663.

Compile-time impact is high:
https://llvm-compile-time-tracker.com/compare.php?from=84ddda58c870681dd12ed765e9d59d5e00567f94&amp;to=af032f1351358f2f5b5d9f4e87c5601c23b9bd37&amp;stat=instructions:u</pre>
</div>
</content>
</entry>
<entry>
<title>Move RemoveRedundantDbgInstrs outside of inner loop in JumpThreading (#123008)</title>
<updated>2025-01-22T01:17:49+00:00</updated>
<author>
<name>William Huang</name>
<email>williamjhuang@google.com</email>
</author>
<published>2025-01-22T01:17:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e45de3dba7fad894bb5e10fd5018e5851061c672'/>
<id>e45de3dba7fad894bb5e10fd5018e5851061c672</id>
<content type='text'>
This cleanup action only needs to be performed once when the entire
optimization is converged. Doing it in every iteration has a very high
time-complexity, as it queries every dbg value in a dense map

Compare before and after for one internal source file with many basic
blocks


![image](https://github.com/user-attachments/assets/1dac76a9-a974-4068-9aa1-4041f963fa8e)

![image](https://github.com/user-attachments/assets/73ea2ef1-d1f4-4064-8826-8c13fb539b8d)

&gt;90% reduction in this extreme case.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This cleanup action only needs to be performed once when the entire
optimization is converged. Doing it in every iteration has a very high
time-complexity, as it queries every dbg value in a dense map

Compare before and after for one internal source file with many basic
blocks


![image](https://github.com/user-attachments/assets/1dac76a9-a974-4068-9aa1-4041f963fa8e)

![image](https://github.com/user-attachments/assets/73ea2ef1-d1f4-4064-8826-8c13fb539b8d)

&gt;90% reduction in this extreme case.</pre>
</div>
</content>
</entry>
</feed>
