Mesa (master): spirv: fix 64 bit atomic inc and dec

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Sep 1 19:05:30 UTC 2020


Module: Mesa
Branch: master
Commit: 5eacaa95a782eb1e63f6c51dc3f1ace1960ab958
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5eacaa95a782eb1e63f6c51dc3f1ace1960ab958

Author: Karol Herbst <kherbst at redhat.com>
Date:   Sat Aug 22 13:48:35 2020 +0200

spirv: fix 64 bit atomic inc and dec

Signed-off-by: Karol Herbst <kherbst at redhat.com>
Reviewed-by: Jason Ekstrand <jason at jlekstran.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6433>

---

 src/compiler/spirv/spirv_to_nir.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 4d7f9f2f8c3..3a886ce6556 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -2889,13 +2889,16 @@ static void
 fill_common_atomic_sources(struct vtn_builder *b, SpvOp opcode,
                            const uint32_t *w, nir_src *src)
 {
+   const struct glsl_type *type = vtn_get_type(b, w[1])->type;
+   unsigned bit_size = glsl_get_bit_size(type);
+
    switch (opcode) {
    case SpvOpAtomicIIncrement:
-      src[0] = nir_src_for_ssa(nir_imm_int(&b->nb, 1));
+      src[0] = nir_src_for_ssa(nir_imm_intN_t(&b->nb, 1, bit_size));
       break;
 
    case SpvOpAtomicIDecrement:
-      src[0] = nir_src_for_ssa(nir_imm_int(&b->nb, -1));
+      src[0] = nir_src_for_ssa(nir_imm_intN_t(&b->nb, -1, bit_size));
       break;
 
    case SpvOpAtomicISub:



More information about the mesa-commit mailing list