diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2018-12-15 09:57:26 -0600 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2019-01-11 19:19:09 +0000 |
commit | 39b2d2fe087f79f1f631254389411cab75817766 (patch) | |
tree | 336b536f0b714ee208d77855adc689a3a2907ac9 | |
parent | ca8ef8234e5564568cf4b96d3fc337d8941dbc6c (diff) |
spirv: Sign-extend array indices
The SPIR-V spec was recently updated to clarify that array indices are
treated as signed integers.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
(cherry picked from commit c59f07684c0c99fad0c246dd4a475f6bef5d3cbc)
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Conflicts:
src/compiler/spirv/vtn_variables.c
-rw-r--r-- | src/compiler/spirv/vtn_variables.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index f3e64d2a819..0eb9f263436 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(&b->nb, src0, nir_imm_int(&b->nb, stride)); } } |