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 --- .../lookup-generator-main.cpp | 41 +++++++++++++++------- 1 file changed, 29 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/slang-lookup-generator/lookup-generator-main.cpp b/tools/slang-lookup-generator/lookup-generator-main.cpp index cb1c15dd3..f64e2a78f 100644 --- a/tools/slang-lookup-generator/lookup-generator-main.cpp +++ b/tools/slang-lookup-generator/lookup-generator-main.cpp @@ -6,6 +6,7 @@ #include "../../source/compiler-core/slang-lexer.h" #include "../../source/core/slang-io.h" #include "../../source/core/slang-secure-crt.h" +#include "../../source/core/slang-string-util.h" using namespace Slang; @@ -310,7 +311,7 @@ int main(int argc, const char* const* argv) return 1; } - const char* const inJsonPath = argv[1]; + const char* const inPath = argv[1]; const char* const outCppPath = argv[2]; const char* const enumName = argv[3]; const char* const enumerantPrefix = argv[4]; @@ -322,20 +323,36 @@ int main(int argc, const char* const* argv) DiagnosticSink sink(&sourceManager, Lexer::sourceLocationLexer); sink.writer = writer; - JSONContainer container(sink.getSourceManager()); - JSONBuilder builder(&container); - if (SLANG_FAILED(parseJson(inJsonPath, &sink, builder))) + List opnames; + + if (String(inPath).endsWith("json")) { - sink.diagnoseRaw(Severity::Error, "Json parsing failed\n"); - return 1; - } + // If source is a json file parse it. + JSONContainer container(sink.getSourceManager()); + JSONBuilder builder(&container); + if (SLANG_FAILED(parseJson(inPath, &sink, builder))) + { + sink.diagnoseRaw(Severity::Error, "Json parsing failed\n"); + return 1; + } - UnownedStringSlice error; - const List opnames = extractOpNames(error, builder.getRootValue(), container); - if (error.getLength()) + UnownedStringSlice error; + opnames = extractOpNames(error, builder.getRootValue(), container); + if (error.getLength()) + { + sink.diagnoseRaw(Severity::Error, error); + return 1; + } + } + else { - sink.diagnoseRaw(Severity::Error, error); - return 1; + // Otherwise, we assume the input is a text file with one name per line. + String content; + File::readAllText(inPath, content); + List words; + StringUtil::split(content.getUnownedSlice(), '\n', words); + for (auto w : words) + opnames.add(w); } HashParams hashParams; -- cgit v1.2.3