diff options
Diffstat (limited to 'source/slang/slang-ir-check-differentiability.cpp')
| -rw-r--r-- | source/slang/slang-ir-check-differentiability.cpp | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/source/slang/slang-ir-check-differentiability.cpp b/source/slang/slang-ir-check-differentiability.cpp index f8d70c8ed..8cefa6a04 100644 --- a/source/slang/slang-ir-check-differentiability.cpp +++ b/source/slang/slang-ir-check-differentiability.cpp @@ -131,22 +131,10 @@ public: return true; if (sharedContext.differentiableInterfaceType && interfaceType == sharedContext.differentiableInterfaceType) return true; - auto dictDecor = interfaceType->findDecoration<IRDifferentiableMethodRequirementDictionaryDecoration>(); - if (!dictDecor) - return false; - for (auto child : dictDecor->getChildren()) - { - if (auto entry = as<IRDifferentiableMethodRequirementDictionaryItem>(child)) - { - if (entry->getOperand(0) == lookupInterfaceMethod->getRequirementKey()) - { - if (as<IRBackwardDifferentiableMethodRequirementDictionaryItem>(child) && level == DifferentiableLevel::Backward) - return true; - if (as<IRForwardDifferentiableMethodRequirementDictionaryItem>(child) && level == DifferentiableLevel::Forward) - return true; - } - } - } + if (lookupInterfaceMethod->getRequirementKey()->findDecoration<IRBackwardDerivativeDecoration>()) + return true; + if (lookupInterfaceMethod->getRequirementKey()->findDecoration<IRForwardDerivativeDecoration>()) + return level == DifferentiableLevel::Forward; } for (; func; func = func->parent) |
