summaryrefslogtreecommitdiffstats
path: root/premake5.lua
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-08-29 06:05:26 +0800
committerGitHub <noreply@github.com>2023-08-28 15:05:26 -0700
commit508dc3a95de50de4a4d07d0a72a18e40d55b0e2e (patch)
tree7487232f5c0db0dd607e2a91b539f6a592789b06 /premake5.lua
parent06f7ef354cdde4cf8e8797d8853ed2d9c3208b5b (diff)
Allow bitwise or expressions and numeric literals in spirv_asm blocks (#3157)
* Add -spirv-core-grammar option to load alternate spirv defs Also embed a version to use by default * Use perfect hash for spv op lookup * Neaten perfect hash embedding * Refactor spirv grammar lookup in preperation for more kinds of lookups * Load spirv capability list from spec * Add all SPIR-V enums to lookup table * regenerate vs projects * appease msvc * Use string slices for spir-v core grammar lookups * wiggle * comment * Add OpInfo for spv ops * regenerate vs projects * Embed op names * Add min/max operand counts and enum categories to spirv info * neaten * Operand kinds for spirv ops * Store and embed all information relating to spirv enums and qualifiers * Use SPIR-V spec to position instructions in spirv_asm blocks * Neaten spir-v info embedding * Neaten perfect hash embedding * Add assignment syntax to spirv_asm snippets * Better errors for spirv_asm parser * Add warning for too many operands in spirv asm * squash warnings * neaten * test wiggle * Lookup enums for spirv * Put OpCapability and OpExtension in the correct place for spirv_asm blocks * Tests for OpCapability and OpExtension * ci wiggle * Add expected failure * Allow raising immediate values to constant ids where necessary in spirv_asm blocks * Allow bitwise or expressions and numeric literals in spirv_asm blocks * test numeric literals * Fix memory issues. * fix. --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'premake5.lua')
-rw-r--r--premake5.lua54
1 files changed, 40 insertions, 14 deletions
diff --git a/premake5.lua b/premake5.lua
index 81f5f6c6b..e7b3774e2 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -958,6 +958,12 @@ tool "slang-cpp-extractor"
links { "compiler-core", "core" }
+tool "slang-spirv-embed-generator"
+ uuid "8da787cc-0e04-450f-8e29-88eac5ebe9bb"
+ includedirs { "." }
+
+ links { "compiler-core", "core" }
+
tool "slang-lookup-generator"
uuid "3242baa7-fc4c-4f76-83bc-e4403099dc1d"
includedirs { "." }
@@ -1397,6 +1403,39 @@ generatorProject("run-generators", nil)
filter { }
+generatorProject("generate-spirv-embed")
+ tables = {
+ {
+ json = "external/spirv-headers/include/spirv/unified1/spirv.core.grammar.json",
+ },
+ }
+ for _, t in pairs(tables) do
+ files {t.json}
+ end
+
+ dependson { "slang-spirv-embed-generator" }
+
+ local builddir = getBuildDir()
+ if executeBinary then
+ for _, t in pairs(tables) do
+ filter("files:" .. t.json)
+
+ local inJson = "%{file.abspath}"
+ local cppFilename = "slang-spirv-core-grammar-embed.cpp"
+ local cppPath = "%{wks.location}/source/slang/" .. cppFilename
+ local buildcmd = '"' .. builddir .. '/slang-spirv-embed-generator" '
+ .. inJson .. " "
+ .. cppPath
+
+ buildmessage ("slang-spirv-embed-generator for " .. cppFilename)
+ buildcommands { buildcmd }
+ buildinputs { inJson, builddir .. "/slang-spirv-embed-generator" .. getExecutableSuffix() }
+ buildoutputs (cppPath)
+ end
+ end
+
+ filter { }
+
generatorProject("generate-lookup-tables")
tables = {
{
@@ -1405,18 +1444,6 @@ generatorProject("generate-lookup-tables")
prefix = "GLSLstd450",
type = "GLSLstd450"
},
- {
- json = "external/spirv-headers/include/spirv/unified1/spirv.core.grammar.json",
- header = "spirv/unified1/spirv.h",
- prefix = "Spv",
- type = "SpvOp"
- },
- {
- json = "external/spirv/spirv-capabilities.txt",
- header = "spirv/unified1/spirv.h",
- prefix = "SpvCapability",
- type = "SpvCapability"
- },
}
for _, t in pairs(tables) do
files {t.json}
@@ -1606,9 +1633,7 @@ standardProject("slang", "source/slang")
-- Similarly for any generated lookup tables
files {
- "source/slang/slang-lookup-spvop.cpp",
"source/slang/slang-lookup-glslstd450.cpp",
- "source/slang/slang-lookup-spvcapability.cpp",
}
--
@@ -1620,6 +1645,7 @@ standardProject("slang", "source/slang")
if not skipSourceGeneration then
dependson { "run-generators" }
dependson { "generate-lookup-tables" }
+ dependson { "generate-spirv-embed" }
end
-- If we have slang-llvm copy it