<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp, branch main</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>[SLP]Check if the non-schedulable phi parent node has unique operands</title>
<updated>2025-11-20T18:51:31+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-20T17:55:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=54d9d4d8683221776928a8aaf3dca3b36f2b879b'/>
<id>54d9d4d8683221776928a8aaf3dca3b36f2b879b</id>
<content type='text'>
Need to check if the non-schedulable phi parent node has unique
operands, if the incoming node has copyables, and the node is
commutative. Otherwise, there might be issues with the correct
calculation of the dependencies.

Fixes #168589
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Need to check if the non-schedulable phi parent node has unique
operands, if the incoming node has copyables, and the node is
commutative. Otherwise, there might be issues with the correct
calculation of the dependencies.

Fixes #168589
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Fix insertion point for setting for the nodes</title>
<updated>2025-11-20T01:15:24+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-19T19:42:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2c3aa92089695713a1fd4264e80941fd9679150b'/>
<id>2c3aa92089695713a1fd4264e80941fd9679150b</id>
<content type='text'>
The problem with the many def-use chain problems in SLP vectorizer are
related to the fact that some nodes reuse the same instruction as
insertion point. Insertion point is not the instruction, but the place
between instructions. To set it correctly, better to generate pseudo
instruction immediately after the last instruction, and use it as
insertion point. It resolves the issues in most cases.

Fixes #168512 #168576
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The problem with the many def-use chain problems in SLP vectorizer are
related to the fact that some nodes reuse the same instruction as
insertion point. Insertion point is not the instruction, but the place
between instructions. To set it correctly, better to generate pseudo
instruction immediately after the last instruction, and use it as
insertion point. It resolves the issues in most cases.

Fixes #168512 #168576
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLPVectorizer] Widen constant strided loads. (#162324)</title>
<updated>2025-11-19T20:11:09+00:00</updated>
<author>
<name>Mikhail Gudim</name>
<email>mgudim@gmail.com</email>
</author>
<published>2025-11-19T20:11:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=12131d5cd39025c1e9e521fde6ffbfffd51dff1c'/>
<id>12131d5cd39025c1e9e521fde6ffbfffd51dff1c</id>
<content type='text'>
Given a set of pointers, check if they can be rearranged as follows (%s is a constant):
%b + 0 * %s + 0
%b + 0 * %s + 1
%b + 0 * %s + 2
...
%b + 0 * %s + w

%b + 1 * %s + 0
%b + 1 * %s + 1
%b + 1 * %s + 2
...
%b + 1 * %s + w
...

If the pointers can be rearanged in the above pattern, it means that the
memory can be accessed with a strided loads of width `w` and stride `%s`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Given a set of pointers, check if they can be rearranged as follows (%s is a constant):
%b + 0 * %s + 0
%b + 0 * %s + 1
%b + 0 * %s + 2
...
%b + 0 * %s + w

%b + 1 * %s + 0
%b + 1 * %s + 1
%b + 1 * %s + 2
...
%b + 1 * %s + w
...

If the pointers can be rearanged in the above pattern, it means that the
memory can be accessed with a strided loads of width `w` and stride `%s`.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][LLVM] Namespace cleanup in SLPVectorizer (#168623)</title>
<updated>2025-11-19T15:34:09+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-11-19T15:34:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4703195c8de047f102214495e39ae80aad152e15'/>
<id>4703195c8de047f102214495e39ae80aad152e15</id>
<content type='text'>
- Remove file local functions out of `llvm` or anonymous namespace and
make them static.
- Use namespace qualifier to define `BoUpSLP` class and several template
specializations.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Remove file local functions out of `llvm` or anonymous namespace and
make them static.
- Use namespace qualifier to define `BoUpSLP` class and several template
specializations.</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI] Use MemIntrinsicCostAttributes for getMaskedMemoryOpCost (#168029)</title>
<updated>2025-11-19T01:51:12+00:00</updated>
<author>
<name>Shih-Po Hung</name>
<email>shihpo.hung@sifive.com</email>
</author>
<published>2025-11-19T01:51:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=961940e1a7c9b4bbe0ae54c2ea4bdc69308947d6'/>
<id>961940e1a7c9b4bbe0ae54c2ea4bdc69308947d6</id>
<content type='text'>
- Split from #165532. This is a step toward a unified interface for
masked/gather-scatter/strided/expand-compress cost modeling.
- Replace the ad-hoc parameter list with a single attributes object.

API change:
```
- InstructionCost getMaskedMemoryOpCost(Opcode, Src, Alignment,
-                                       AddressSpace, CostKind);

+ InstructionCost getMaskedMemoryOpCost(MemIntrinsicCostAttributes,
+                                       CostKind);
```
Notes:
- NFCI intended: callers populate MemIntrinsicCostAttributes with the
same information as before.
- Follow-up: migrate gather/scatter, strided, and expand/compress cost
queries to the same attributes-based entry point.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Split from #165532. This is a step toward a unified interface for
masked/gather-scatter/strided/expand-compress cost modeling.
- Replace the ad-hoc parameter list with a single attributes object.

API change:
```
- InstructionCost getMaskedMemoryOpCost(Opcode, Src, Alignment,
-                                       AddressSpace, CostKind);

+ InstructionCost getMaskedMemoryOpCost(MemIntrinsicCostAttributes,
+                                       CostKind);
```
Notes:
- NFCI intended: callers populate MemIntrinsicCostAttributes with the
same information as before.
- Follow-up: migrate gather/scatter, strided, and expand/compress cost
queries to the same attributes-based entry point.</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP] Invariant loads cannot have a memory dependency on stores. (#167929)</title>
<updated>2025-11-18T08:35:29+00:00</updated>
<author>
<name>Michael Bedy</name>
<email>Michael.Bedy@amd.com</email>
</author>
<published>2025-11-18T08:35:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a61889580e5244a7a25610bc23b9a0d7f69e1200'/>
<id>a61889580e5244a7a25610bc23b9a0d7f69e1200</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Do not consider split nodes, when checking parent PHI-based nodes</title>
<updated>2025-11-16T20:39:58+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-16T20:36:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=306b5a3d64b4abbfb07bcfb77fadb506da897f16'/>
<id>306b5a3d64b4abbfb07bcfb77fadb506da897f16</id>
<content type='text'>
The compiler should not consider split vectorize nodes, when checking
for non-schedulable PHI-based parent nodes. Only pure PHI nodes must be
  considered, they only can be considered as explicit users, split nodes
  are not.

Fixes #168268
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The compiler should not consider split vectorize nodes, when checking
for non-schedulable PHI-based parent nodes. Only pure PHI nodes must be
  considered, they only can be considered as explicit users, split nodes
  are not.

Fixes #168268
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Check if the copyable element is a sub instruciton with abs in isCommutable</title>
<updated>2025-11-15T00:09:50+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-14T22:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=326d4e90335c9f0c670f0423265625c0a85ec951'/>
<id>326d4e90335c9f0c670f0423265625c0a85ec951</id>
<content type='text'>
Need to check if the non-copyable element is an instruction before actually
trying to check its NSW attribute.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Need to check if the non-copyable element is an instruction before actually
trying to check its NSW attribute.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[SLP]Check if the copyable element is a sub instruciton with abs in isCommutable"</title>
<updated>2025-11-14T23:22:55+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-14T23:21:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e8cc0d22073fd5f59e0b9e1f940dc7a9d4e82218'/>
<id>e8cc0d22073fd5f59e0b9e1f940dc7a9d4e82218</id>
<content type='text'>
This reverts commit ddf5bb0a2e2d2dd77bce66173387d62ab7174d9f to fix
buildbots  https://lab.llvm.org/buildbot/#/builders/11/builds/28083.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit ddf5bb0a2e2d2dd77bce66173387d62ab7174d9f to fix
buildbots  https://lab.llvm.org/buildbot/#/builders/11/builds/28083.
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Check if the copyable element is a sub instruciton with abs in isCommutable</title>
<updated>2025-11-14T22:53:42+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-11-14T22:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ddf5bb0a2e2d2dd77bce66173387d62ab7174d9f'/>
<id>ddf5bb0a2e2d2dd77bce66173387d62ab7174d9f</id>
<content type='text'>
Need to check if the non-copyable element is an instruction before actually
trying to check its NSW attribute.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Need to check if the non-copyable element is an instruction before actually
trying to check its NSW attribute.
</pre>
</div>
</content>
</entry>
</feed>
