From 7f11f883d0781952f002b3aa3222a3aa0040f18a Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 17 Mar 2023 15:57:22 -0700 Subject: 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 --- source/slang/slang-parser.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-parser.cpp') 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(); + + 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 getSyntaxParseInfos() -- cgit v1.2.3