summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-autodiff.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2025-04-04 15:25:20 +0800
committerGitHub <noreply@github.com>2025-04-04 15:25:20 +0800
commit83a42cb76feb1f702ff730040f359cabc01c571a (patch)
tree442ff945665ace3bbdafaf410f2664825419fd7d /source/slang/slang-ir-autodiff.cpp
parent4233d69cf88f1623cb573c8edb61456b24dc5339 (diff)
Do no fail on missing no_diff annotation on non-differentiable (inputs and output) function outputs (#6737)
Closes https://github.com/shader-slang/slang/issues/6632
Diffstat (limited to 'source/slang/slang-ir-autodiff.cpp')
-rw-r--r--source/slang/slang-ir-autodiff.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/slang/slang-ir-autodiff.cpp b/source/slang/slang-ir-autodiff.cpp
index afd698e8b..f70e30b72 100644
--- a/source/slang/slang-ir-autodiff.cpp
+++ b/source/slang/slang-ir-autodiff.cpp
@@ -147,6 +147,20 @@ bool isNoDiffType(IRType* paramType)
return false;
}
+// Return true if the result type and all the parameter types are no_diff
+bool isNeverDiffFuncType(IRFuncType* const funcType)
+{
+ const auto resultType = funcType->getResultType();
+ if (!isNoDiffType(resultType))
+ return false;
+ for (const auto p : funcType->getParamTypes())
+ {
+ if (!isNoDiffType(p))
+ return false;
+ }
+ return true;
+}
+
IRInst* lookupForwardDerivativeReference(IRInst* primalFunction)
{
if (auto jvpDefinition = primalFunction->findDecoration<IRForwardDerivativeDecoration>())