<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp, branch users/fmayer/spr/main.wip-smartpointers</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 all copyable children for non-schedulable parent nodes</title>
<updated>2025-10-21T13:39:49+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-20T22:48:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=20675ee67d048a42482c246e25b284637d55347c'/>
<id>20675ee67d048a42482c246e25b284637d55347c</id>
<content type='text'>
If the parent node is non-schedulable and it includes several copies of
the same instruction, its operand might be replaced by the copyable
nodes in multiple children nodes, and if the instruction is commutative,
they can be used in different operands. The compiler shall consider this
opportunity, taking into account that non-copyable children are
scheduled only ones for the same parent instruction.

Fixes #164242
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the parent node is non-schedulable and it includes several copies of
the same instruction, its operand might be replaced by the copyable
nodes in multiple children nodes, and if the instruction is commutative,
they can be used in different operands. The compiler shall consider this
opportunity, taking into account that non-copyable children are
scheduled only ones for the same parent instruction.

Fixes #164242
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[SLP] Check all copyable children for non-schedulable parent nodes"</title>
<updated>2025-10-21T00:37:32+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-21T00:36:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8521ffdfaaf43057219b6f83d4a0c744ab3e66a6'/>
<id>8521ffdfaaf43057219b6f83d4a0c744ab3e66a6</id>
<content type='text'>
This reverts commit e7f370f910701b6c67d41dab80e645227692c58b to fix
buildbots  https://lab.llvm.org/buildbot/#/builders/213/builds/1056.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit e7f370f910701b6c67d41dab80e645227692c58b to fix
buildbots  https://lab.llvm.org/buildbot/#/builders/213/builds/1056.
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP] Check all copyable children for non-schedulable parent nodes</title>
<updated>2025-10-20T22:52:28+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-20T22:48:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e7f370f910701b6c67d41dab80e645227692c58b'/>
<id>e7f370f910701b6c67d41dab80e645227692c58b</id>
<content type='text'>
If the parent node is non-schedulable and it includes several copies of
the same instruction, its operand might be replaced by the copyable
nodes in multiple children nodes, and if the instruction is commutative,
they can be used in different operands. The compiler shall consider this
opportunity, taking into account that non-copyable children are
scheduled only ones for the same parent instruction.

Fixes #164242
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the parent node is non-schedulable and it includes several copies of
the same instruction, its operand might be replaced by the copyable
nodes in multiple children nodes, and if the instruction is commutative,
they can be used in different operands. The compiler shall consider this
opportunity, taking into account that non-copyable children are
scheduled only ones for the same parent instruction.

Fixes #164242
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Do not pack div-like copyable values</title>
<updated>2025-10-20T12:19:42+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-20T11:15:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=154138c25f358ed812eafc2880225c3d88221e8a'/>
<id>154138c25f358ed812eafc2880225c3d88221e8a</id>
<content type='text'>
If a main instruction in the copyables is a div-like instruction, the
compiler cannot pack duplicates, extending with poisons, these
instructions, being vectorize, will result in undefined behavior.

Fixes #164185
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a main instruction in the copyables is a div-like instruction, the
compiler cannot pack duplicates, extending with poisons, these
instructions, being vectorize, will result in undefined behavior.

Fixes #164185
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Correctly calculate number of copyable operands</title>
<updated>2025-10-19T19:14:39+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-19T18:29:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e6b0be376412bf0599f6e75aa5e67f95cd36b411'/>
<id>e6b0be376412bf0599f6e75aa5e67f95cd36b411</id>
<content type='text'>
The compiler shall not check for overflow of the number of copyable
operands counter, otherwise non-copyable operand can be counted as
copyable and lead to a compiler crash.

Fixes #164164
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The compiler shall not check for overflow of the number of copyable
operands counter, otherwise non-copyable operand can be counted as
copyable and lead to a compiler crash.

Fixes #164164
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLPVectorizer] Refactor isStridedLoad, NFC. (#163844)</title>
<updated>2025-10-18T09:01:50+00:00</updated>
<author>
<name>Mikhail Gudim</name>
<email>mgudim@gmail.com</email>
</author>
<published>2025-10-18T09:01:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=eb5de5c60cbdae063880420955fd4f21b4704337'/>
<id>eb5de5c60cbdae063880420955fd4f21b4704337</id>
<content type='text'>
Move the checks that all strides are the same from `isStridedLoad` to a
new function `analyzeConstantStrideCandidate`. This is to reduce the
diff for the following MRs which will modify the logic in
`analyzeConstantStrideCandidate` to cover the case of widening of the
strided load. All the checks that are left in `isStridedLoad` will be
reused.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the checks that all strides are the same from `isStridedLoad` to a
new function `analyzeConstantStrideCandidate`. This is to reduce the
diff for the following MRs which will modify the logic in
`analyzeConstantStrideCandidate` to cover the case of widening of the
strided load. All the checks that are left in `isStridedLoad` will be
reused.</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Fix insert point for copyable node with the last inst, used only outside the block</title>
<updated>2025-10-17T12:59:48+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-17T10:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0fdfad37d85582344e3c2a8067e13190152f7d3b'/>
<id>0fdfad37d85582344e3c2a8067e13190152f7d3b</id>
<content type='text'>
If the copyable entry has the last instruction, used only outside the
block, tha insert ion point for the vector code should be the last
instruction itself, not the following one. It prevents wrong def-use
sequences, which might be generated for the buildvector nodes.

Fixes #163404
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the copyable entry has the last instruction, used only outside the
block, tha insert ion point for the vector code should be the last
instruction itself, not the following one. It prevents wrong def-use
sequences, which might be generated for the buildvector nodes.

Fixes #163404
</pre>
</div>
</content>
</entry>
<entry>
<title>[slp][profcheck] Mark `select`s as having unknown profile (#162960)</title>
<updated>2025-10-13T16:06:16+00:00</updated>
<author>
<name>Mircea Trofin</name>
<email>mtrofin@google.com</email>
</author>
<published>2025-10-13T16:06:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=769976261249109d02516eb684584c1c8576a882'/>
<id>769976261249109d02516eb684584c1c8576a882</id>
<content type='text'>
There are 2 cases: 

- either the `select`​ condition is a vector of bools, case in which we don't currently have a way to represent the per-element branch probabilities anyway;
- or the select condition is a scalar, for example from a `llvm.vector.reduce`​. We could potentially try and do more here - if the reduced vector contained conditions from other selects, for instance

In either case, IIUC, chances are the `select`​ doesn't get lowered to a branch, at least I'm not seeing any evidence of that in an internal complex application (CSFDO + ThinLTO). Seems sufficient to mark the selects are unknown (for profiled functions); since that metadata carries with it the pass name (`DEBUG_TYPE`​) that marked it as such, we can revisit this if we detect later lowerings of these selects that would have required an actual profile.



Issue #147390</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are 2 cases: 

- either the `select`​ condition is a vector of bools, case in which we don't currently have a way to represent the per-element branch probabilities anyway;
- or the select condition is a scalar, for example from a `llvm.vector.reduce`​. We could potentially try and do more here - if the reduced vector contained conditions from other selects, for instance

In either case, IIUC, chances are the `select`​ doesn't get lowered to a branch, at least I'm not seeing any evidence of that in an internal complex application (CSFDO + ThinLTO). Seems sufficient to mark the selects are unknown (for profiled functions); since that metadata carries with it the pass name (`DEBUG_TYPE`​) that marked it as such, we can revisit this if we detect later lowerings of these selects that would have required an actual profile.



Issue #147390</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Enable support for logical ops in copyables (#162945)</title>
<updated>2025-10-13T12:01:32+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-13T12:01:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=739bfdeb91f409ef326cc407be01b935a58f2d3c'/>
<id>739bfdeb91f409ef326cc407be01b935a58f2d3c</id>
<content type='text'>
Allows to use And, Or and Xor instructions as base for copyables.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allows to use And, Or and Xor instructions as base for copyables.</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]INsert postponed vector value after all uses, if the parent node is PHI</title>
<updated>2025-10-12T20:41:08+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-12T20:15:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d81ffd4ebb45235b4d106f6a0d5e5032bad41018'/>
<id>d81ffd4ebb45235b4d106f6a0d5e5032bad41018</id>
<content type='text'>
Need to insert the vector value for the postponed gather/buildvector
node after all uses non only if the vector value of the user node is
phi, but also if the user node itself is PHI node, which may produce
vector phi + shuffle.

Fixes #162799
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Need to insert the vector value for the postponed gather/buildvector
node after all uses non only if the vector value of the user node is
phi, but also if the user node itself is PHI node, which may produce
vector phi + shuffle.

Fixes #162799
</pre>
</div>
</content>
</entry>
</feed>
