<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp, 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>TargetLibraryInfo: Delete default TargetLibraryInfoImpl constructor (#145826)</title>
<updated>2025-06-26T07:12:36+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-06-26T07:12:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c91cbafad2119cace85499e8d231b8e5737f3b41'/>
<id>c91cbafad2119cace85499e8d231b8e5737f3b41</id>
<content type='text'>
It should not be possible to construct one without a triple. It would
also be nice to delete TargetLibraryInfoWrapperPass, but that is more
difficult.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It should not be possible to construct one without a triple. It would
also be nice to delete TargetLibraryInfoWrapperPass, but that is more
difficult.</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][Legality] Fix legality of SelectInst (#125005)</title>
<updated>2025-02-04T01:33:09+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-02-04T01:33:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c5f99e1bd406540d6b763adf485662e88ba32d2c'/>
<id>c5f99e1bd406540d6b763adf485662e88ba32d2c</id>
<content type='text'>
SelectInsts need special treatment because they are not always
straightforward to vectorize. This patch disables vectorization unless
they are trivially vectorizable.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SelectInsts need special treatment because they are not always
straightforward to vectorize. This patch disables vectorization unless
they are trivially vectorizable.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Legality] Don't vectorize when instructions repeat (#124479)</title>
<updated>2025-01-29T23:54:15+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-01-29T23:54:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e094c0fa677851786b7bdf53bedd11e0f4a59e35'/>
<id>e094c0fa677851786b7bdf53bedd11e0f4a59e35</id>
<content type='text'>
This patch adds a legality check that checks for repeated instrs in a
bundle and won't vectorize if such pattern is found.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a legality check that checks for repeated instrs in a
bundle and won't vectorize if such pattern is found.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Legality] Pack from different BBs (#124363)</title>
<updated>2025-01-24T23:39:37+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-01-24T23:39:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6409799bdcd86be3ed72e8d172181294d3e5ad09'/>
<id>6409799bdcd86be3ed72e8d172181294d3e5ad09</id>
<content type='text'>
When the inputs of the pack come from different BBs we need to make sure
we emit the pack instructions at the correct place.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the inputs of the pack come from different BBs we need to make sure
we emit the pack instructions at the correct place.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Legality] Implement ShuffleMask (#123404)</title>
<updated>2025-01-17T23:48:24+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-01-17T23:48:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=87e4b68195adc81fae40a4fa27e33458a9586fe5'/>
<id>87e4b68195adc81fae40a4fa27e33458a9586fe5</id>
<content type='text'>
This patch implements a helper ShuffleMask data structure that helps
describe shuffles of elements across lanes.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch implements a helper ShuffleMask data structure that helps
describe shuffles of elements across lanes.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][InstrMaps] EraseInstr callback (#123256)</title>
<updated>2025-01-17T21:36:42+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-01-17T21:36:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d6315afff078cb4309b5614562b32520f6e3a2eb'/>
<id>d6315afff078cb4309b5614562b32520f6e3a2eb</id>
<content type='text'>
This patch hooks up InstrMaps to the Sandbox IR callbacks such that it
gets updated when instructions get erased.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch hooks up InstrMaps to the Sandbox IR callbacks such that it
gets updated when instructions get erased.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][BottomUpVec] Implement InstrMaps (#122848)</title>
<updated>2025-01-16T23:26:35+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2025-01-16T23:26:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e902c6960cff4372d4b3ef9ae424b24ec6b0ea38'/>
<id>e902c6960cff4372d4b3ef9ae424b24ec6b0ea38</id>
<content type='text'>
InstrMaps is a helper data structure that maps scalars to vectors and
the reverse. This is used by the vectorizer to figure out which vectors
it can extract scalar values from.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
InstrMaps is a helper data structure that maps scalars to vectors and
the reverse. This is used by the vectorizer to figure out which vectors
it can extract scalar values from.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec] Notify scheduler about new instructions (#115102)</title>
<updated>2024-11-06T21:26:14+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2024-11-06T21:26:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5942a99f8b7dd361c35eb1c9c32b2475dce2c0b2'/>
<id>5942a99f8b7dd361c35eb1c9c32b2475dce2c0b2</id>
<content type='text'>
This patch registers the "createInstr" callback that notifies the
scheduler about newly created instructions. This guarantees that all
newly created instructions have a corresponding DAG node associated with
them. Without this the pass crashes when the scheduler encounters the
newly created vector instructions.

This patch also changes the lifetime of the sandboxir Ctx variable in
the SandboxVectorizer pass. It needs to be destroyed after the passes
get destroyed. Without this change when components like the Scheduler
get destroyed Ctx will have already been freed, which is not legal.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch registers the "createInstr" callback that notifies the
scheduler about newly created instructions. This guarantees that all
newly created instructions have a corresponding DAG node associated with
them. Without this the pass crashes when the scheduler encounters the
newly created vector instructions.

This patch also changes the lifetime of the sandboxir Ctx variable in
the SandboxVectorizer pass. It needs to be destroyed after the passes
get destroyed. Without this change when components like the Scheduler
get destroyed Ctx will have already been freed, which is not legal.</pre>
</div>
</content>
</entry>
<entry>
<title>[SandboxVec][Legality] Query the scheduler for legality (#114616)</title>
<updated>2024-11-05T22:54:21+00:00</updated>
<author>
<name>vporpo</name>
<email>vporpodas@google.com</email>
</author>
<published>2024-11-05T22:54:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ce0d085842c652620969001b9d0c12912cec2c24'/>
<id>ce0d085842c652620969001b9d0c12912cec2c24</id>
<content type='text'>
This patch adds the legality check of whether the candidate instructions
can be scheduled together. This uses a Scheduler object.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds the legality check of whether the candidate instructions
can be scheduled together. This uses a Scheduler object.</pre>
</div>
</content>
</entry>
</feed>
