<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/experimental/liveness/liveness.slang.expected, 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>2023-08-14T23:23:19+00:00</updated>
<entry>
<title>Support per field matrix layout (#3101)</title>
<updated>2023-08-14T23:23:19+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-08-14T23:23:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=661d6198bbb9857d3fdc6df477e0742ed0b0765c'/>
<id>urn:sha1:661d6198bbb9857d3fdc6df477e0742ed0b0765c</id>
<content type='text'>
* Support per field matrix layout

* Fix warnings.

* Fix.

* Fix tests.

* Fix spiv gen.

* Fix.

* More test fixes.

* Fix.

* Run only GPU tests on self-hosted servers.

* Remove -use-glsl-matrix-layout-modifier.

* Fix.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Disable code motion for expensive insts (call &amp; div) (#3042)</title>
<updated>2023-08-03T18:03:51+00:00</updated>
<author>
<name>Sai Praveen Bangaru</name>
<email>31557731+saipraveenb25@users.noreply.github.com</email>
</author>
<published>2023-08-03T18:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=aadd816a6f38c52e2577c807c023a3b775a21ba6'/>
<id>urn:sha1:aadd816a6f38c52e2577c807c023a3b775a21ba6</id>
<content type='text'>
* Disable code motion for expensive insts (call &amp; div)

The current redundancy removal pass does not consider control-flow within loops and as a result can sometimes move dynamic dispatch code outside their switch blocks, if they are nested in a single-iter-loop.

* Update liveness.slang.expected</content>
</entry>
<entry>
<title>Use scratchData on `IRInst` to replace HashSets. (#2978)</title>
<updated>2023-07-12T23:00:05+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-07-12T23:00:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=261b2f1f2bc13ccf7db5ec68c825ffc7b0781f7f'/>
<id>urn:sha1:261b2f1f2bc13ccf7db5ec68c825ffc7b0781f7f</id>
<content type='text'>
* Use scratchData on `IRInst` to replace HashSets.

* Update test results.

* Initialize scratchData.

* Update autodiff documentation.

* Use enum instead of bool.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Be lenient on same-size unsigend-&gt;signed conversion. (#2913)</title>
<updated>2023-06-01T20:53:31+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-06-01T20:53:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=16cd361dd67471bcc355d1b3b72b0b022518088f'/>
<id>urn:sha1:16cd361dd67471bcc355d1b3b72b0b022518088f</id>
<content type='text'>
* Be lenient on same-size unsigend-&gt;signed conversion.

* Fix tests.

* Use 250.

* wip

* Fix.

* Fix tests.

* Fix.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>For C-like targets, emit resource declarations before other globals (#2843)</title>
<updated>2023-04-26T19:46:24+00:00</updated>
<author>
<name>Sai Praveen Bangaru</name>
<email>31557731+saipraveenb25@users.noreply.github.com</email>
</author>
<published>2023-04-26T19:46:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=e1940e53c0f76e91a2616693b261beb9190015be'/>
<id>urn:sha1:e1940e53c0f76e91a2616693b261beb9190015be</id>
<content type='text'>
* For C-like targets, emit resource declarations before other globals

* Remove unused tests</content>
</entry>
<entry>
<title>Fix optimization pass not converging. (#2725)</title>
<updated>2023-03-23T23:59:02+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-03-23T23:59:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=50e7d9797d9bf4b98a056d5df128c24dde6e78bd'/>
<id>urn:sha1:50e7d9797d9bf4b98a056d5df128c24dde6e78bd</id>
<content type='text'>
* Fix optimization pass not converging.

* Fix.

* Fix tests.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>More fixes for reverse-mode on complicated loops (#2675)</title>
<updated>2023-02-28T04:42:06+00:00</updated>
<author>
<name>Sai Praveen Bangaru</name>
<email>31557731+saipraveenb25@users.noreply.github.com</email>
</author>
<published>2023-02-28T04:42:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=10e2d9c7c532c204f26bb2c9f383f21b121b2ff2'/>
<id>urn:sha1:10e2d9c7c532c204f26bb2c9f383f21b121b2ff2</id>
<content type='text'>
* Multiple fixes to get various loop tests to pass.

* Create reverse-nested-loop.slang

* Fix for variables becoming inaccessible during cfg normalization

* Removed comments and moved break-branch-normalization to eliminateMultiLevelBreaks

* Fix.

* Override liveness tests</content>
</entry>
<entry>
<title>More control flow simplifications. (#2673)</title>
<updated>2023-02-24T18:01:47+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-02-24T18:01:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=bd6306cdaa4a49344658bd026721b6532e103d09'/>
<id>urn:sha1:bd6306cdaa4a49344658bd026721b6532e103d09</id>
<content type='text'>
* More control flow and Phi param simplifications.

* Fix.

* Fix gcc error.

* Fix.

* More IR cleanup.

* Fix bug in phi param dce + ifelse simplify.

* Propagate and DCE side-effect-free functions.

* Enhance CFG simplifcation to remove loops with no side effects.

* Fix.

* Fixes.

* Fix tests. Add [__AlwaysFoldIntoUseSite] for rayPayloadLocation.

* More cleanup.

* Fixes.

* Fix.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Arithmetic simplifications and more IR clean up logic. (#2632)</title>
<updated>2023-02-08T02:36:35+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-02-08T02:36:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=4be623c52a6518eb86756a0369706c1d6670f6bb'/>
<id>urn:sha1:4be623c52a6518eb86756a0369706c1d6670f6bb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixes for crash when inlining at global scope (#2593)</title>
<updated>2023-01-14T23:31:31+00:00</updated>
<author>
<name>Theresa Foley</name>
<email>10618364+tangent-vector@users.noreply.github.com</email>
</author>
<published>2023-01-14T23:31:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=14fab67c5edd8eb697ffb10dbcc0467678521eef'/>
<id>urn:sha1:14fab67c5edd8eb697ffb10dbcc0467678521eef</id>
<content type='text'>
* Fixes for crash when inlining at global scope

Recent changes to the way inlining is implemented in the Slang compiler
have broken certain scenarios involving `static const` declarations.
The basic problem is that the initial-value expression for a `static const`
gets lowered into IR code at the global scope of a module, and if
that code includes `call`s to stdlib operations marked `forceInlineEarly`,
then we end up trying to apply inlining to code at module scope.
The current inlining operation assumes that all `call`s are in basic
blocks, and that the correct way to do inlining involves splitting
those blocks.

This change adds logic to detect when the callee at a call site to
be inlined consists of a single basic block ending in a `return`,
and in that case it invokes specialized inlining logic that doesn't
split basic blocks and doesn't need to care if the original `call`
is in a basic block.

Thus we are able to inline calls to single-basic-block `forceInlineEarly`
functions called as part of the initialization for global-scope
`static const` variables.

This logic does *not* solve the problem of calls to multi-block
`forceInlineEarly` functions from the global scope. Such calls cannot
really be inlined.

A secondary problem that arises when inlining such calls is that the
callee might include local temporaries (`var` instructions) that are
read and written (`load`s and `store`s), and none of those instructions
should be allowed at the global scope.

In the case of the functions being inlined here, the `load`/`store`
operations are superfluous, and should be cleaned up by our SSA pass.
The only reason that they seem to *not* be getting cleaned up in the
case that was been triggering crashes is that the callee is a generic.

The current logic for the SSA pass was skipping the bodies of generic
functions, so they would not be cleaned up. This change enables the SSA
pass to apply to the bodies of generic functions, and also ensures that
SSA cleanups are applied *before* any `forceInlineEarly` functions get
inlined.

* fixup: liveness test outputs</content>
</entry>
</feed>
