From abb7f1a7790544010d6eaac0f137e6b39349cf76 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 1 Apr 2024 18:44:44 -0700 Subject: Support `[RequirePrelude]` attribute on types. (#3867) --- source/slang/slang-ir.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-ir.cpp') diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index 68c6a33b3..95f2a7c75 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -8174,6 +8174,7 @@ namespace Slang return inst->findDecoration(); } + template IRTargetSpecificDecoration* findBestTargetDecoration( IRInst* inInst, CapabilitySet const& targetCaps) @@ -8194,6 +8195,8 @@ namespace Slang auto decoration = as(dd); if(!decoration) continue; + if (!T::isaImpl(decoration->getOp())) + continue; auto decorationCaps = decoration->getTargetCaps(); if (decorationCaps.isIncompatibleWith(targetCaps)) @@ -8224,13 +8227,19 @@ namespace Slang return bestDecoration; } + template IRTargetSpecificDecoration* findBestTargetDecoration( IRInst* val, CapabilityName targetCapabilityAtom) { - return findBestTargetDecoration(val, CapabilitySet(targetCapabilityAtom)); + return findBestTargetDecoration(val, CapabilitySet(targetCapabilityAtom)); } + template + IRTargetSpecificDecoration* findBestTargetDecoration( + IRInst* val, + CapabilityName targetCapabilityAtom); + bool findTargetIntrinsicDefinition(IRInst* callee, CapabilitySet const& targetCaps, UnownedStringSlice& outDefinition) { if (auto decor = findBestTargetIntrinsicDecoration(callee, targetCaps)) -- cgit v1.2.3