summaryrefslogtreecommitdiff
path: root/source/slang
AgeCommit message (Collapse)Author
2023-09-08Don't inline callees with custom derivative before autodiff. (#3196)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-07Incur l-value conversion cost during overload resolution. (#3195)Yong He
* Incur l-value conversion cost during overload resolution. * Fix compile error. * cleanup. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-07Lower LValue implicit cast before autodiff. (#3194)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-07Fix compiler crashing when `[BackwardDerivativeOf(fn)]` refers to an ↵Sai Praveen Bangaru
unresolved `fn` (#3191) * Fix compiler crashing on unresolved decl-ref * Update autodiff-custom-diff-unresolved.slang --------- Co-authored-by: Yong He <yonghe@outlook.com>
2023-09-07Fix GLSL output for `gl_ClipDistance` input builtin. (#3193)Yong He
* Fix GLSL output for `gl_ClipDistance` input builtin. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-07Fix erroneous diagnostic when checking a generic differentiable mutable ↵winmad
method. (#3192) * Add a unit test * Fix. --------- Co-authored-by: Lifan Wu <lifanw@nvidia.com> Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-07Add -repro-fallback-directory (#3188)jsmall-nvidia
Co-authored-by: Yong He <yonghe@outlook.com>
2023-09-06Update prebuilt glslang binaries (#3189)Yong He
* Update prebuilt glslang binaries * Add test for GL_EXT_texture_shadow_lod functions. * fix --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-06Make a warning if a [mutating] method is called on an in param. (#3184)jsmall-nvidia
* Make a warning if a [mutating] method is passed as an in param. * Kick CI. --------- Co-authored-by: Yong He <yonghe@outlook.com>
2023-09-06Global values are automatically assigned null derivative (#3186)Sai Praveen Bangaru
2023-09-05Fix HLSL SER Intrinsics. (#3183)Yong He
* Fix HLSL SER Intrinsics. * Fix GFX Vulkan shader creation bug. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-05SPIR-V image operations (#3163)Ellie Hermaszewska
* Add __truncate and __sampledType for spirv_asm Allows some texture tests to start passing * add __isVector Currently unused * Add 1-vector legalization pass (WIP) * Add capabilities for image types * neaten instruction dumping * add 1-vector test * Add a couple of cases to vec1 legalization * Remove texture tests from expected failures * comment * regenerate vs projects * Remove redundant define form synchapi emulation * refactoring image methods * All sample functions refactored * Remove incorrect glsl intrinsics Partially addresses https://github.com/shader-slang/slang/issues/3174 * __subscript image ops via writing funcs * Extract texture struct writing from core.meta.slang * Abstract out cuda intrinsic * Remvoe erroneous call to opDecorateIndex * spirv asm IR utils * Correct position of loads for SPIR-V asm inst operands * Raise constructors to global scope during spir-v legalization * Correct snippet output * Implement most texture sampling ops for SPIR-V * Legalize 1-vectors for glsl too * Make SPIR-V inst operands non-hoistable * Better 1-vector legalization * Put textures in ptrs for spirv * insert missing break * Add vec1 legalization test * Add some missing pieces to slang-ir-insts * Greatly neaten vec1 legalization * a * Neaten vec1 legalization * Add image read and write intrinsics for spir-v * Squash warnings * regenerate vs projects * Drop redundant guards * Drop 5 tests from expected failure list * Inst numbering changes to cross compile tests * vec1 legalization tests only on vk * Correct location of asm op emit * Inline constant in spirv-asm * Correct signedness for lane in wave intrinsics * Extract element from float1 for cuda * squash warnings * Neaten spirv-emit * dedupe more capabilities * warnings * neaten assert * comments * comments
2023-09-03Loop inversion: Handle case where loop can have additional inner breaks (#3178)Sai Praveen Bangaru
* 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 <yonghe@outlook.com>
2023-09-03Proper lowering of functiosn that returns NonCopyable values. (#3179)Yong He
* Proper lowering of functiosn that returns NonCopyable values. * Fix tests. * Fix clang errors. * Fix. * Fix clang error. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-09-01Fix GLSL code gen around RayQuery and HitObject types. (#3173)Yong He
* Update slang-llvm. * Fix. * fix. * Fix unit tests for multi-thread execution. * Fix tests. * fixes. * update tests. * Add gfx-smoke to linux expected failure list. * Try fix test. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-31Inline all RayQuery/HitObject typed functions when targeting GLSL. (#3172)Yong He
* Inline all RayQuery/HitObject typed functions when targeting GLSL. * update test. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-31Add SPIRV atomics intrinsics and fix buffer layout lowering. (#3170)Yong He
* Fix atomics intrinsics and buffer layout lowering. * Fix. * Add more test. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-31Bottleneck `TypeCastIntVal` creation through ASTBuilder (#3171)Sai Praveen Bangaru
* Bottleneck type-cast-int-val creation through ASTBuilder * Update slang-ast-builder.h
2023-08-31Fix typo in intrinsic for `WaveActiveMin()` (#3167)Sai Praveen Bangaru
2023-08-30Fix subtle corner-case with vars getting hoisted out of the loop creating ↵Sai Praveen Bangaru
unnecessary loop state (#3165) * Extend the unit tests for MxLayeredMaterial * Add breaking loop test * Fix subtle corner-case with vars getting hoisted out of the loop creating unnecessary loop state * remove whitespace changes * Create loop-init.slang.expected.txt * Add filecheck tests to ensure correct loop state * Update comment --------- Co-authored-by: winmad <winmad.wlf@gmail.com> Co-authored-by: Yong He <yonghe@outlook.com>
2023-08-30Fix memory barrier intrinsics. (#3166)Yong He
* Fix memory barrier intrinsics. Makes them produce the same spirv code as dxc. * Fix. * filecheck barrier test for spirv backend. * Fix glsl intrinsic definition. * Fix intrinsics. * Fix intrinsics. * Fix. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-29Wave intrinsics. (#3164)Yong He
* Wave intrinsics. * scalar intrinsics. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-29Correct parsing spirv with no rhs operands (#3161)Ellie Hermaszewska
* Correct parsing spirv with no rhs operands * Guard against eof
2023-08-29Add more wave intrinsics. (#3162)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-29clock intrinsics for spirv (#3159)Ellie Hermaszewska
2023-08-28Fix cast, needs to be PtrTypeBase rather than PtrType such that InOut/Out ↵jsmall-nvidia
work. (#3158) Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com> Co-authored-by: Yong He <yonghe@outlook.com>
2023-08-28Add `target_switch` and `intrinsic_asm` statement. (#3154)Yong He
* Add `target_switch` and `__intrinsic_asm` statement. * Cleanup. * WaveGetActiveMask, WaveGetActiveMask, WaveCountBits. * WaveIsFirstLane. * More wave intrinsics. * wave intrinsics. * merge fix. * Fix. * Fix. * Update test. * update test. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-29s/depreciated/deprecated/ (#3153)Ellie Hermaszewska
2023-08-28Allow bitwise or expressions and numeric literals in spirv_asm blocks (#3157)Ellie Hermaszewska
* 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 <yonghe@outlook.com>
2023-08-25Fix various issues with trivial loops (#3149)Sai Praveen Bangaru
* Fix issue with trivial loop detection * Fix issue with unreachable blocks in break elimination Add logic to avoid eliminating loops with multi-level breaks. * Incorporate feedback - Use a boolean for multi-level break check - Use dominator trees for region check instead of exhaustive enumeration - Fix potential issue with enumerating parent break blocks. * fix
2023-08-25Initial version of spirv_asm block (#3151)Ellie Hermaszewska
* Initial version of spirv_asm block * Correct indentation of parent instruction dumping * neater dumping for spirv_asm instructions * Add $$ DollarDollar token * Allow passing addresses to spirv_asm blocks * spirv OpUndef * String literals in spirv asm * OpName for spirv_asm ids * Correct failure in lower spirv_asm * correct position for spirv_asm idents * comment correct * several more tests for spirv_asm blocks * Fill out some unimplemented functions for spirv_asm expressions --------- Co-authored-by: Yong He <yonghe@outlook.com>
2023-08-25Support SPIRV Capability declaration on intrinsic functions. (#3150)Yong He
* Spirv Capability lookup. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-24Misc. SPIRV Fixes, Part 2. (#3147)Yong He
* 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 <yhe@nvidia.com>
2023-08-23Misc. SPIRV Fixes. (#3146)Yong He
* Lower all ByteAddressBuffer uses for SPIRV. * Misc. SPIRV Fixes. --------- Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2023-08-23Lower all ByteAddressBuffer uses for SPIRV. (#3143)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-23Retain int casts when unifying generic params (#3145)Ellie Hermaszewska
2023-08-22Make `-fvk-u-shift` work on AppendStructuredBuffer. (#3144)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-22color spirv-val output (#3132)Ellie Hermaszewska
* s/invalid code/todo * comment debug disassembled spirv * more convenient spirv-val output * color spirv-val output
2023-08-21Compile append and consume structured buffers to glsl. (#3142)Yong He
* Compile append and consume structured buffers to glsl. * Fix. * Update CI config. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-18Allow loop counters to be used as constexpr arguments. (#3139)Yong He
* Allow loop counters to be used as constexpr arguments. * Fix. * Fix. * Fix. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-18SPIRV: Fix matrix layout tests. (#3137)Yong He
* SPIRV: Fix matrix layout tests. * Remove spaces. * Disable debug output. * Fix. * Update expected-failure list. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-17Be more careful about merge blocks during loop inversion (#3136)Ellie Hermaszewska
* 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 <yonghe@outlook.com>
2023-08-17Initial support for differentiating existential types (#3111)Sai Praveen Bangaru
* Merge * WIP: Complete auto-diff logic for existential types * Revert "Add compiler option for generating representative hash" This reverts commit 13b09ef4621e73844c96d64d9c111a8ed0d45aae. * More fixes for fwd-mode AD on existential types * Add anyValueSize inference pass * Fix checking of `Differential.Differential==Differential` * In-progress: infer any-value-size for existential types * Existentials now work in forward-mode * Overhaul handling of existential AD types. Fwd-mode works, reverse-mode requires front-end changes * Reverse-mode now works on existentials * Cleanup * Remove diff rules for create existential object for now * Revert treat-as-differentiable changes * Fixes * More fixes * Cleanup * more cleanup * signed/unsigned * Revert "Cleanup" This reverts commit e4f7d71f07bb207736f90708961eeecd09a1b652. * Cleanup (again) * Remove public/export/keep-alive on null differential after AD pass * Minor fix * Update dictionary accessors * Keep export decoration * More fixes + Support for `kIROp_PackAnyValue` * Merge upstream * Update expected-failure.txt
2023-08-17Create storage types of different layouts for SPIRV emit. (#3116)Yong He
* Create storage types of different layouts for SPIRV emit. * Fix. * Fix. * Fix. * Update expected failure list. --------- Co-authored-by: Yong He <yhe@nvidia.com>
2023-08-17Add loop inversion pass (#2899)Ellie Hermaszewska
* 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
2023-08-16Correct check for empty target flags (#3115)Ellie Hermaszewska
Co-authored-by: Yong He <yonghe@outlook.com>
2023-08-16Simplify IfElse instructions with a single trivial block (#3114)Ellie Hermaszewska
2023-08-15squash warnings (#3113)Ellie Hermaszewska
* Remove unused variables * Silence gcc out of bounds warnings * Squash strict-aliasing warnings It is still a naughty thing to be casting to T like this though * Correct equality check when val is nullptr --------- Co-authored-by: Yong He <yonghe@outlook.com>
2023-08-15SPIRV: debug source and debug line. (#3109)Yong He
2023-08-16Fix a bug that warning 39001 can't be fully disabled. (#3112)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>