From 98c842bd561ac67c5ff98d599c8c960ba9edb7fd Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Mon, 11 May 2026 13:11:51 +0200 Subject: [PATCH 09/26] Fix OpReadPipeBlockingINTEL/OpWritePipeBlockingINTEL operands (#588) Per the SPV_INTEL_blocking_pipes spec, these instructions do not produce a result, but have Pipe and Pointer id arguments instead --- include/spirv/unified1/spirv.core.grammar.json | 8 ++++---- include/spirv/unified1/spirv.h | 4 ++-- include/spirv/unified1/spirv.hpp | 4 ++-- include/spirv/unified1/spirv.hpp11 | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json index bd716cb..d8d36df 100644 --- a/include/spirv/unified1/spirv.core.grammar.json +++ b/include/spirv/unified1/spirv.core.grammar.json @@ -10803,8 +10803,8 @@ "aliases" : [ "OpReadPipeBlockingINTEL" ], "opcode" : 5946, "operands" : [ - { "kind" : "IdResultType" }, - { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "Pipe" }, + { "kind" : "IdRef", "name" : "Pointer" }, { "kind" : "IdRef", "name" : "Packet Size" }, { "kind" : "IdRef", "name" : "Packet Alignment" } ], @@ -10817,8 +10817,8 @@ "aliases" : [ "OpWritePipeBlockingINTEL" ], "opcode" : 5947, "operands" : [ - { "kind" : "IdResultType" }, - { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "Pipe" }, + { "kind" : "IdRef", "name" : "Pointer" }, { "kind" : "IdRef", "name" : "Packet Size" }, { "kind" : "IdRef", "name" : "Packet Alignment" } ], diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h index 169cb06..1759d89 100644 --- a/include/spirv/unified1/spirv.h +++ b/include/spirv/unified1/spirv.h @@ -3464,8 +3464,8 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpFixedExpALTERA: *hasResult = true; *hasResultType = true; break; case SpvOpPtrCastToCrossWorkgroupALTERA: *hasResult = true; *hasResultType = true; break; case SpvOpCrossWorkgroupCastToPtrALTERA: *hasResult = true; *hasResultType = true; break; - case SpvOpReadPipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; - case SpvOpWritePipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; + case SpvOpReadPipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; + case SpvOpWritePipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; case SpvOpFPGARegALTERA: *hasResult = true; *hasResultType = true; break; case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp index c159586..e6cc26c 100644 --- a/include/spirv/unified1/spirv.hpp +++ b/include/spirv/unified1/spirv.hpp @@ -3460,8 +3460,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpFixedExpALTERA: *hasResult = true; *hasResultType = true; break; case OpPtrCastToCrossWorkgroupALTERA: *hasResult = true; *hasResultType = true; break; case OpCrossWorkgroupCastToPtrALTERA: *hasResult = true; *hasResultType = true; break; - case OpReadPipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; - case OpWritePipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; + case OpReadPipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; + case OpWritePipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; case OpFPGARegALTERA: *hasResult = true; *hasResultType = true; break; case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11 index 189dbbc..c841190 100644 --- a/include/spirv/unified1/spirv.hpp11 +++ b/include/spirv/unified1/spirv.hpp11 @@ -3460,8 +3460,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpFixedExpALTERA: *hasResult = true; *hasResultType = true; break; case Op::OpPtrCastToCrossWorkgroupALTERA: *hasResult = true; *hasResultType = true; break; case Op::OpCrossWorkgroupCastToPtrALTERA: *hasResult = true; *hasResultType = true; break; - case Op::OpReadPipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; - case Op::OpWritePipeBlockingALTERA: *hasResult = true; *hasResultType = true; break; + case Op::OpReadPipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; + case Op::OpWritePipeBlockingALTERA: *hasResult = false; *hasResultType = false; break; case Op::OpFPGARegALTERA: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; case Op::OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; -- 2.54.0