From 036abc85ba1db9c8c06289f0a0492e9a95a228b9 Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 25 Aug 2023 08:49:02 -0700 Subject: Support SPIRV Capability declaration on intrinsic functions. (#3150) * Spirv Capability lookup. * Fix. --------- Co-authored-by: Yong He --- source/slang/slang-parser.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/slang/slang-parser.cpp') 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(); + 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), -- cgit v1.2.3