diff options
| author | Yong He <yonghe@outlook.com> | 2023-08-25 08:49:02 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-25 23:49:02 +0800 |
| commit | 036abc85ba1db9c8c06289f0a0492e9a95a228b9 (patch) | |
| tree | e497168c36e95190a6d8b4dae9f483f27e5aa2cd /source/slang/slang-parser.cpp | |
| parent | 0470ea05a42d6c3f35d81a433fefdd440500cdbd (diff) | |
Support SPIRV Capability declaration on intrinsic functions. (#3150)
* Spirv Capability lookup.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 98c227159..fabf1ffb4 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -6,6 +6,7 @@ #include "slang-compiler.h" #include "slang-lookup.h" #include "slang-visitor.h" +#include "slang-lookup-spirv.h" #include "../core/slang-semantic-version.h" @@ -6531,6 +6532,18 @@ namespace Slang return nullptr; } + static NodeBase* parseSPIRVCapabilityModifier(Parser* parser, void*) + { + Token token; + token = parser->ReadToken(); + auto modifier = parser->astBuilder->create<RequiredSPIRVCapabilityModifier>(); + SpvCapability cap; + if (!lookupSpvCapability(token.getContent(), cap)) + parser->sink->diagnose(token, Diagnostics::unknownSPIRVCapability, token); + modifier->capability = (int32_t)cap; + return modifier; + } + static NodeBase* parseCUDASMVersionModifier(Parser* parser, void* /*userData*/) { Token token; @@ -6889,6 +6902,7 @@ namespace Slang _makeParseModifier("__glsl_extension", parseGLSLExtensionModifier), _makeParseModifier("__glsl_version", parseGLSLVersionModifier), _makeParseModifier("__spirv_version", parseSPIRVVersionModifier), + _makeParseModifier("__spirv_capability", parseSPIRVCapabilityModifier), _makeParseModifier("__cuda_sm_version", parseCUDASMVersionModifier), _makeParseModifier("__builtin_type", parseBuiltinTypeModifier), |
