diff options
| author | Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> | 2025-01-10 03:16:24 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-09 13:46:24 -0800 |
| commit | 87f00a36a123e36b415eeea82e02a8366cc5b881 (patch) | |
| tree | 719270397242dd0ea2cccf36f586118ac30a6ff1 /source/slang/slang-ir-specialize.h | |
| parent | 6706c1a7764ae03d810e35ce766ba153ebf7ee03 (diff) | |
[Auto-diff] Overhaul auto-diff type tracking + Overhaul dynamic dispatch for differentiable functions (#5866)
* Overhauled the auto-diff system for dynamic dispatch
* More fixes
* remove intermediate dumps
* Update slang-ast-type.h
* More fixes + add a workaround for existential no-diff
* Update reverse-control-flow-3.slang
* remove dumps
* remove more dumps
* Delete working-reverse-control-flow-3.hlsl
* Cleanup comments + unused variables
* More comment cleanup
* Add support for lowering `DiffPairType(TypePack)` & `MakePair(MakeValuePack, MakeValuePack)`
* Fix array of issues in Falcor tests.
* Update slang-ir-autodiff-pairs.cpp
* More fixes for Falcor image tests
* Small fixups.
---------
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-ir-specialize.h')
| -rw-r--r-- | source/slang/slang-ir-specialize.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source/slang/slang-ir-specialize.h b/source/slang/slang-ir-specialize.h index 734c76427..72f2c6130 100644 --- a/source/slang/slang-ir-specialize.h +++ b/source/slang/slang-ir-specialize.h @@ -7,8 +7,20 @@ struct IRModule; class DiagnosticSink; class TargetProgram; +struct SpecializationOptions +{ + // Option that allows specializeModule to generate dynamic-dispatch code + // wherever possible to open up more specialization opportunities. + // + bool lowerWitnessLookups = false; +}; + /// Specialize generic and interface-based code to use concrete types. -bool specializeModule(TargetProgram* target, IRModule* module, DiagnosticSink* sink); +bool specializeModule( + TargetProgram* target, + IRModule* module, + DiagnosticSink* sink, + SpecializationOptions options); void finalizeSpecialization(IRModule* module); |
