From 6d1fe29cdcbca18d559e302d6427a504d1762173 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 22 Oct 2020 23:44:11 -0700 Subject: Generate `if` based dispatch logic on GPU targets. (#1585) --- source/slang/slang-ir-lower-generics.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/slang/slang-ir-lower-generics.cpp') diff --git a/source/slang/slang-ir-lower-generics.cpp b/source/slang/slang-ir-lower-generics.cpp index a9540a87a..4b86cff51 100644 --- a/source/slang/slang-ir-lower-generics.cpp +++ b/source/slang/slang-ir-lower-generics.cpp @@ -8,6 +8,7 @@ #include "slang-ir-lower-generic-function.h" #include "slang-ir-lower-generic-call.h" #include "slang-ir-lower-generic-type.h" +#include "slang-ir-specialize-dispatch.h" #include "slang-ir-witness-table-wrapper.h" #include "slang-ir-ssa.h" #include "slang-ir-dce.h" @@ -57,6 +58,15 @@ namespace Slang generateAnyValueMarshallingFunctions(&sharedContext); if (sink->getErrorCount() != 0) return; + + // On non-CPU targets, generate `if` based dispatch functions. + if (sharedContext.targetReq->getTarget() != CodeGenTarget::CPPSource) + { + specializeDispatchFunctions(&sharedContext); + if (sink->getErrorCount() != 0) + return; + } + // We might have generated new temporary variables during lowering. // An SSA pass can clean up unnecessary load/stores. constructSSA(module); -- cgit v1.2.3