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: