<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms, 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>[LSR] Strip dead code (NFC) (#146109)</title>
<updated>2025-07-03T12:37:08+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2025-07-03T12:37:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b7059ebafe8a8f6ff2c20a93701ccbd6e009be79'/>
<id>b7059ebafe8a8f6ff2c20a93701ccbd6e009be79</id>
<content type='text'>
Nested AddRec is already rejected by the handling in pushSCEV().</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nested AddRec is already rejected by the handling in pushSCEV().</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Don't convert VPWidenSelectRecipes to vp.select in EVL transform (#146695)</title>
<updated>2025-07-03T10:50:25+00:00</updated>
<author>
<name>Luke Lau</name>
<email>luke@igalia.com</email>
</author>
<published>2025-07-03T10:50:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ec25a0568cfbd13a6e375d3a2295b706708d37c5'/>
<id>ec25a0568cfbd13a6e375d3a2295b706708d37c5</id>
<content type='text'>
createEVLRecipe tries to optimise recipes that use the header mask by
replacing them with their VP equivalents and setting the EVL, allowing
the mask to be removed.

However we currently also convert widened selects to vp.select even
though they don't necessarily use the header mask.

Unlike vp.merge a vp.select only makes the "unused" lanes past EVL
poison, so it's not needed for correctness.

In the same vein as #127180, this patch removes the transform for
VPWidenSelectRecipes and keeps them as plain select instructions to
allow for more optimisations.

RISCVVLOptimizer will still be able to optimise away any VL toggles and
we end up with better code generation across llvm-test-suite and SPEC
CPU 2017.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
createEVLRecipe tries to optimise recipes that use the header mask by
replacing them with their VP equivalents and setting the EVL, allowing
the mask to be removed.

However we currently also convert widened selects to vp.select even
though they don't necessarily use the header mask.

Unlike vp.merge a vp.select only makes the "unused" lanes past EVL
poison, so it's not needed for correctness.

In the same vein as #127180, this patch removes the transform for
VPWidenSelectRecipes and keeps them as plain select instructions to
allow for more optimisations.

RISCVVLOptimizer will still be able to optimise away any VL toggles and
we end up with better code generation across llvm-test-suite and SPEC
CPU 2017.
</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Remove redundant debug location setting in VPInterleaveRecipe::execute. nfc (#146670)</title>
<updated>2025-07-03T07:52:45+00:00</updated>
<author>
<name>Mel Chen</name>
<email>mel.chen@sifive.com</email>
</author>
<published>2025-07-03T07:52:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fcdb91e113467ca10b34a1a43226aa67dee31646'/>
<id>fcdb91e113467ca10b34a1a43226aa67dee31646</id>
<content type='text'>
Remove it since we already set debug loc in
VPBasicBlock::executeRecipes.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove it since we already set debug loc in
VPBasicBlock::executeRecipes.</pre>
</div>
</content>
</entry>
<entry>
<title>[VectorCombine] Scalarize extracts of ZExt if profitable. (#142976)</title>
<updated>2025-07-03T07:49:32+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2025-07-03T07:49:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4acdb8e14ef7e72d5f56b45d51de72c7b797be03'/>
<id>4acdb8e14ef7e72d5f56b45d51de72c7b797be03</id>
<content type='text'>
Add a new scalarization transform that tries to convert extracts of a
vector ZExt to a set of scalar shift and mask operations. This can be
profitable if the cost of extracting is the same or higher than the cost
of 2 scalar ops. This is the case on AArch64 for example.

For AArch64,this shows up in a number of workloads, including av1aom,
gmsh, minizinc and astc-encoder.

PR: https://github.com/llvm/llvm-project/pull/142976</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a new scalarization transform that tries to convert extracts of a
vector ZExt to a set of scalar shift and mask operations. This can be
profitable if the cost of extracting is the same or higher than the cost
of 2 scalar ops. This is the case on AArch64 for example.

For AArch64,this shows up in a number of workloads, including av1aom,
gmsh, minizinc and astc-encoder.

PR: https://github.com/llvm/llvm-project/pull/142976</pre>
</div>
</content>
</entry>
<entry>
<title>[VPlan] Early assert for unsupported interleaved access features. nfc (#146669)</title>
<updated>2025-07-03T07:31:53+00:00</updated>
<author>
<name>Mel Chen</name>
<email>mel.chen@sifive.com</email>
</author>
<published>2025-07-03T07:31:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3e370452fd23a894433c3bf2a8ce46a86c742ed5'/>
<id>3e370452fd23a894433c3bf2a8ce46a86c742ed5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[msan] Fix "Add optional flag to improve instrumentation of disjoint OR (#145990)" (#146799)</title>
<updated>2025-07-03T03:15:58+00:00</updated>
<author>
<name>Thurston Dang</name>
<email>thurston@google.com</email>
</author>
<published>2025-07-03T03:15:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4cf53cd266b9e336b0dbaa52ef264a22b74e2242'/>
<id>4cf53cd266b9e336b0dbaa52ef264a22b74e2242</id>
<content type='text'>
The "V1" and "V2" values were already NOT'ed, hence the calculation of disjoint OR in #145990 was incorrect. This patch fixes the issue, with some refactoring and renaming of variables.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "V1" and "V2" values were already NOT'ed, hence the calculation of disjoint OR in #145990 was incorrect. This patch fixes the issue, with some refactoring and renaming of variables.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] [MSAN] replace (void) with [[maybe_unused]] (#146617)</title>
<updated>2025-07-02T19:14:45+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-07-02T19:14:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1f7ba23422da15e75a7d12f7534960d1192bae86'/>
<id>1f7ba23422da15e75a7d12f7534960d1192bae86</id>
<content type='text'>
The latter is preferred in the LLVM style guide.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The latter is preferred in the LLVM style guide.</pre>
</div>
</content>
</entry>
<entry>
<title>[SimplifyCFG] Transform switch to select when common bits uniquely identify one case (#145233)</title>
<updated>2025-07-02T16:16:12+00:00</updated>
<author>
<name>Gábor Spaits</name>
<email>gaborspaits1@gmail.com</email>
</author>
<published>2025-07-02T16:16:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=338fd8b12ce67eff73ed0a5c2174bee077fcbcbe'/>
<id>338fd8b12ce67eff73ed0a5c2174bee077fcbcbe</id>
<content type='text'>
Fix #141753 .

This patch introduces a new check, that tries to decide if the
conjunction of all the values uniquely identify the accepted values by
the switch.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix #141753 .

This patch introduces a new check, that tries to decide if the
conjunction of all the values uniquely identify the accepted values by
the switch.</pre>
</div>
</content>
</entry>
<entry>
<title>[VectorCombine] Scalarize vector intrinsics with scalar arguments (#146530)</title>
<updated>2025-07-02T15:48:53+00:00</updated>
<author>
<name>Luke Lau</name>
<email>luke@igalia.com</email>
</author>
<published>2025-07-02T15:48:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7931a8f102980185f51f251f808552764dbbfd99'/>
<id>7931a8f102980185f51f251f808552764dbbfd99</id>
<content type='text'>
Some intrinsics like llvm.abs or llvm.powi have a scalar argument even
when the overloaded type is a vector.
This patch handles these in scalarizeOpOrCmp to allow scalarizing them.

In the test the leftover vector powi isn't folded away to poison, this
should be fixed in a separate patch.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some intrinsics like llvm.abs or llvm.powi have a scalar argument even
when the overloaded type is a vector.
This patch handles these in scalarizeOpOrCmp to allow scalarizing them.

In the test the leftover vector powi isn't folded away to poison, this
should be fixed in a separate patch.</pre>
</div>
</content>
</entry>
<entry>
<title>[InstCombine] Fix multi-use handling for multi-GEP rewrite (#146689)</title>
<updated>2025-07-02T14:45:27+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2025-07-02T14:45:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2dc44b3a7ba1d70f823a1a13d6364d2738ede6c3'/>
<id>2dc44b3a7ba1d70f823a1a13d6364d2738ede6c3</id>
<content type='text'>
If we're expanding offsets for a chain of GEPs in RewriteGEPs mode, we
should also rewrite GEPs that have one-use themselves, but are kept
alive by a multi-use GEP later in the chain.

For the sake of simplicity, I've changed this to just skip the one-use
condition entirely (which will perform an unnecessary rewrite of a no
longer used GEP, but shouldn't otherwise matter).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we're expanding offsets for a chain of GEPs in RewriteGEPs mode, we
should also rewrite GEPs that have one-use themselves, but are kept
alive by a multi-use GEP later in the chain.

For the sake of simplicity, I've changed this to just skip the one-use
condition entirely (which will perform an unnecessary rewrite of a no
longer used GEP, but shouldn't otherwise matter).</pre>
</div>
</content>
</entry>
</feed>
