summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2022-10-27Rename 'IDifferentiable.zero' -> `IDifferentiable.dzero`. (#2474)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-27Rename `[__custom_jvp]` -> `[ForwardDerivative]`. (#2473)Yong He
* Rename `[__custom_jvp]` -> `[ForwardDerivative]`. * Rename the classes. * More renaming. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-27Rename `JVPDerivativeModifier` -> `ForwardDifferentiableAttribute`. (#2472)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-27Rename `__jvp`-->`__fwd_diff`. (#2471)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-27Extend test coverage for differential method synthesis. (#2470)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-27Auto synthesis of IDifferntial interface methods. (#2469)Yong He
* Auto synthesis of IDifferntial interface methods. * Add comments. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-26Adding a differentiable standard library (#2465)Sai Praveen Bangaru
2022-10-26Auto synthesis of Differential type (#2466)Yong He
2022-10-24Rework differentiation of member access through ↵Yong He
`[DerivativeMember(DiffType.field)]` (#2460) * wip: remove auto-diff for member access, add diff through property accessors. * Fix getter-setter test. * Fix getter-setter-multi test. * Fix nested-jvp test. * Use [DerivativeMember] attribute to differentiate through member access. * Clean up. * More cleanup. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-20Modified the new type system to support generic differentiable types … (#2413)Sai Praveen Bangaru
* Modified the new type system to support generic differentiable types and added support for differentiating overloaded functions. * Changed a few asserts to release asserts to avoid unreferenced variable errors * Fixed a naming issue with TypeWitnessBreadcumb::Flavor::Decl * Added logic to avoid tracking differentiable types if the module does not use auto-diff or define differentiable types. * Moved the auto-diff passes to after the specialization step, added a more complex generics test * Added a generics stress test and fixed AST-side logic. IR side needs some more work * Added differential getter and setter logic, fixed multiple issues with DifferentiableTypeDictionary, added support for loops and conditions * Changed differential getters to use pointer types, added getter type checking * Fixed some bugs related to diff type registration and differential getters * Removed some superfluous code * Removed some more unused code. * Fixed an issue with witness substitution * Minor fix Co-authored-by: Yong He <yonghe@outlook.com>
2022-10-13Allow multi-level breaks to break out of `switch` statements. (#2451)Yong He
* Allow multi-level breaks to break out of `switch` statements. * Rename loop->region. * Add `[ForceInline]` attribute. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-12Add support for SV_ViewID (#2440)Ellie Hermaszewska
closes https://github.com/shader-slang/slang/issues/2410 Co-authored-by: Yong He <yonghe@outlook.com>
2022-10-11Small IR cleanups. (#2441)Yong He
2022-10-10Support multi-level break + single-return conversion + general inline. (#2436)Yong He
* Support multi-level break. * Single return. * Add test for inlining `void` return-type functions. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-08Fix for issue with user attribute lookup (#2437)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Add handling for root paths. * Fixes around absolute paths. * Add SimplifyStyle * Remove unrequire include. * Fix some details around RelativeFileSystem canonical paths. * For MemoryFileSystem make sure "/a" and "a" maps to same canonical path. * Add test for canonicalPath. * Improve comment. * More testing around canonical paths. * Fix for user attribute lookup issue. * Add a test. * Small improvements in test. * Improve the comments around lookup workaround.
2022-10-06Add syntax for multi-level break. (#2431)Yong He
* Add syntax for multi-level break. * Fix. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-10-04Fix `ApplyExtensionToType` on own type being extended. (#2430)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-28Improvements around diagnostic controls (#2414)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Test for disabling warnings. * Output diagnostic if argument parsing fails in render test. * More improvements around disabling diagnostics. * Add support for re enabling a warning. * Add warning controls to help text. * Tidy up around NameConventionUtil. * Make NameConvention an enum. * Handle leading underscores. * Update comment, and remove intial handling of _ prefix.
2022-09-20Fix regression in check-overload. (#2407)Yong He
* Fix regression in check-overload. * Make sure language server supports partiallyAppliedGenericExpr. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-20Use `printf` in tests. (#2406)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-20Support raw string literals. (#2405)Yong He
* Support raw string literals. * Use raw string literal in tests. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-20Support partial inference of generic arguments (#2404)Theresa Foley
A commonly requested feature is to be able to supply only some of the arguments to a generic explicitly, while allowing the rest to be inferred. A common example is a function that performs some kind of conversion: To convert<To, From>( From fromValue ) { .... } A user would like to be able to call this operation like: int i = convert<int>( 1.0f ); but the current Slang type checker requires all or none of the generic arguments be supplied. Supplying all of the arguments is tedious: int i = convert<int, float>( 1.0f ); In this case, the `float` type argument is redundant and could be inferred from context. However, if the user tries to omit the generic argument list: int i = convert( 1.0f ); The current type-checker cannot infer the `int` type argument (even if one might claim it *should* infer based on the desired result type). This change adds support for the `convert<int>(...)` case, by allowing a generic to be applied to a prefix of its explicit arguments, and then inferring the remaining arguments from contextual information when that "partially applied" generic is applied to value-level arguments. Most of the changes are just plumbing: adding the notion of a partially applied generic and then supporting them during overload resolution. A single test case is included that covers the `convert`-style use case. It is likely that more testing is needed to cover failure modes of this feature.
2022-09-15Run simple compute kernel in gfx-smoke test. (#2400)Yong He
2022-09-15Language feature: pointer sized int types. (#2401)Yong He
* Language feature: pointer sized int types. * Fix. * small change to test. * Fix stdlib. * Fix. * Fix. * Add typedef for `size_t` in stdlib. * Fix test. * Add `intptr_t::size` constant. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-13Allow interface requirements to reference to the interface type itself. (#2398)Yong He
* Allow interface requirements to reference to the interface type itself. * add comment explaining the change. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-06 Specialize and SSA in a loop + better diagnostics on dynamic dispatch ↵Yong He
failure (#2396) * Report diagnostic when dynamic dispatch failed instead of crashing. * Specialize and SSA in a loop. Explicit specialization only interface. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-05Fix resource inout param specialization. (#2394)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-05Multi parameter `__subscript` (#2392)Yong He
* Multi parameter `__subscript` * Fix. * Fix bugs. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-01Small fix to enable generic typealias. (#2391)Yong He
* Small fix to enable generic typealias. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-09-01Public interface for arithmetic types in stdlib. (#2389)Yong He
2022-09-01Deduplicate consts and IRSpecialize in IR, propagate type info for `IntVal`. ↵Yong He
(#2388)
2022-08-24Allow `static const` interface requirements. (#2378)Yong He
2022-08-24Compiler time evaluation of all int and bool operators. (#2376)Yong He
* Compiler time evaluation of all int and bool operators. * Fix linux compile error. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-22Make Optional<PointerType> lower to PointerType instead of a struct. (#2373)Yong He
2022-08-22Support compile-time constant int val in the form of polynomials. (#2372)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-20Call `gfx` in slang program. (#2370)Yong He
2022-08-17Warning on lossy implicit casts. (#2367)Yong He
* Warning on bool to float conversion. * Fix test cases. * Improve. * LanguageServer: don't show constant value for non constant variables. * Fix tests. * Fix warnings in tests. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-16Add gfx interface definition in Slang. (#2364)Yong He
* Add gfx interface definition in Slang. - add gfx interface definitons in Slang. - fix slang compiler to correctly type-check `out` interface argument. - modify gfx interface to be fully COM compatible - add convenient ShaderProgram creation methods to gfx. * Fix compile errors and warnings. * Update project files * Fix cuda. * Properly implement queryInterface in command encoder impls. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-16Add some simple macro defines including __HLSL_VERSION (#2363)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Add standard macros including __HLSL_VERSION * Added hlsl test. * Defined standard macro names to values, so not undefined. Allows more convenient #if style. Co-authored-by: Yong He <yonghe@outlook.com>
2022-08-10Add `none` literal that is convertible to `Optional`. (#2356)Yong He
* Add `none` literal that is convertible to `Optional`. * Fix cpu code gen. * Include vk and cpu test for is-as operator test. * Inline comparison operators. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-10`is` and `as` operator and `Optional<T>`. (#2355)Yong He
* `is` and `as` operator and `Optional<T>`. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-10Language server pointer type support + add `DLLImport` test (#2350)Yong He
* Language server pointer type support. + Natvis for AST. * Add completion suggestion for GUID. * Make executable test able to use slang-rt. * Fix gcc argument for rpath. * Fix DLLImport on linux. * Fix windows. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-05Added a new differential type system and various improvements (#2343)Sai Praveen Bangaru
* Merge slang-ir-diff-jvp.cpp * Added support and tests for other float vector types * Added swizzle test and code to handle it (tests failing currently) * Fixed one test, the other is still pending * Fixed instruction cloning logic to avoid modifying original function * Fixed an issue with custom 'pow_jvp' and added support for vector contructor * Minor update to comments * Fixed support for division * Fixed an issue with uninitialized diagnostic sink * Moved derivative processing to after mandatory inlining. Skip instructions that don't have side-effects and aren't used by anything. * WIP: Handling unconditional control flow and multi-block functions * Support for unconditional multi-block functions * Added a dead code elimination step to the derivative pass * Changed name of 'hasNoSideEffects()' * Refactored variable names * Added initial IR defs for new type system * Added necessary logic for semantic checking * Overhauled type system to use builtin pair types and conform to the IDifferentiable interface * Automatically replace IRDifferentiablePairType to a custom IRStructType * Added generics handling by expanding the conformance context functionality and allowing for type parameters * Minor fix: early return in processPairTypes() * Minor fixes to differentiable resolution on generic types * Added new instructions for differential pairs. Basic tests work now. Looking into generic types. * Adjusted most tests to the new type system. OutType and InOutType are still not properly working. * Updated __jvp to produce both primal and differential output * Moved autodiff related declarations to diff.meta.slang * Refactored variable names * Added initial IR defs for new type system * Added necessary logic for semantic checking * Overhauled type system to use builtin pair types and conform to the IDifferentiable interface * Automatically replace IRDifferentiablePairType to a custom IRStructType * Added generics handling by expanding the conformance context functionality and allowing for type parameters * Minor fix: early return in processPairTypes() * Minor fixes to differentiable resolution on generic types * Added new instructions for differential pairs. Basic tests work now. Looking into generic types. * Adjusted most tests to the new type system. OutType and InOutType are still not properly working. * Updated __jvp to produce both primal and differential output * Moved autodiff related declarations to diff.meta.slang * Removed external changes * Cleanup the transcription logic: each case returns a pair of insts for the primal and differential computation.
2022-08-04Implicit pointer dereference when using member operator. (#2348)Yong He
* Implicit pointer dereference when using member operator. * Add expected test result * Fix lookup. Co-authored-by: Yong He <yhe@nvidia.com>
2022-08-03Basic pointer usages. (#2342)Yong He
2022-07-25Allow `class` to implement COM interface, [DLLExport] (#2338)Yong He
* Allow `class` to implement COM interface, [DLLExport] * Fix [COM] usage in tests and examples with UUIDs. Co-authored-by: Yong He <yhe@nvidia.com>
2022-07-21Allow dynamic dispatch to handle nested interface-typed fields. (#2336)Yong He
2022-07-19Yet more improvements/fixes to cpu-target.md (#2330)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Small improvements to cpu-target documentation. * More improvements to cpu-target.md doc. * More CPU target doc improvements. * More improvements around cpu-target.md * More fixes and improvements. * Added test for behavior of actual global and reflection. * Add category to determine cpu word size, so that reflection tests can target width.
2022-07-18Added forward-mode autodiff support for more instructions (#2331)Sai Praveen Bangaru
* Merge slang-ir-diff-jvp.cpp * Added support and tests for other float vector types * Added swizzle test and code to handle it (tests failing currently) * Fixed one test, the other is still pending * Fixed instruction cloning logic to avoid modifying original function * Fixed an issue with custom 'pow_jvp' and added support for vector contructor * Minor update to comments * Fixed support for division * Fixed an issue with uninitialized diagnostic sink * Moved derivative processing to after mandatory inlining. Skip instructions that don't have side-effects and aren't used by anything. * WIP: Handling unconditional control flow and multi-block functions * Support for unconditional multi-block functions * Added a dead code elimination step to the derivative pass * Changed name of 'hasNoSideEffects()'
2022-07-13Added support for differentiating out and inout parameters. (#2323)Sai Praveen Bangaru
* Added out/inout tests * Added support for out and inout parameters. Still untested * Fixed and tested support for out and inout types * Removed some comments