diff options
| author | Yong He <yonghe@outlook.com> | 2023-03-17 15:57:22 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-17 15:57:22 -0700 |
| commit | 7f11f883d0781952f002b3aa3222a3aa0040f18a (patch) | |
| tree | 08eaf10fef39211fbc3f124679bfe8a35775a5a7 /source/slang/slang-parser.cpp | |
| parent | 4b55bf6d75bdeed087728505a1c9b43d3a99af8d (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.cpp | 24 |
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() |
