summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-parser.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-08-25 08:49:02 -0700
committerGitHub <noreply@github.com>2023-08-25 23:49:02 +0800
commit036abc85ba1db9c8c06289f0a0492e9a95a228b9 (patch)
treee497168c36e95190a6d8b4dae9f483f27e5aa2cd /source/slang/slang-parser.cpp
parent0470ea05a42d6c3f35d81a433fefdd440500cdbd (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.cpp14
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),