<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/LoadStoreVectorizer, 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>[NVPTX] Vectorize and lower 256-bit global loads/stores for sm_100+/ptx88+ (#139292)</title>
<updated>2025-05-13T20:36:09+00:00</updated>
<author>
<name>Drew Kersnar</name>
<email>dkersnar@nvidia.com</email>
</author>
<published>2025-05-13T20:36:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a1e1a84d2c8bb627945cda2a991539d39b034269'/>
<id>a1e1a84d2c8bb627945cda2a991539d39b034269</id>
<content type='text'>
PTX 8.8+ introduces 256-bit-wide vector loads/stores under certain
conditions. This change extends the backend to lower these loads/stores.
It also overrides getLoadStoreVecRegBitWidth for NVPTX, allowing the
LoadStoreVectorizer to create these wider vector operations.

See the spec for the three relevant PTX instructions here:
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-ld
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-ld-global-nc
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-st</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PTX 8.8+ introduces 256-bit-wide vector loads/stores under certain
conditions. This change extends the backend to lower these loads/stores.
It also overrides getLoadStoreVecRegBitWidth for NVPTX, allowing the
LoadStoreVectorizer to create these wider vector operations.

See the spec for the three relevant PTX instructions here:
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-ld
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-ld-global-nc
- https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-st</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Precommit tests for an LSV patch (#138167)</title>
<updated>2025-05-01T16:50:31+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>95053726+gandhi56@users.noreply.github.com</email>
</author>
<published>2025-05-01T16:50:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=dadd91e793a7622e0ca34ad9c3993a01a437b651'/>
<id>dadd91e793a7622e0ca34ad9c3993a01a437b651</id>
<content type='text'>
Autogenerate checks for merge-vectors.ll and introduce
merge-vectors-complex.ll with mismatched types.
Related PR: https://github.com/llvm/llvm-project/pull/134436

This is a reland of https://github.com/llvm/llvm-project/pull/138155,
which was reverted due to missed nits.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Autogenerate checks for merge-vectors.ll and introduce
merge-vectors-complex.ll with mismatched types.
Related PR: https://github.com/llvm/llvm-project/pull/134436

This is a reland of https://github.com/llvm/llvm-project/pull/138155,
which was reverted due to missed nits.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[NFC] Precommit: Autogenerate checks for an LSV test" (#138161)</title>
<updated>2025-05-01T16:09:51+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>95053726+gandhi56@users.noreply.github.com</email>
</author>
<published>2025-05-01T16:09:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a7aca819d44b8d67f2cffd452e6b63741c83cd62'/>
<id>a7aca819d44b8d67f2cffd452e6b63741c83cd62</id>
<content type='text'>
Reverts llvm/llvm-project#138155</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#138155</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Precommit: Autogenerate checks for an LSV test (#138155)</title>
<updated>2025-05-01T16:00:43+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>95053726+gandhi56@users.noreply.github.com</email>
</author>
<published>2025-05-01T16:00:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0e9740ea1783ceaf8686b13ab7bf9278f34aef6a'/>
<id>0e9740ea1783ceaf8686b13ab7bf9278f34aef6a</id>
<content type='text'>
Related PR: https://github.com/llvm/llvm-project/pull/134436</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Related PR: https://github.com/llvm/llvm-project/pull/134436</pre>
</div>
</content>
</entry>
<entry>
<title>[LoadStoreVectorizer] Remove more unnecessary data layouts from tests</title>
<updated>2025-04-30T17:58:33+00:00</updated>
<author>
<name>Alexander Richardson</name>
<email>alexrichardson@google.com</email>
</author>
<published>2025-04-30T17:58:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a57847232f3b6d23c2d4d183be1964607140bf7b'/>
<id>a57847232f3b6d23c2d4d183be1964607140bf7b</id>
<content type='text'>
The tests in this directory all depend on the AMDGPU target being
present so we can let opt infer the data layout.

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/137924
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The tests in this directory all depend on the AMDGPU target being
present so we can let opt infer the data layout.

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/137924
</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU] Fix edge case of buffer OOB handling (#115479)</title>
<updated>2025-03-07T07:56:44+00:00</updated>
<author>
<name>Piotr Sobczak</name>
<email>piotr.sobczak@amd.com</email>
</author>
<published>2025-03-07T07:56:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=170c0dac4488f9cfbc67e9593ebe6ad01cfa8f32'/>
<id>170c0dac4488f9cfbc67e9593ebe6ad01cfa8f32</id>
<content type='text'>
Strengthen out-of-bounds guarantees for buffer accesses by disallowing
buffer accesses with alignment lower than natural alignment.

This is needed to specifically address the edge case where an access
starts out-of-bounds and then enters in-bounds, as the hardware would
treat the entire access as being out-of-bounds. This is normally not
needed for most users, but at least one graphics device extension
(VK_EXT_robustness2) has very strict requirements - in-bounds accesses
must return correct value, and out-of-bounds accesses must return zero.

The direct consequence of the patch is that a buffer access at negative
address is not merged by load-store-vectorizer with one at a positive
address, which fixes a CTS test.

Targets that do not care about the new behavior are advised to use the
new target feature relaxed-buffer-oob-mode that maintains the state from
before the patch.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Strengthen out-of-bounds guarantees for buffer accesses by disallowing
buffer accesses with alignment lower than natural alignment.

This is needed to specifically address the edge case where an access
starts out-of-bounds and then enters in-bounds, as the hardware would
treat the entire access as being out-of-bounds. This is normally not
needed for most users, but at least one graphics device extension
(VK_EXT_robustness2) has very strict requirements - in-bounds accesses
must return correct value, and out-of-bounds accesses must return zero.

The direct consequence of the patch is that a buffer access at negative
address is not merged by load-store-vectorizer with one at a positive
address, which fixes a CTS test.

Targets that do not care about the new behavior are advised to use the
new target feature relaxed-buffer-oob-mode that maintains the state from
before the patch.</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU][NFC] Replace gfx940 and gfx941 with gfx942 in llvm/test (#125711)</title>
<updated>2025-02-13T14:17:12+00:00</updated>
<author>
<name>Fabian Ritter</name>
<email>fabian.ritter@amd.com</email>
</author>
<published>2025-02-13T14:17:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a33a84ee6348659d7e2483d728a841a9872fe2ec'/>
<id>a33a84ee6348659d7e2483d728a841a9872fe2ec</id>
<content type='text'>
[AMDGPU][NFC] Replace gfx940 and gfx941 with gfx942 in llvm/test

gfx940 and gfx941 are no longer supported. This is one of a series of PRs to remove them from the code base.

This PR uses gfx942 instead of gfx940 and gfx941 in the test RUN-lines (unless there is already a RUN-line for gfx942).

The only notable difference in the test output is that gfx942 does not force the use of sc0 and sc1 on stores while gfx940 and gfx941 do (cf. https://reviews.llvm.org/D149986).

For SWDEV-512631</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[AMDGPU][NFC] Replace gfx940 and gfx941 with gfx942 in llvm/test

gfx940 and gfx941 are no longer supported. This is one of a series of PRs to remove them from the code base.

This PR uses gfx942 instead of gfx940 and gfx941 in the test RUN-lines (unless there is already a RUN-line for gfx942).

The only notable difference in the test output is that gfx942 does not force the use of sc0 and sc1 on stores while gfx940 and gfx941 do (cf. https://reviews.llvm.org/D149986).

For SWDEV-512631</pre>
</div>
</content>
</entry>
<entry>
<title>[LoadStoreVectorizer] Postprocess and merge equivalence classes (#121861)</title>
<updated>2025-01-08T01:17:26+00:00</updated>
<author>
<name>Vyacheslav Klochkov</name>
<email>vyacheslav.n.klochkov@intel.com</email>
</author>
<published>2025-01-08T01:17:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9184c42869b87a59839cafdb8a3679e7ec2faeb1'/>
<id>9184c42869b87a59839cafdb8a3679e7ec2faeb1</id>
<content type='text'>
This patch introduces a new method:

void Vectorizer::mergeEquivalenceClasses(EquivalenceClassMap &amp;EQClasses)
const;

The method is called at the end of
Vectorizer::collectEquivalenceClasses() and is needed to merge
equivalence classes that differ only by their underlying objects (UO1
and UO2), where UO1 is 1-level-indirection underlying base for UO2. This
situation arises due to the limited lookup depth used during the search
of underlying bases with llvm::getUnderlyingObject(ptr).

Using any fixed lookup depth can result into creation of multiple
equivalence classes that only differ by 1-level indirection bases.

The new approach merges equivalence classes if they have adjacent bases
(1-level indirection). If a series of equivalence classes form ladder
formed of 1-step/level indirections, they are all merged into a single
equivalence class. This provides more opportunities for the load-store
vectorizer to generate better vectors.

---------

Signed-off-by: Klochkov, Vyacheslav N &lt;vyacheslav.n.klochkov@intel.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces a new method:

void Vectorizer::mergeEquivalenceClasses(EquivalenceClassMap &amp;EQClasses)
const;

The method is called at the end of
Vectorizer::collectEquivalenceClasses() and is needed to merge
equivalence classes that differ only by their underlying objects (UO1
and UO2), where UO1 is 1-level-indirection underlying base for UO2. This
situation arises due to the limited lookup depth used during the search
of underlying bases with llvm::getUnderlyingObject(ptr).

Using any fixed lookup depth can result into creation of multiple
equivalence classes that only differ by 1-level indirection bases.

The new approach merges equivalence classes if they have adjacent bases
(1-level indirection). If a series of equivalence classes form ladder
formed of 1-step/level indirections, they are all merged into a single
equivalence class. This provides more opportunities for the load-store
vectorizer to generate better vectors.

---------

Signed-off-by: Klochkov, Vyacheslav N &lt;vyacheslav.n.klochkov@intel.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[test] Remove redundant -march= when target triple is specified in IR</title>
<updated>2024-12-15T20:42:17+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2024-12-15T20:42:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=133352feb30605ec51b15f77826ed3a2fbf8db56'/>
<id>133352feb30605ec51b15f77826ed3a2fbf8db56</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[LoadStoreVectorizer] Postprocess and merge equivalence classes" (#119657)</title>
<updated>2024-12-12T04:36:23+00:00</updated>
<author>
<name>Michal Paszkowski</name>
<email>michal@paszkowski.org</email>
</author>
<published>2024-12-12T04:36:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=04313b86a52541b2a618d14f7fa1f23ea7adfa47'/>
<id>04313b86a52541b2a618d14f7fa1f23ea7adfa47</id>
<content type='text'>
Reverts llvm/llvm-project#114501, due to the following failure:
https://lab.llvm.org/buildbot/#/builders/55/builds/4171</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#114501, due to the following failure:
https://lab.llvm.org/buildbot/#/builders/55/builds/4171</pre>
</div>
</content>
</entry>
</feed>
