<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp, branch users/ojhunt/ptrauth-additions</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]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>
<entry>
<title>[SLP]Support non-ordered copyable argument in non-commutative instructions</title>
<updated>2025-10-12T17:28:19+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-12T17:11:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8f168376c11d45834a59da9d61b2d850f2342f32'/>
<id>8f168376c11d45834a59da9d61b2d850f2342f32</id>
<content type='text'>
If the non-commutative user has several same operands and at least one
of them (but not the first) is copyable, need to consider this
opportunity when calculating the number of dependencies. Otherwise, the
schedule bundle might be not scheduled correctly and cause a compiler
crash

Fixes #162925
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the non-commutative user has several same operands and at least one
of them (but not the first) is copyable, need to consider this
opportunity when calculating the number of dependencies. Otherwise, the
schedule bundle might be not scheduled correctly and cause a compiler
crash

Fixes #162925
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Do not allow undefs being combined with divs</title>
<updated>2025-10-10T23:59:05+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-10T21:54:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d3233e806e1a80020b09c161def31ce2c75804d5'/>
<id>d3233e806e1a80020b09c161def31ce2c75804d5</id>
<content type='text'>
Undefs/poisons with divs in vector operations lead to undefined
behavior, disabling this combination

Fixes #162663
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Undefs/poisons with divs in vector operations lead to undefined
behavior, disabling this combination

Fixes #162663
</pre>
</div>
</content>
</entry>
<entry>
<title>[SLPVectorizer] Move size checks (NFC). (#161867)</title>
<updated>2025-10-10T20:52:17+00:00</updated>
<author>
<name>Mikhail Gudim</name>
<email>mgudim@gmail.com</email>
</author>
<published>2025-10-10T20:52:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d78c93077b940d650a1b2eae75bdbf2105de7380'/>
<id>d78c93077b940d650a1b2eae75bdbf2105de7380</id>
<content type='text'>
Add the `analyzeRtStrideCandidate` function. In the future commits we're
going to add the capability to widen strided loads to it. So, in this
commit, we move the size / type checks into it, since it can possibly
change size / type of load.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add the `analyzeRtStrideCandidate` function. In the future commits we're
going to add the capability to widen strided loads to it. So, in this
commit, we move the size / type checks into it, since it can possibly
change size / type of load.</pre>
</div>
</content>
</entry>
<entry>
<title>[SLP]Enable SDiv/UDiv support as main op in copyables (#161892)</title>
<updated>2025-10-08T11:28:06+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2025-10-08T11:28:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7f03b22dce1f4dae9db3ec8919db7dbd98202e0b'/>
<id>7f03b22dce1f4dae9db3ec8919db7dbd98202e0b</id>
<content type='text'>
Allow SDiv/UDiv as a main operation in copyables support</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow SDiv/UDiv as a main operation in copyables support</pre>
</div>
</content>
</entry>
</feed>
