<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/source/slang/slang-ir-loop-inversion.cpp, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2024-10-29T06:49:26+00:00</updated>
<entry>
<title>format</title>
<updated>2024-10-29T06:49:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2024-10-29T06:49:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21'/>
<id>urn:sha1:f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21</id>
<content type='text'>
* format

* Minor test fixes

* enable checking cpp format in ci</content>
</entry>
<entry>
<title>Variadic Generics Part 2: IR lowering and specialization. (#4849)</title>
<updated>2024-08-19T04:57:24+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2024-08-19T04:57:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=ecf85df6eee3da76ef54b14e4ab083f22da89e46'/>
<id>urn:sha1:ecf85df6eee3da76ef54b14e4ab083f22da89e46</id>
<content type='text'>
* Variadic Generics Part 2: IR lowering and specialization.

* Update design doc status.

* Update design doc.

* Resolve review comments.</content>
</entry>
<entry>
<title>Correctly pass values from the conditional block to the loop during inversion (#3311)</title>
<updated>2023-11-06T21:21:49+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-11-06T21:21:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=da9e0adb5cf2b1bed6075a3afe93cfdcceabe904'/>
<id>urn:sha1:da9e0adb5cf2b1bed6075a3afe93cfdcceabe904</id>
<content type='text'>
Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Fix loop inversion issue that caused ordinary blocks with multiple predecessors (#3211)</title>
<updated>2023-09-19T03:45:44+00:00</updated>
<author>
<name>Sai Praveen Bangaru</name>
<email>31557731+saipraveenb25@users.noreply.github.com</email>
</author>
<published>2023-09-19T03:45:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=95fcf65c38d52ed458a3b11622ea8b55a3864c24'/>
<id>urn:sha1:95fcf65c38d52ed458a3b11622ea8b55a3864c24</id>
<content type='text'>
* Add test case for while loop

* Fix loop inversion issue that caused ordinary blocks with multiple predecessors

The original version can leave the CFG in an invalid state with `e4` not being a break block or merge point, but having multiple predecessors.

The updated version creates a separate jump block for each break instruction to avoid this issue.

* Fixup tests</content>
</entry>
<entry>
<title>Loop inversion: Handle case where loop can have additional inner breaks (#3178)</title>
<updated>2023-09-03T19:57:15+00:00</updated>
<author>
<name>Sai Praveen Bangaru</name>
<email>31557731+saipraveenb25@users.noreply.github.com</email>
</author>
<published>2023-09-03T19:57:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=641f7bdc4ea4f75385c30d833cce4619a411ec67'/>
<id>urn:sha1:641f7bdc4ea4f75385c30d833cce4619a411ec67</id>
<content type='text'>
* Loop inversion: Handle case where loop can have additional inner breaks

- We now have another critical-edge-breaking block `e4` that is the target of inner breaks.
- Both `e4` and `e1` (the break branch from the loop condition) branch to the loop's ne break block `b2`.
- `b2` is a clone of the old break block `b`, and it simply branches to the old break block.

This fixes an IR validation issue in `tests/autodiff/reverse-while-loop-2.slang`

* Delete region-wave-masks.slang

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Be more careful about merge blocks during loop inversion (#3136)</title>
<updated>2023-08-17T21:57:57+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-17T21:57:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=80c8f13e369b0bf0b86d2b19a4902594e6d67e5c'/>
<id>urn:sha1:80c8f13e369b0bf0b86d2b19a4902594e6d67e5c</id>
<content type='text'>
* fix block eater

* Be more careful about merge blocks during loop inversion

* Restrict loop inversion to loops without continue jumps

* Remove multiple back-edges from loops for SPIR-V

* Wiggle cross compile test output

* Make loop-inversion more conservative

* Allow loops on false side in cfg normalization

* Do not set loop continue block during inversion

* Add loop inversion test to failing test list for spirv

* Simplify single use continue blocks in spirv legalization

* wobble expected failure list

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Add loop inversion pass (#2899)</title>
<updated>2023-08-17T05:41:49+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-17T05:41:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a0ee2bf671d61d1e2b561db3966e57ffc802040f'/>
<id>urn:sha1:a0ee2bf671d61d1e2b561db3966e57ffc802040f</id>
<content type='text'>
* Generalize collectInductionValues

* Support affine transformations of loop index as induction variables

* Test for generalized induction value collection

* Neaten inductive variable finding

* Make types more specific

* Add loop inversion pass

* Test output changes after loop inversion

* Store the type of implication success when finding inductive variables

* Test that loop induction finding does not alway succeed

* Support chains of additions and branches of additions in induction variable finding

* Use c++17 for downstream compilers

* Wiggle expected output for cross compile test after loop inversion

* Add loop inversion test

* Simplify IfElse instructions with a single trivial block

* Invert loops with a user inserted break

* Limit loop inversion to loops with a 4 instruction or less comparison block

* regenerate vs projects</content>
</entry>
</feed>
