summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-lower-generics.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-10-22 23:44:11 -0700
committerGitHub <noreply@github.com>2020-10-22 23:44:11 -0700
commit6d1fe29cdcbca18d559e302d6427a504d1762173 (patch)
treec4f2539c4ad926f3a71ee4af5e13e28e3f7b9606 /source/slang/slang-ir-lower-generics.cpp
parent10e1bae34733f1cdb5abc001666b1aafa1c1f406 (diff)
Generate `if` based dispatch logic on GPU targets. (#1585)
Diffstat (limited to 'source/slang/slang-ir-lower-generics.cpp')
-rw-r--r--source/slang/slang-ir-lower-generics.cpp10
1 files changed, 10 insertions, 0 deletions
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);