summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-spirv-snippet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-spirv-snippet.cpp')
-rw-r--r--source/slang/slang-ir-spirv-snippet.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/source/slang/slang-ir-spirv-snippet.cpp b/source/slang/slang-ir-spirv-snippet.cpp
index 98466e8ff..055eb982b 100644
--- a/source/slang/slang-ir-spirv-snippet.cpp
+++ b/source/slang/slang-ir-spirv-snippet.cpp
@@ -3,6 +3,7 @@
#include "slang-ir-spirv-snippet.h"
#include "slang-lookup-spirv.h"
#include "../core/slang-token-reader.h"
+#include "../compiler-core/slang-spirv-core-grammar.h"
namespace Slang
{
@@ -85,7 +86,9 @@ SpvWord readWordOrWordLiteral(Misc::TokenReader& reader)
return ret;
}
-RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition)
+RefPtr<SpvSnippet> SpvSnippet::parse(
+ const SPIRVCoreGrammarInfo& spirvGrammar,
+ UnownedStringSlice definition)
{
RefPtr<SpvSnippet> snippet = new SpvSnippet();
try
@@ -118,11 +121,13 @@ RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition)
case Slang::Misc::TokenType::Identifier:
{
auto opName = tokenReader.ReadWord();
- if(!lookupSpvOp(opName.getUnownedSlice(), opCode))
+ const auto opCodeMaybe = spirvGrammar.opcodes.lookup(opName.getUnownedSlice());
+ if(!opCodeMaybe)
{
throw Misc::TextFormatException(
"Text parsing error: Unrecognized SPIR-V opcode: " + opName);
}
+ opCode = *opCodeMaybe;
break;
}
default: