Add OpCopyLogical
This operand was added in SPIR-V 1.4. It allows copying from similar,
but inequal types. Otherwise it functions identically as OpCopyObject.
Tests: dEQP-VK.spirv_assembly.instruction.spirv1p4.opcopylogical.*
Bug: b/173046235
Change-Id: Ibf46185c79dde05f52743425b570d5ef978830cf
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50508
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Sean Risser <srisser@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 0e2ac63..0f66987 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -673,6 +673,7 @@
case spv::OpGroupNonUniformLogicalOr:
case spv::OpGroupNonUniformLogicalXor:
case spv::OpCopyObject:
+ case spv::OpCopyLogical:
case spv::OpArrayLength:
// Instructions that yield an intermediate value or divergent pointer
DefineResult(insn);
@@ -1955,6 +1956,7 @@
return EmitSampledImageCombineOrSplit(insn, state);
case spv::OpCopyObject:
+ case spv::OpCopyLogical:
return EmitCopyObject(insn, state);
case spv::OpCopyMemory: