summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2018-12-15 09:57:26 -0600
committerJason Ekstrand <[email protected]>2019-01-08 00:38:29 +0000
commitc59f07684c0c99fad0c246dd4a475f6bef5d3cbc (patch)
tree6303cb3c494ff29d4936550047afc2209c7449c5
parentf8992eb5badf91e0d9ad3732d56a4e3d78fd1abf (diff)
spirv: Sign-extend array indices
The SPIR-V spec was recently updated to clarify that array indices are treated as signed integers. Cc: [email protected] Reviewed-by: Alejandro PiƱeiro <[email protected]> Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
-rw-r--r--src/compiler/spirv/vtn_variables.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 025c6a23734..23fcd8b54d2 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -132,12 +132,12 @@ vtn_access_link_as_ssa(struct vtn_builder *b, struct vtn_access_link link,
} else if (stride == 1) {
nir_ssa_def *ssa = vtn_ssa_value(b, link.id)->def;
if (ssa->bit_size != 32)
- ssa = nir_u2u32(&b->nb, ssa);
+ ssa = nir_i2i32(&b->nb, ssa);
return ssa;
} else {
nir_ssa_def *src0 = vtn_ssa_value(b, link.id)->def;
if (src0->bit_size != 32)
- src0 = nir_u2u32(&b->nb, src0);
+ src0 = nir_i2i32(&b->nb, src0);
return nir_imul_imm(&b->nb, src0, stride);
}
}