<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/Vectorize/VPlanUtils.h, 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>[VPlan] Fix OpType-mismatch in getFlagsFromIndDesc (#168560)</title>
<updated>2025-11-18T20:41:57+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2025-11-18T20:41:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=507f236f5ee5d153300d303fbb74389c1a2eebf4'/>
<id>507f236f5ee5d153300d303fbb74389c1a2eebf4</id>
<content type='text'>
Follow up on a cse OpType-mismatch crash reported due to ef023cae388d
(Reland [VPlan] Expand WidenInt inductions with nuw/nsw), setting the
OpType correctly when returning from getFlagsFromIndDesc.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Follow up on a cse OpType-mismatch crash reported due to ef023cae388d
(Reland [VPlan] Expand WidenInt inductions with nuw/nsw), setting the
OpType correctly when returning from getFlagsFromIndDesc.</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Hoist loads with invariant addresses using noalias metadata. (#166247)</title>
<updated>2025-11-18T09:35:48+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-11-18T09:35:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7c34848ae1405127a66abf10a963d8c7748f2e51'/>
<id>7c34848ae1405127a66abf10a963d8c7748f2e51</id>
<content type='text'>
This patch implements a transform to hoists single-scalar replicated
loads with invariant addresses out of the vector loop to the preheader
when scoped noalias metadata proves they cannot alias with any stores in
the loop.

This enables hosting of loads we can prove do not alias any stores in
the loop due to memory runtime checks added during vectorization.

PR: https://github.com/llvm/llvm-project/pull/166247</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch implements a transform to hoists single-scalar replicated
loads with invariant addresses out of the vector loop to the preheader
when scoped noalias metadata proves they cannot alias with any stores in
the loop.

This enables hosting of loads we can prove do not alias any stores in
the loop due to memory runtime checks added during vectorization.

PR: https://github.com/llvm/llvm-project/pull/166247</pre>
</div>
</content>
</entry>
<entry>
<title>Reland [VPlan] Expand WidenInt inductions with nuw/nsw (#168354)</title>
<updated>2025-11-17T13:44:25+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2025-11-17T13:44:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ef023cae388d7becd18df602cb2d77bdb3d59e55'/>
<id>ef023cae388d7becd18df602cb2d77bdb3d59e55</id>
<content type='text'>
Changes: The previous patch had to be reverted to a mismatching-OpType
assert in cse. The reduced-test has now been added corresponding to a
RVV pointer-induction, and the pointer-induction case has been updated
to use createOverflowingBinaryOp.

While at it, record VPIRFlags in VPWidenInductionRecipe.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Changes: The previous patch had to be reverted to a mismatching-OpType
assert in cse. The reduced-test has now been added corresponding to a
RVV pointer-induction, and the pointer-induction case has been updated
to use createOverflowingBinaryOp.

While at it, record VPIRFlags in VPWidenInductionRecipe.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[VPlan] Expand WidenInt inductions with nuw/nsw" (#168080)</title>
<updated>2025-11-14T16:11:48+00:00</updated>
<author>
<name>Alex Bradbury</name>
<email>asb@igalia.com</email>
</author>
<published>2025-11-14T16:11:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f2336d4c7e5b2264ae97e5e01d69fe1a6a3c2a4a'/>
<id>f2336d4c7e5b2264ae97e5e01d69fe1a6a3c2a4a</id>
<content type='text'>
Reverts llvm/llvm-project#163538

This is causing build failures on the two-stage RVV buildbots. e.g.
https://lab.llvm.org/buildbot/#/builders/214/builds/1363. I've shared a
reproducer and more information at
https://github.com/llvm/llvm-project/pull/163538#issuecomment-3533482822

This reverts commit 355e0f94af5adabe90ac57110ce1b47596afd4cd.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#163538

This is causing build failures on the two-stage RVV buildbots. e.g.
https://lab.llvm.org/buildbot/#/builders/214/builds/1363. I've shared a
reproducer and more information at
https://github.com/llvm/llvm-project/pull/163538#issuecomment-3533482822

This reverts commit 355e0f94af5adabe90ac57110ce1b47596afd4cd.</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Expand WidenInt inductions with nuw/nsw (#163538)</title>
<updated>2025-11-14T12:10:55+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2025-11-14T12:10:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=355e0f94af5adabe90ac57110ce1b47596afd4cd'/>
<id>355e0f94af5adabe90ac57110ce1b47596afd4cd</id>
<content type='text'>
While at it, record VPIRFlags in VPWidenInductionRecipe.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While at it, record VPIRFlags in VPWidenInductionRecipe.</pre>
</div>
</content>
</entry>
<entry>
<title>Add missing `LLVM_ABI` annotations (#167718)</title>
<updated>2025-11-13T17:49:39+00:00</updated>
<author>
<name>Fabrice de Gans</name>
<email>Steelskin@users.noreply.github.com</email>
</author>
<published>2025-11-13T17:49:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=23f6a8aeaf9feb781025c54cf3f12db69f633cb5'/>
<id>23f6a8aeaf9feb781025c54cf3f12db69f633cb5</id>
<content type='text'>
This patch updates various LLVM headers to properly add the `LLVM_ABI`
and `LLVM_ABI_FOR_TEST` annotations to build LLVM as a DLL on Windows.

This effort is tracked in #109483.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch updates various LLVM headers to properly add the `LLVM_ABI`
and `LLVM_ABI_FOR_TEST` annotations to build LLVM as a DLL on Windows.

This effort is tracked in #109483.</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Extend getSCEVForVPV, use to compute VPReplicateRecipe cost. (#161276)</title>
<updated>2025-10-30T22:46:19+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-10-30T22:46:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b2d12d6f2ba60a2f5c76cf535e2b215443a9c221'/>
<id>b2d12d6f2ba60a2f5c76cf535e2b215443a9c221</id>
<content type='text'>
Update getSCEVExprForVPValue to handle more complex expressions, to use
it in VPReplicateRecipe::comptueCost.

In particular, it supports construction SCEV expressions for
GetElementPtr VPReplicateRecipes, with operands that are
VPScalarIVStepsRecipe, VPDerivedIVRecipe and VPCanonicalIVRecipe. If we
hit a sub-expression we don't support yet, we return
SCEVCouldNotCompute.

Note that the SCEV expression is valid VF = 1: we only support
construction AddRecs for VPCanonicalIVRecipe, which is an AddRec
starting at 0 and stepping by 1. The returned SCEV expressions could be
converted to a VF specific one, by rewriting the AddRecs to ones with
the appropriate step.

Note that the logic for constructing SCEVs for GetElementPtr was
directly ported from ScalarEvolution.cpp.

Another thing to note is that we construct SCEV expression purely by
looking at the operation of the recipe and its translated operands, w/o
accessing the underlying IR (the exception being getting the source
element type for GEPs).

PR: https://github.com/llvm/llvm-project/pull/161276</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update getSCEVExprForVPValue to handle more complex expressions, to use
it in VPReplicateRecipe::comptueCost.

In particular, it supports construction SCEV expressions for
GetElementPtr VPReplicateRecipes, with operands that are
VPScalarIVStepsRecipe, VPDerivedIVRecipe and VPCanonicalIVRecipe. If we
hit a sub-expression we don't support yet, we return
SCEVCouldNotCompute.

Note that the SCEV expression is valid VF = 1: we only support
construction AddRecs for VPCanonicalIVRecipe, which is an AddRec
starting at 0 and stepping by 1. The returned SCEV expressions could be
converted to a VF specific one, by rewriting the AddRecs to ones with
the appropriate step.

Note that the logic for constructing SCEVs for GetElementPtr was
directly ported from ScalarEvolution.cpp.

Another thing to note is that we construct SCEV expression purely by
looking at the operation of the recipe and its translated operands, w/o
accessing the underlying IR (the exception being getting the source
element type for GEPs).

PR: https://github.com/llvm/llvm-project/pull/161276</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Move isSingleScalar implementation to VPlanUtils.cpp (NFC)</title>
<updated>2025-10-25T20:56:03+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-10-25T20:56:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d020b2da5419ba6780e77b8543dad51df8fbcf0e'/>
<id>d020b2da5419ba6780e77b8543dad51df8fbcf0e</id>
<content type='text'>
Move the implementation of vputils::isSingleScalar to VPlanUtils.cpp to
enable code sharing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the implementation of vputils::isSingleScalar to VPlanUtils.cpp to
enable code sharing.
</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Add VPInstruction to unpack vector values to scalars. (#155670)</title>
<updated>2025-10-19T18:49:05+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-10-19T18:49:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b9ce7656e93a8cd54b2e9f44d8bae49c55a76a4b'/>
<id>b9ce7656e93a8cd54b2e9f44d8bae49c55a76a4b</id>
<content type='text'>
Add a new Unpack VPInstruction (name to be improved) to explicitly
extract scalars values from vectors.

Test changes are movements of the extracts: they are no generated
together and also directly after the producer.

Depends on https://github.com/llvm/llvm-project/pull/155102 (included in
PR)

PR: https://github.com/llvm/llvm-project/pull/155670</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a new Unpack VPInstruction (name to be improved) to explicitly
extract scalars values from vectors.

Test changes are movements of the extracts: they are no generated
together and also directly after the producer.

Depends on https://github.com/llvm/llvm-project/pull/155102 (included in
PR)

PR: https://github.com/llvm/llvm-project/pull/155670</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Add VPRecipeBase::getRegion helper (NFC).</title>
<updated>2025-10-18T20:25:34+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-10-18T20:25:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=876911902726fa36584fcae59ab0ddabe3e0c584'/>
<id>876911902726fa36584fcae59ab0ddabe3e0c584</id>
<content type='text'>
Multiple places retrieve the region for a recipe. Add a helper to make
the code more compact and clearer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Multiple places retrieve the region for a recipe. Add a helper to make
the code more compact and clearer.
</pre>
</div>
</content>
</entry>
</feed>
