summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-stmt.cpp
diff options
context:
space:
mode:
authorDietrich Geisler <dag368@cornell.edu>2020-08-12 13:39:08 -0400
committerGitHub <noreply@github.com>2020-08-12 10:39:08 -0700
commite1ea7ed2f9b8cfcf19258a05d270de4db03fec22 (patch)
treeda87da6f4dd8adb39a44b0bfae342ed1dba04b58 /source/slang/slang-check-stmt.cpp
parent12b0fc64103c63c33daaedf8a8c2ee05de35dcc5 (diff)
GPU Foreach Parsing and Checking (#1482)
This PR introduces parsing and semantic checking for a GPU foreach loop for heterogeneouis programming. A GPU foreach loop takes the form: ``` __GPU_FOREACH(renderer, gridDims, LAMBDA(uint3 dispatchThreadID) { kernelCall(args, ...); }); ``` And will allow the host code to call into a kernel with the correct renderer and grid dimensions. This commit also introduces a hack to unify types in the heterogeneous hello world file, which will hopefully be amended in the future. Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang-check-stmt.cpp')
-rw-r--r--source/slang/slang-check-stmt.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/slang/slang-check-stmt.cpp b/source/slang/slang-check-stmt.cpp
index 2d01086f1..9a5aee15c 100644
--- a/source/slang/slang-check-stmt.cpp
+++ b/source/slang/slang-check-stmt.cpp
@@ -288,4 +288,13 @@ namespace Slang
stmt->expression = CheckExpr(stmt->expression);
}
+ void SemanticsStmtVisitor::visitGpuForeachStmt(GpuForeachStmt*stmt)
+ {
+ stmt->renderer = CheckExpr(stmt->renderer);
+ stmt->gridDims = CheckExpr(stmt->gridDims);
+ ensureDeclBase(stmt->dispatchThreadID, DeclCheckState::Checked);
+ WithOuterStmt subContext(this, stmt);
+ stmt->kernelCall = subContext.CheckExpr(stmt->kernelCall);
+ return;
+ }
}