Avoid RValue<SIMD::Int>(int)
This doesn't behave as expected, and asserts inside LLVM.
Test: dEQP-VK.binding_model.descriptorset_random.sets4.*
Change-Id: I3a4d61a3dcac2c62d8e29982e0b7b2a82a22caa1
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31510
Reviewed-by: Ben Clayton <bclayton@google.com>
Tested-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 1522c91..8552f46 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -4976,7 +4976,13 @@
int dims = getType(coordinate.type).sizeInComponents - (isArrayed ? 1 : 0);
SIMD::Int u = coordinate.Int(0);
- SIMD::Int v = (getType(coordinate.type).sizeInComponents > 1) ? coordinate.Int(1) : RValue<SIMD::Int>(0);
+ SIMD::Int v = SIMD::Int(0);
+
+ if (getType(coordinate.type).sizeInComponents > 1)
+ {
+ v = coordinate.Int(1);
+ }
+
if (dim == spv::DimSubpassData)
{
u += routine->windowSpacePosition[0];