summaryrefslogtreecommitdiff
path: root/source/slang/slang-parser.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-03-17 15:57:22 -0700
committerGitHub <noreply@github.com>2023-03-17 15:57:22 -0700
commit7f11f883d0781952f002b3aa3222a3aa0040f18a (patch)
tree08eaf10fef39211fbc3f124679bfe8a35775a5a7 /source/slang/slang-parser.cpp
parent4b55bf6d75bdeed087728505a1c9b43d3a99af8d (diff)
Add support for emitting cuda kernel and host functions. (#2712)
* Add support for emitting cuda kernel and host functions. * Update test. * Fix cuda preamble emit. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-parser.cpp')
-rw-r--r--source/slang/slang-parser.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index 1bddfb9cf..cdeb0b259 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -2158,6 +2158,27 @@ namespace Slang
return parseBackwardDifferentiate(parser);
}
+ static Expr* parseDispatchKernel(Parser* parser)
+ {
+ DispatchKernelExpr* dispatchExpr = parser->astBuilder->create<DispatchKernelExpr>();
+
+ parser->ReadToken(TokenType::LParent);
+
+ dispatchExpr->baseFunction = parser->ParseArgExpr();
+ parser->ReadToken(TokenType::Comma);
+ dispatchExpr->threadGroupSize = parser->ParseArgExpr();
+ parser->ReadToken(TokenType::Comma);
+ dispatchExpr->dispatchSize = parser->ParseArgExpr();
+ parser->ReadToken(TokenType::RParent);
+
+ return dispatchExpr;
+ }
+
+ static NodeBase* parseDispatchKernel(Parser* parser, void* /* unused */)
+ {
+ return parseDispatchKernel(parser);
+ }
+
/// Parse a `This` type expression
static Expr* parseThisTypeExpr(Parser* parser)
{
@@ -6721,7 +6742,8 @@ namespace Slang
_makeParseExpr("no_diff", parseTreatAsDifferentiableExpr),
_makeParseExpr("__TaggedUnion", parseTaggedUnionType),
_makeParseExpr("__fwd_diff", parseForwardDifferentiate),
- _makeParseExpr("__bwd_diff", parseBackwardDifferentiate)
+ _makeParseExpr("__bwd_diff", parseBackwardDifferentiate),
+ _makeParseExpr("__dispatch_kernel", parseDispatchKernel)
};
ConstArrayView<SyntaxParseInfo> getSyntaxParseInfos()