<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/LoopDistribute, 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>[DebugInfo][LoopDistribute] Salvage debug values using dead instructions in the distributed loops (#137124)</title>
<updated>2025-05-12T01:06:42+00:00</updated>
<author>
<name>Shan Huang</name>
<email>52285902006@stu.ecnu.edu.cn</email>
</author>
<published>2025-05-12T01:06:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=86ceed7112391a2d19222041c25e41b2f3bfe047'/>
<id>86ceed7112391a2d19222041c25e41b2f3bfe047</id>
<content type='text'>
Fix #136532 .</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix #136532 .</pre>
</div>
</content>
</entry>
<entry>
<title>LAA: handle 0 return from getPtrStride correctly (#124539)</title>
<updated>2025-01-27T14:21:14+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2025-01-27T14:21:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3a4376b8f90686f754ee51b296a064ab03c12895'/>
<id>3a4376b8f90686f754ee51b296a064ab03c12895</id>
<content type='text'>
getPtrStride returns 0 when the PtrScev is loop-invariant, and this is
not an erroneous value: it returns std::nullopt to communicate that it
was not able to find a valid pointer stride. In analyzeLoop, we call
getPtrStride with a value_or(0) conflating the zero return value with
std::nullopt. Fix this, handling loop-invariant loads correctly.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
getPtrStride returns 0 when the PtrScev is loop-invariant, and this is
not an erroneous value: it returns std::nullopt to communicate that it
was not able to find a valid pointer stride. In analyzeLoop, we call
getPtrStride with a value_or(0) conflating the zero return value with
std::nullopt. Fix this, handling loop-invariant loads correctly.</pre>
</div>
</content>
</entry>
<entry>
<title>[LAA] Don't require Stride == 1/-1 for inbounds pointer AddRecs nowrap. (#113126)</title>
<updated>2024-11-05T21:45:56+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2024-11-05T21:45:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a353e258ba495be58263d6cc6e382e6dde298361'/>
<id>a353e258ba495be58263d6cc6e382e6dde298361</id>
<content type='text'>
If we have a pointer AddRec, the maximum increment is
2^(pointer-index-wdith - 1) - 1. This means that if incrementing the
AddRec wraps, the distance between the previously accessed location and
the wrapped location is &gt; 2^(pointer-index-wdith - 1), i.e. if the GEP
for the AddRec is inbounds, this would be poison due to the object being
larger than half the pointer index type space. The poison would be
immediate UB when the memory access gets executed..

Similar reasoning can be applied for decrements.

PR: https://github.com/llvm/llvm-project/pull/113126</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we have a pointer AddRec, the maximum increment is
2^(pointer-index-wdith - 1) - 1. This means that if incrementing the
AddRec wraps, the distance between the previously accessed location and
the wrapped location is &gt; 2^(pointer-index-wdith - 1), i.e. if the GEP
for the AddRec is inbounds, this would be poison due to the object being
larger than half the pointer index type space. The poison would be
immediate UB when the memory access gets executed..

Similar reasoning can be applied for decrements.

PR: https://github.com/llvm/llvm-project/pull/113126</pre>
</div>
</content>
</entry>
<entry>
<title>LDist/test: clean up and modernize (NFC) (#97822)</title>
<updated>2024-07-05T15:44:31+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2024-07-05T15:44:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=344930316f4c901673461dcf44ad57ae6ade1015'/>
<id>344930316f4c901673461dcf44ad57ae6ade1015</id>
<content type='text'>
Clean up unused triple/datalayout lines, strengthen RUN lines to include
-verify-loop-info/-verify-dom-info, and regenerate tests with
UpdateTestChecks where appropriate.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clean up unused triple/datalayout lines, strengthen RUN lines to include
-verify-loop-info/-verify-dom-info, and regenerate tests with
UpdateTestChecks where appropriate.</pre>
</div>
</content>
</entry>
<entry>
<title>UTC: support debug output from LDist (#93208)</title>
<updated>2024-07-03T09:50:52+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2024-07-03T09:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=915ee0b823a528456226de513f303483d5fe0793'/>
<id>915ee0b823a528456226de513f303483d5fe0793</id>
<content type='text'>
Tweak the LoopDistribute debug output to be prefixed with "LDist: ", get
it to be stable, and extend update_analyze_test_checks.py trivially to
support this output.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tweak the LoopDistribute debug output to be prefixed with "LDist: ", get
it to be stable, and extend update_analyze_test_checks.py trivially to
support this output.</pre>
</div>
</content>
</entry>
<entry>
<title>LoopInfo: introduce Loop::getLocStr; unify debug output (#93051)</title>
<updated>2024-06-25T12:12:15+00:00</updated>
<author>
<name>Ramkumar Ramachandra</name>
<email>ramkumar.ramachandra@codasip.com</email>
</author>
<published>2024-06-25T12:12:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0f111ba790a28056d42a0ae376371d7b694454ae'/>
<id>0f111ba790a28056d42a0ae376371d7b694454ae</id>
<content type='text'>
Introduce a Loop::getLocStr stolen from LoopVectorize's static function
getDebugLocString in order to have uniform debug output headers across
LoopVectorize, LoopAccessAnalysis, and LoopDistribute. The motivation
for this change is to have UpdateTestChecks recognize the headers and
automatically generate CHECK lines for debug output, with minimal
special-casing.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce a Loop::getLocStr stolen from LoopVectorize's static function
getDebugLocString in order to have uniform debug output headers across
LoopVectorize, LoopAccessAnalysis, and LoopDistribute. The motivation
for this change is to have UpdateTestChecks recognize the headers and
automatically generate CHECK lines for debug output, with minimal
special-casing.</pre>
</div>
</content>
</entry>
<entry>
<title>[LAA] Use PSE::getSymbolicMaxBackedgeTakenCount. (#93499)</title>
<updated>2024-06-04T21:23:30+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2024-06-04T21:23:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e949b54a5b7cd7cd0690fa126be3363a21f05a8e'/>
<id>e949b54a5b7cd7cd0690fa126be3363a21f05a8e</id>
<content type='text'>
Update LAA to use PSE::getSymbolicMaxBackedgeTakenCount which returns
the minimum of the countable exits.

When analyzing dependences and computing runtime checks, we need the
smallest upper bound on the number of iterations. In terms of memory
safety, it shouldn't matter if any uncomputable exits leave the loop,
as long as we prove that there are no dependences given the minimum of
the countable exits. The same should apply also for generating runtime
checks.

Note that this shifts the responsiblity of checking whether all exit
counts are computable or handling early-exits to the users of LAA.

Depends on https://github.com/llvm/llvm-project/pull/93498

PR: https://github.com/llvm/llvm-project/pull/93499</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update LAA to use PSE::getSymbolicMaxBackedgeTakenCount which returns
the minimum of the countable exits.

When analyzing dependences and computing runtime checks, we need the
smallest upper bound on the number of iterations. In terms of memory
safety, it shouldn't matter if any uncomputable exits leave the loop,
as long as we prove that there are no dependences given the minimum of
the countable exits. The same should apply also for generating runtime
checks.

Note that this shifts the responsiblity of checking whether all exit
counts are computable or handling early-exits to the users of LAA.

Depends on https://github.com/llvm/llvm-project/pull/93498

PR: https://github.com/llvm/llvm-project/pull/93499</pre>
</div>
</content>
</entry>
<entry>
<title>[Tests][LoopDistribute] Re-adding target triple in a test (#82954)</title>
<updated>2024-02-26T20:19:21+00:00</updated>
<author>
<name>Nilanjana Basu</name>
<email>n_basu@apple.com</email>
</author>
<published>2024-02-26T20:19:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=435e75db80e1ffd0f9752534d4544eba5e0610df'/>
<id>435e75db80e1ffd0f9752534d4544eba5e0610df</id>
<content type='text'>
This test triple was removed earlier to fix build errors. To preserve the original test intention the triple is re-added with an explicit target requirement.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This test triple was removed earlier to fix build errors. To preserve the original test intention the triple is re-added with an explicit target requirement.</pre>
</div>
</content>
</entry>
<entry>
<title>[Tests][LoopDistribute] Fixes failing unit test (#80809)</title>
<updated>2024-02-06T09:38:26+00:00</updated>
<author>
<name>Nilanjana Basu</name>
<email>n_basu@apple.com</email>
</author>
<published>2024-02-06T09:38:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=168002ece26269a4a6fcfce96ac8e66f6414c9e7'/>
<id>168002ece26269a4a6fcfce96ac8e66f6414c9e7</id>
<content type='text'>
Removed target-triple in target-independent test case to fix failing test caused by https://github.com/llvm/llvm-project/pull/67725.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Removed target-triple in target-independent test case to fix failing test caused by https://github.com/llvm/llvm-project/pull/67725.</pre>
</div>
</content>
</entry>
<entry>
<title>[LV] Remove loop trip count threshold for deciding whether to interleave a loop (#67725)</title>
<updated>2024-02-06T01:23:58+00:00</updated>
<author>
<name>Nilanjana Basu</name>
<email>n_basu@apple.com</email>
</author>
<published>2024-02-06T01:23:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c1c5b854adc9414ee3d8c55ddd07bdb4cc5b7171'/>
<id>c1c5b854adc9414ee3d8c55ddd07bdb4cc5b7171</id>
<content type='text'>
A set of microbenchmarks (https://github.com/llvm/llvm-test-suite/pull/26) showed that loop interleaving can be beneficial for loops with low trip count as well. Loop interleaving count computation is updated accordingly in prior patches while this patch removes the loop trip count threshold for interleaving. </content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A set of microbenchmarks (https://github.com/llvm/llvm-test-suite/pull/26) showed that loop interleaving can be beneficial for loops with low trip count as well. Loop interleaving count computation is updated accordingly in prior patches while this patch removes the loop trip count threshold for interleaving. </pre>
</div>
</content>
</entry>
</feed>
