From 1e073d4b287f94f0351e07e57eed6f2678237b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Fri, 19 Jan 2024 17:07:41 +0100 Subject: [PATCH 1/4] Adds SPV_KHR_relaxed_extended_instruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds support for [SPV_KHR_relaxed_extended_instruction](https://gitlab.khronos.org/spirv/spirv-extensions/-/merge_requests/250) Signed-off-by: Nathan Gauër --- include/spirv/unified1/spirv.bf | 1 + include/spirv/unified1/spirv.core.grammar.json | 14 ++++++++++++++ include/spirv/unified1/spirv.cs | 1 + include/spirv/unified1/spirv.h | 2 ++ include/spirv/unified1/spirv.hpp | 2 ++ include/spirv/unified1/spirv.hpp11 | 2 ++ include/spirv/unified1/spirv.json | 1 + include/spirv/unified1/spirv.lua | 1 + include/spirv/unified1/spirv.py | 1 + include/spirv/unified1/spv.d | 1 + 10 files changed, 26 insertions(+) diff --git a/include/spirv/unified1/spirv.bf b/include/spirv/unified1/spirv.bf index 92b95c876..22e900704 100644 --- a/include/spirv/unified1/spirv.bf +++ b/include/spirv/unified1/spirv.bf @@ -1780,6 +1780,7 @@ namespace Spv OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json index 5d904cae1..95cf991e0 100644 --- a/include/spirv/unified1/spirv.core.grammar.json +++ b/include/spirv/unified1/spirv.core.grammar.json @@ -254,6 +254,20 @@ ], "version": "1.0" }, + { + "opname" : "OpExtInstWithForwardRefs", + "class" : "Extension", + "opcode" : 4433, + "operands" : [ + { "kind" : "IdResultType" }, + { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "'Set'" }, + { "kind" : "LiteralExtInstInteger", "name" : "'Instruction'" }, + { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } + ], + "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], + "version": "1.0" + }, { "opname" : "OpMemoryModel", "class" : "Mode-Setting", diff --git a/include/spirv/unified1/spirv.cs b/include/spirv/unified1/spirv.cs index 8d85cced6..5604f143a 100644 --- a/include/spirv/unified1/spirv.cs +++ b/include/spirv/unified1/spirv.cs @@ -1779,6 +1779,7 @@ public enum Op OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h index 13d308281..cc0602619 100644 --- a/include/spirv/unified1/spirv.h +++ b/include/spirv/unified1/spirv.h @@ -1775,6 +1775,7 @@ typedef enum SpvOp_ { SpvOpSubgroupAllEqualKHR = 4430, SpvOpGroupNonUniformRotateKHR = 4431, SpvOpSubgroupReadInvocationKHR = 4432, + SpvOpExtInstWithForwardRefs = 4433, SpvOpTraceRayKHR = 4445, SpvOpExecuteCallableKHR = 4446, SpvOpConvertUToAccelerationStructureKHR = 4447, @@ -2176,6 +2177,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpExtension: *hasResult = false; *hasResultType = false; break; case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break; case SpvOpExtInst: *hasResult = true; *hasResultType = true; break; + case SpvOpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break; case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break; case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break; diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp index 21b865689..9359c3dea 100644 --- a/include/spirv/unified1/spirv.hpp +++ b/include/spirv/unified1/spirv.hpp @@ -1771,6 +1771,7 @@ enum Op { OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, @@ -2172,6 +2173,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpExtension: *hasResult = false; *hasResultType = false; break; case OpExtInstImport: *hasResult = true; *hasResultType = false; break; case OpExtInst: *hasResult = true; *hasResultType = true; break; + case OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case OpMemoryModel: *hasResult = false; *hasResultType = false; break; case OpEntryPoint: *hasResult = false; *hasResultType = false; break; case OpExecutionMode: *hasResult = false; *hasResultType = false; break; diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11 index bcdff9d52..bc833d95f 100644 --- a/include/spirv/unified1/spirv.hpp11 +++ b/include/spirv/unified1/spirv.hpp11 @@ -1771,6 +1771,7 @@ enum class Op : unsigned { OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, @@ -2172,6 +2173,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpExtension: *hasResult = false; *hasResultType = false; break; case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break; case Op::OpExtInst: *hasResult = true; *hasResultType = true; break; + case Op::OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break; case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break; case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break; diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json index 204a9c569..569ce33a9 100644 --- a/include/spirv/unified1/spirv.json +++ b/include/spirv/unified1/spirv.json @@ -1770,6 +1770,7 @@ "OpSubgroupAllEqualKHR": 4430, "OpGroupNonUniformRotateKHR": 4431, "OpSubgroupReadInvocationKHR": 4432, + "OpExtInstWithForwardRefs" : 4433, "OpTraceRayKHR": 4445, "OpExecuteCallableKHR": 4446, "OpConvertUToAccelerationStructureKHR": 4447, diff --git a/include/spirv/unified1/spirv.lua b/include/spirv/unified1/spirv.lua index 6dcd1b8eb..28719c642 100644 --- a/include/spirv/unified1/spirv.lua +++ b/include/spirv/unified1/spirv.lua @@ -1713,6 +1713,7 @@ spv = { OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, diff --git a/include/spirv/unified1/spirv.py b/include/spirv/unified1/spirv.py index 4b011cfe1..b6bbc871d 100644 --- a/include/spirv/unified1/spirv.py +++ b/include/spirv/unified1/spirv.py @@ -1713,6 +1713,7 @@ 'OpSubgroupAllEqualKHR' : 4430, 'OpGroupNonUniformRotateKHR' : 4431, 'OpSubgroupReadInvocationKHR' : 4432, + 'OpExtInstWithForwardRefs' : 4433, 'OpTraceRayKHR' : 4445, 'OpExecuteCallableKHR' : 4446, 'OpConvertUToAccelerationStructureKHR' : 4447, diff --git a/include/spirv/unified1/spv.d b/include/spirv/unified1/spv.d index 64c115e02..dc8416041 100644 --- a/include/spirv/unified1/spv.d +++ b/include/spirv/unified1/spv.d @@ -1782,6 +1782,7 @@ enum Op : uint OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, From d22205bf44b0761adbcd50ad31156b3e8508e546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Thu, 30 May 2024 15:25:03 +0200 Subject: [PATCH 2/4] fixup! Adds SPV_KHR_relaxed_extended_instruction change version to none --- include/spirv/unified1/spirv.core.grammar.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json index 95cf991e0..1b1a06058 100644 --- a/include/spirv/unified1/spirv.core.grammar.json +++ b/include/spirv/unified1/spirv.core.grammar.json @@ -266,7 +266,7 @@ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } ], "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], - "version": "1.0" + "version": "None" }, { "opname" : "OpMemoryModel", From f36e30a9bf1b50839d0f9e58e8621276db4f33d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Thu, 30 May 2024 15:29:18 +0200 Subject: [PATCH 3/4] fixup! Adds SPV_KHR_relaxed_extended_instruction fix order --- .../spirv/unified1/spirv.core.grammar.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json index 1b1a06058..37a44d142 100644 --- a/include/spirv/unified1/spirv.core.grammar.json +++ b/include/spirv/unified1/spirv.core.grammar.json @@ -254,20 +254,6 @@ ], "version": "1.0" }, - { - "opname" : "OpExtInstWithForwardRefs", - "class" : "Extension", - "opcode" : 4433, - "operands" : [ - { "kind" : "IdResultType" }, - { "kind" : "IdResult" }, - { "kind" : "IdRef", "name" : "'Set'" }, - { "kind" : "LiteralExtInstInteger", "name" : "'Instruction'" }, - { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } - ], - "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], - "version": "None" - }, { "opname" : "OpMemoryModel", "class" : "Mode-Setting", @@ -4575,6 +4561,20 @@ "extensions" : [ "SPV_KHR_ray_tracing" ], "version" : "None" }, + { + "opname" : "OpExtInstWithForwardRefs", + "class" : "Extension", + "opcode" : 4433, + "operands" : [ + { "kind" : "IdResultType" }, + { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "'Set'" }, + { "kind" : "LiteralExtInstInteger", "name" : "'Instruction'" }, + { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } + ], + "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], + "version": "None" + }, { "opname" : "OpExecuteCallableKHR", "class" : "Reserved", From 1cbcdf02302ea635d175631bd25653af08b9b777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Thu, 30 May 2024 15:35:05 +0200 Subject: [PATCH 4/4] fixup! Adds SPV_KHR_relaxed_extended_instruction fix order --- .../spirv/unified1/spirv.core.grammar.json | 28 +++++++++---------- include/spirv/unified1/spirv.h | 3 +- include/spirv/unified1/spirv.hpp | 3 +- include/spirv/unified1/spirv.hpp11 | 3 +- include/spirv/unified1/spirv.json | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json index 37a44d142..655ee9a35 100644 --- a/include/spirv/unified1/spirv.core.grammar.json +++ b/include/spirv/unified1/spirv.core.grammar.json @@ -4539,6 +4539,20 @@ "extensions" : [ "SPV_KHR_shader_ballot" ], "version" : "None" }, + { + "opname" : "OpExtInstWithForwardRefs", + "class" : "Extension", + "opcode" : 4433, + "operands" : [ + { "kind" : "IdResultType" }, + { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "'Set'" }, + { "kind" : "LiteralExtInstInteger", "name" : "'Instruction'" }, + { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } + ], + "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], + "version": "None" + }, { "opname" : "OpTraceRayKHR", "class" : "Reserved", @@ -4561,20 +4575,6 @@ "extensions" : [ "SPV_KHR_ray_tracing" ], "version" : "None" }, - { - "opname" : "OpExtInstWithForwardRefs", - "class" : "Extension", - "opcode" : 4433, - "operands" : [ - { "kind" : "IdResultType" }, - { "kind" : "IdResult" }, - { "kind" : "IdRef", "name" : "'Set'" }, - { "kind" : "LiteralExtInstInteger", "name" : "'Instruction'" }, - { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." } - ], - "extensions" : [ "SPV_KHR_relaxed_extended_instruction" ], - "version": "None" - }, { "opname" : "OpExecuteCallableKHR", "class" : "Reserved", diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h index cc0602619..e7813f200 100644 --- a/include/spirv/unified1/spirv.h +++ b/include/spirv/unified1/spirv.h @@ -2177,7 +2177,6 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpExtension: *hasResult = false; *hasResultType = false; break; case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break; case SpvOpExtInst: *hasResult = true; *hasResultType = true; break; - case SpvOpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break; case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break; case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break; @@ -2521,6 +2520,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case SpvOpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; + case SpvOpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case SpvOpTraceRayKHR: *hasResult = false; *hasResultType = false; break; case SpvOpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; case SpvOpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; @@ -4292,6 +4292,7 @@ inline const char* SpvOpToString(SpvOp value) { case SpvOpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR"; case SpvOpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; case SpvOpSubgroupReadInvocationKHR: return "OpSubgroupReadInvocationKHR"; + case SpvOpExtInstWithForwardRefs: return "OpExtInstWithForwardRefs"; case SpvOpTraceRayKHR: return "OpTraceRayKHR"; case SpvOpExecuteCallableKHR: return "OpExecuteCallableKHR"; case SpvOpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp index 9359c3dea..18ceea103 100644 --- a/include/spirv/unified1/spirv.hpp +++ b/include/spirv/unified1/spirv.hpp @@ -2173,7 +2173,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpExtension: *hasResult = false; *hasResultType = false; break; case OpExtInstImport: *hasResult = true; *hasResultType = false; break; case OpExtInst: *hasResult = true; *hasResultType = true; break; - case OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case OpMemoryModel: *hasResult = false; *hasResultType = false; break; case OpEntryPoint: *hasResult = false; *hasResultType = false; break; case OpExecutionMode: *hasResult = false; *hasResultType = false; break; @@ -2517,6 +2516,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; + case OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; @@ -4288,6 +4288,7 @@ inline const char* OpToString(Op value) { case OpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR"; case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; case OpSubgroupReadInvocationKHR: return "OpSubgroupReadInvocationKHR"; + case OpExtInstWithForwardRefs: return "OpExtInstWithForwardRefs"; case OpTraceRayKHR: return "OpTraceRayKHR"; case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11 index bc833d95f..acfb8f255 100644 --- a/include/spirv/unified1/spirv.hpp11 +++ b/include/spirv/unified1/spirv.hpp11 @@ -2173,7 +2173,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpExtension: *hasResult = false; *hasResultType = false; break; case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break; case Op::OpExtInst: *hasResult = true; *hasResultType = true; break; - case Op::OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break; case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break; case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break; @@ -2517,6 +2516,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case Op::OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; + case Op::OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case Op::OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; case Op::OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; case Op::OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; @@ -4288,6 +4288,7 @@ inline const char* OpToString(Op value) { case OpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR"; case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; case OpSubgroupReadInvocationKHR: return "OpSubgroupReadInvocationKHR"; + case OpExtInstWithForwardRefs: return "OpExtInstWithForwardRefs"; case OpTraceRayKHR: return "OpTraceRayKHR"; case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json index 569ce33a9..1ea33c3f7 100644 --- a/include/spirv/unified1/spirv.json +++ b/include/spirv/unified1/spirv.json @@ -1770,7 +1770,7 @@ "OpSubgroupAllEqualKHR": 4430, "OpGroupNonUniformRotateKHR": 4431, "OpSubgroupReadInvocationKHR": 4432, - "OpExtInstWithForwardRefs" : 4433, + "OpExtInstWithForwardRefs": 4433, "OpTraceRayKHR": 4445, "OpExecuteCallableKHR": 4446, "OpConvertUToAccelerationStructureKHR": 4447,