<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/source/slang/slang-ir-spirv-snippet.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-11-05T17:47:26+00:00</updated>
<entry>
<title>Move switch statement bodies to their own lines (#5493)</title>
<updated>2024-11-05T17:47:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2024-11-05T17:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=b118451e301d734e3e783b3acdf871f3f6ea851c'/>
<id>urn:sha1:b118451e301d734e3e783b3acdf871f3f6ea851c</id>
<content type='text'>
* Move switch statement bodies to their own lines

* format

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<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>Allow bitwise or expressions and numeric literals in spirv_asm blocks (#3157)</title>
<updated>2023-08-28T22:05:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-28T22:05:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=508dc3a95de50de4a4d07d0a72a18e40d55b0e2e'/>
<id>urn:sha1:508dc3a95de50de4a4d07d0a72a18e40d55b0e2e</id>
<content type='text'>
* Add -spirv-core-grammar option to load alternate spirv defs

Also embed a version to use by default

* Use perfect hash for spv op lookup

* Neaten perfect hash embedding

* Refactor spirv grammar lookup in preperation for more kinds of lookups

* Load spirv capability list from spec

* Add all SPIR-V enums to lookup table

* regenerate vs projects

* appease msvc

* Use string slices for spir-v core grammar lookups

* wiggle

* comment

* Add OpInfo for spv ops

* regenerate vs projects

* Embed op names

* Add min/max operand counts and enum categories to spirv info

* neaten

* Operand kinds for spirv ops

* Store and embed all information relating to spirv enums and qualifiers

* Use SPIR-V spec to position instructions in spirv_asm blocks

* Neaten spir-v info embedding

* Neaten perfect hash embedding

* Add assignment syntax to spirv_asm snippets

* Better errors for spirv_asm parser

* Add warning for too many operands in spirv asm

* squash warnings

* neaten

* test wiggle

* Lookup enums for spirv

* Put OpCapability and OpExtension in the correct place for spirv_asm blocks

* Tests for OpCapability and OpExtension

* ci wiggle

* Add expected failure

* Allow raising immediate values to constant ids where necessary in spirv_asm blocks

* Allow bitwise or expressions and numeric literals in spirv_asm blocks

* test numeric literals

* Fix memory issues.

* fix.

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Misc. SPIRV Fixes, Part 2. (#3147)</title>
<updated>2023-08-24T23:32:33+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-08-24T23:32:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0470ea05a42d6c3f35d81a433fefdd440500cdbd'/>
<id>urn:sha1:0470ea05a42d6c3f35d81a433fefdd440500cdbd</id>
<content type='text'>
* Misc. SPIRV Fixes, Part 2.

* Fix up.

* Fix.

* Add system smenatic values.

* 16 bit int and floats, matrix/vector reshape, bool ops.

* Fix.

* Fix.

* Allow push constant entry point params.

* entrypoint params.

* swizzleSet and swizzledStore.

* packoffset.

* string hash.

* Fix.

* Matrix arithmetics.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Misc. SPIRV Fixes. (#3146)</title>
<updated>2023-08-23T13:58:50+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-08-23T13:58:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=c515bf9edf0ceefa9a0c9b36626ea7c8f72ce36f'/>
<id>urn:sha1:c515bf9edf0ceefa9a0c9b36626ea7c8f72ce36f</id>
<content type='text'>
* Lower all ByteAddressBuffer uses for SPIRV.

* Misc. SPIRV Fixes.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;
Co-authored-by: Ellie Hermaszewska &lt;ellieh@nvidia.com&gt;</content>
</entry>
<entry>
<title>Use ankerl/unordered_dense as a hashmap implementation (#3036)</title>
<updated>2023-08-16T00:57:47+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-16T00:57:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=45d9961a6a86d184248ef84f6a07125b0c224f97'/>
<id>urn:sha1:45d9961a6a86d184248ef84f6a07125b0c224f97</id>
<content type='text'>
* Correct namespace for getClockFrequency

* missing const

* Add missing assignment operator

* Remove unused variables

* Return correct modified variable

* Use stable hash code for file system identity

* terse static_assert

* Structured binding for map iteration

* Make (==) and getHashCode const on many structs

* Add ConstIterator for LinkedList

* Replace uses of ItemProxy::getValue with Dictionary::at

* Extract list of loads from gradientsMap before updating it

* Const correctness in type layout

* Add unordered_dense hashmap submodule

* Use wyhash or getHashCode in slang-hash.h

* refactor slang-hash.h

* Use ankerl/unordered_dense as a hashmap implementation

Notable changes:
- The subscript operator returns a reference directly to the value,
  rather than a lazy ItemProxy (pair of dict pointer and key)

slang-profile time (95% over 10 runs):

- Before: 6.3913906 (±0.0746)
- After:  5.9276123 (±0.0964)

* 64 bit hash for strings

So they have the same hash as char buffers with the same contents

* Narrowing warnings for gcc to match msvc

* revert back to c++17

* Correct c++ version for msvc

* Use path to unordered_dense which keeps tests happy

* Do not assign to and read from map in same expression

* Remove redundant map operations in primal-hoist

* Split out stable hash functions into slang-stable-hash.h

* 64 bit hash by default

* regenerate vs projects

* Correct return type from HashSetBase::getCount()

* correct width for call to Dictionary::reserve

* Use stable hash for obfuscated module ids

* Signed int for reserve

* clearer variable naming

* Parameterize Dictionary on hash and equality functors

* Allow heterogenous lookup for Dictionary

* missing const

* Use set over operator[] in some places

* Remove unused function

* s/at/getValue</content>
</entry>
<entry>
<title>SPIR-V WIP (#3064)</title>
<updated>2023-08-15T12:28:42+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-15T12:28:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=00bd481e001e8c0b8008eaff5a38fa37963e6f99'/>
<id>urn:sha1:00bd481e001e8c0b8008eaff5a38fa37963e6f99</id>
<content type='text'>
* Add type layout for structured buffer

* Default to generating spirv directly

* vk test for compute simple

* Add spirv-dis as a downstream compiler

* Emit Array types in SPIR-V

* makevector for spirv

* Dump whole spirv module on validation failure

* register array types

todo, use emitTypeInst

* Neater formatting for unhandled inst printing

* break out emitCompositeConstruct

* Correct array type generation

* neaten

* Allow getElement for vector

* Remove unused

* Allow predicating target intrinsics on types

* Consider functions with intrinsics to have definitions

We need to specialize these if they are predicated on types

* Correct array type generation

* makeArray for spir-v

* replace getElement with getElementPtr for spirv

* Correct translation of field access for spirv

* Push layouts to types for spirv

* Spirv intrinsics * operator now makes a pointer

* Add structured buffer of struct test

* Preserve type layout in spirv structured buffer legalization

* neaten

* makeVectorFromScalar for SPIRV

* placeholder for layouts on param groups

* More type safe spirv op construction

* Know that constants and types only go in one section

* Remove emitTypeInst

* Add todo for spirv sampling

* Add links to spirv documentation on emit functions

* OpTypeImage support for SPIR-V

* Add simpler texture test for spirv

* s/spirv_direct/spirv/g

* Allow several string literals in target_intrinsic

* Handle global params without a var layour for SPIR-V

For example groupshared vars

* uint spirv asm type

* Add todo for isDefinition

It is currently too broad

* Some atomic op spirv intrinsics

* Strip ConstantBuffer wrappers for spirv

* Add todo for matrix annotations

* Do not associate decorations insts with spirv counterparts

* Correct entry point parameter generation

* Spelling

* Assert that fieldAddress is returning a pointer

* Add error for existential type layout getting to spir-v emit

* Add IRTupleTypeLayout

Unused so far

* Allow getElementPtr to work with vectors

* Correct target name in test

* Hide default spirv direct behind a premake option --default-spirv-direct=true

* Do not insert space at start of intrinsic def

* Correct asm rendering in tests

* remove redundant option

* Emit directly from direct test

* Add source language options for spirv-dis

* Add comments to spirv dis

* Add dead debug print for before spirv module

* Correct asm rendering in tests

* s/spirv_direct/spirv/g

* Only specialize intrinsic functions with predicates

* regenerate vs projects

* squash warnings

* squash warnings

* remove duplication

* Silence warnings from msvc

* squash warnings

* Overload for zero sized array

* More msvc warnings

* warnings

* Add spirv-tools to path for tests

* Do not be specific about dxc version for diag test

* Normalize line endings from spirv-dis

* Correct filecheck matches

* Temporarily disable two spirv tests

Failing on CI, undebuggable hang :/

* Do not emit storage class more than once for spirv snippet

* Do not pass spir-v to spirv-dis by stdin

* Do not get spirv-dis output via stream, use file

* normalize file endings in spirv-dis output</content>
</entry>
<entry>
<title>Diagnostic improvements for direct spirv (#3053)</title>
<updated>2023-08-07T22:01:02+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-07T22:01:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=10b2038a8e71eb4a0e41cff38bc71e36dc0003aa'/>
<id>urn:sha1:10b2038a8e71eb4a0e41cff38bc71e36dc0003aa</id>
<content type='text'>
* Fail on an unhandled spv operand

* Diagnose on emitting a function with no definition or intrinsic

* clearer error message

* Add assert

* Add assert

* remove unused assert

* Disagnostic on snippet parsing failure

* Mention unimplemented instruction in error message

* mention unhandled local instruction for spirv in error message

* Allow specifying dump options in dumpIRToString

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Allow parsing some SPIR-V enums in intrinsics (#3062)</title>
<updated>2023-08-07T16:19:36+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-08-07T16:19:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=dceb1a74fcaa6031148abd2130552c77fc800809'/>
<id>urn:sha1:dceb1a74fcaa6031148abd2130552c77fc800809</id>
<content type='text'>
* Add TokenReader::AdvanceIf overlaod for TokenType

* Add some spirv defs to parser

* Add comment</content>
</entry>
<entry>
<title>StringBuilder to lowerCamel (#2840)</title>
<updated>2023-04-25T16:25:52+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2023-04-25T16:25:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=5abee6a0a30c7c965138ec7286b7f1b21b201731'/>
<id>urn:sha1:5abee6a0a30c7c965138ec7286b7f1b21b201731</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* WIP lowerCamel Dictionary.

* WIP more lowerCamel fixes for Dictionary.

* Add/Remove/Clear

* GetValue/Contains

* Fix tabs in dictionary.
Count -&gt; getCount

* Fix fields with caps.

* Key -&gt; key
Value -&gt; value
Use m_ for members where appropriate.
Use lowerCamel in linked list.

* Some small fixes/improvements to Dictionary.

* Kick CI.

* Small tidy on String.

* Append -&gt; append

* ToString -&gt; toString
ProduceString -&gt; produceString

* Small fixes.

* StringToXXX -&gt; stringToXXX

* Fix typo introduced by Append -&gt; append.

* Made intToAscii do reversal at the end.

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
</feed>
