<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll, 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>[SandboxVec] Add TransactionAlwaysRevert pass (#141688)</title>
<updated>2025-05-28T17:57:58+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-05-28T17:57:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9c6a442f29668d109f9fe3aef354cad041265cfb'/>
<id>9c6a442f29668d109f9fe3aef354cad041265cfb</id>
<content type='text'>
This patch adds a region pass that reverts the IR state unconditionally.
This is used for testing.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a region pass that reverts the IR state unconditionally.
This is used for testing.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][BottomUpVec] Fix vectorization of vector constants (#129290)</title>
<updated>2025-02-28T22:37:48+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-28T22:37:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6ff0f69fec0ebdc86abf2e6af75f2edcccc2f936'/>
<id>6ff0f69fec0ebdc86abf2e6af75f2edcccc2f936</id>
<content type='text'>
This patch fixes the value we generate when we vectorize constants.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the value we generate when we vectorize constants.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Scheduler] Enforce scheduling SchedBundle instrs back-to-back (#128092)</title>
<updated>2025-02-27T18:23:50+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-27T18:23:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e2b0d5df84e023910a9b4204aad249d16fd0703a'/>
<id>e2b0d5df84e023910a9b4204aad249d16fd0703a</id>
<content type='text'>
This patch fixes the behavior of the scheduler by making sure the instrs
that are part of a SchedBundle are scheduled back-to-back.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the behavior of the scheduler by making sure the instrs
that are part of a SchedBundle are scheduled back-to-back.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Scheduler] Don't allow rescheduling of already scheduled (#128050)</title>
<updated>2025-02-21T00:16:34+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-21T00:16:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4d92975b5cf04ac36e7757a4f221b4f5ece6646f'/>
<id>4d92975b5cf04ac36e7757a4f221b4f5ece6646f</id>
<content type='text'>
This patch implements the check for not allowing re-scheduling of
instructions that have already been scheduled in a scheduling bundle.
Rescheduling should only happen if the instructions were temporarily
scheduled in singleton bundles during a previous call to
`trySchedule()`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch implements the check for not allowing re-scheduling of
instructions that have already been scheduled in a scheduling bundle.
Rescheduling should only happen if the instructions were temporarily
scheduled in singleton bundles during a previous call to
`trySchedule()`.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][BottomUpVec] Separate vectorization decisions from code generation (#127727)</title>
<updated>2025-02-20T18:21:25+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-20T18:21:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=10b99e97ff866b43569531b890c11b4a3011f6a2'/>
<id>10b99e97ff866b43569531b890c11b4a3011f6a2</id>
<content type='text'>
Up until now the generation of vector instructions was taking place
during the top-down post-order traversal of vectorizeRec(). The issue
with this approach is that the vector instructions emitted during the
traversal can be reordered by the scheduler, making it challenging to
place them without breaking the def-before-uses rule.

With this patch we separate the vectorization decisions (done in
`vectorizeRec()`) from the code generation phase (`emitVectors()`). The
vectorization decisions are stored in the `Actions` vector and are used
by `emitVectors()` to drive code generation.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Up until now the generation of vector instructions was taking place
during the top-down post-order traversal of vectorizeRec(). The issue
with this approach is that the vector instructions emitted during the
traversal can be reordered by the scheduler, making it challenging to
place them without breaking the def-before-uses rule.

With this patch we separate the vectorization decisions (done in
`vectorizeRec()`) from the code generation phase (`emitVectors()`). The
vectorization decisions are stored in the `Actions` vector and are used
by `emitVectors()` to drive code generation.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec] Replace hard-coded context save() with transaction-save pass (#127690)</title>
<updated>2025-02-18T21:34:51+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-18T21:34:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0f6c18e8c65b273af7e7af7ef38f78b4b66c481b'/>
<id>0f6c18e8c65b273af7e7af7ef38f78b4b66c481b</id>
<content type='text'>
This patch implements a small region pass that saves the context's
state. The patch is now used in the default pipeline to save the context
state instead of the hard-coded call to Context::save().

The concept behind this is that the passes themselves should not have to
do the actual saving/restoring of the IR state, because that would make
it challenging to reorder them in the pipeline. Having separate
save/restore passes makes the transformation passes more composable as
parts of arbitrary pipelines.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch implements a small region pass that saves the context's
state. The patch is now used in the default pipeline to save the context
state instead of the hard-coded call to Context::save().

The concept behind this is that the passes themselves should not have to
do the actual saving/restoring of the IR state, because that would make
it challenging to reorder them in the pipeline. Having separate
save/restore passes makes the transformation passes more composable as
parts of arbitrary pipelines.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec] Move seed collection into its own separate pass (#127132)</title>
<updated>2025-02-18T19:11:07+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-18T19:11:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5ecce45ea2980aff35d1283d4dd3feb8f74de16c'/>
<id>5ecce45ea2980aff35d1283d4dd3feb8f74de16c</id>
<content type='text'>
This patch moves the seed collection logic from the BottomUpVec pass
into a new Sandbox IR Function pass. The new "seed-collection" pass
collects the seeds, builds a region and runs the region pass pipeline.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch moves the seed collection logic from the BottomUpVec pass
into a new Sandbox IR Function pass. The new "seed-collection" pass
collects the seeds, builds a region and runs the region pass pipeline.</pre>
</div>
</content>
</entry>
<entry>
<title>[SanbdoxVec][BottomUpVec] Fix diamond shuffle with multiple vector inputs (#126965)</title>
<updated>2025-02-12T22:33:05+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-12T22:33:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=31cb807537fa09b3f452ac9f93388ef202f6b4a8'/>
<id>31cb807537fa09b3f452ac9f93388ef202f6b4a8</id>
<content type='text'>
When the operand comes from multiple inputs then we need additional
packing code. When the operands are scalar then we can use a single
InsertElementInst. But when the operands are vectors then we need a
chain of ExtractElementInst and InsertElementInst instructions to insert
the vector value into the destination vector. This is what this patch
implements.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the operand comes from multiple inputs then we need additional
packing code. When the operands are scalar then we can use a single
InsertElementInst. But when the operands are vectors then we need a
chain of ExtractElementInst and InsertElementInst instructions to insert
the vector value into the destination vector. This is what this patch
implements.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Legality] Fix mask on diamond reuse with shuffle (#126963)</title>
<updated>2025-02-12T20:29:09+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-12T20:29:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7a7f9190d03e12dc5b57d3eb33a84d078de43104'/>
<id>7a7f9190d03e12dc5b57d3eb33a84d078de43104</id>
<content type='text'>
This patch fixes a bug in the creation of shuffle masks when vectorizing
vectors in case of a diamond reuse with shuffle. The mask needs to
enumerate all elements of a vector, not treat the original vector value
as a single element. That is: if vectorizing two &lt;2 x float&gt; vectors
into a &lt;4 x float&gt; the mask needs to have 4 indices, not just 2.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes a bug in the creation of shuffle masks when vectorizing
vectors in case of a diamond reuse with shuffle. The mask needs to
enumerate all elements of a vector, not treat the original vector value
as a single element. That is: if vectorizing two &lt;2 x float&gt; vectors
into a &lt;4 x float&gt; the mask needs to have 4 indices, not just 2.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Scheduler] Fix top of schedule (#126820)</title>
<updated>2025-02-12T19:52:01+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-12T19:52:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6d7a84d72bf7f7be2a401e80a5339e1ae8f7c0f5'/>
<id>6d7a84d72bf7f7be2a401e80a5339e1ae8f7c0f5</id>
<content type='text'>
This patch fixes the way the top-of-schedule variable gets set and
updated. Before this patch it used to get updated whenever we scheduled
a bundle, which is wrong, as the top-of-schedule needs to be maintained
across scheduling attempts.

It should get reset only when we clear the schedule or when we destroy
the current schedule and re-schedule.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the way the top-of-schedule variable gets set and
updated. Before this patch it used to get updated whenever we scheduled
a bundle, which is wrong, as the top-of-schedule needs to be maintained
across scheduling attempts.

It should get reset only when we clear the schedule or when we destroy
the current schedule and re-schedule.</pre>
</div>
</content>
</entry>
</feed>
