Mesa (master): pan/mdg: Handle 32-bit offsets from store_shared

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Aug 19 12:19:22 UTC 2020


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

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Thu Aug 13 18:56:40 2020 -0400

pan/mdg: Handle 32-bit offsets from store_shared

Implicitly zero-extended for the 64-bit address.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6321>

---

 src/panfrost/midgard/midgard_address.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/panfrost/midgard/midgard_address.c b/src/panfrost/midgard/midgard_address.c
index 5e287dad14f..2f57c3464a7 100644
--- a/src/panfrost/midgard/midgard_address.c
+++ b/src/panfrost/midgard/midgard_address.c
@@ -198,10 +198,16 @@ mir_set_offset(compiler_context *ctx, midgard_instruction *ins, nir_src *offset,
                 ins->swizzle[2][i] = 0;
         }
 
+        bool force_zext = (nir_src_bit_size(*offset) < 64);
+
         if (!offset->is_ssa) {
                 ins->load_store.arg_1 |= is_shared ? 0x6E : 0x7E;
                 ins->src[2] = nir_src_index(ctx, offset);
                 ins->src_types[2] = nir_type_uint | nir_src_bit_size(*offset);
+
+                if (force_zext)
+                        ins->load_store.arg_1 |= 0x80;
+
                 return;
         }
 
@@ -221,7 +227,7 @@ mir_set_offset(compiler_context *ctx, midgard_instruction *ins, nir_src *offset,
         } else
                 ins->load_store.arg_2 = 0x1E;
 
-        if (match.zext)
+        if (match.zext || force_zext)
                 ins->load_store.arg_1 |= 0x80;
 
         assert(match.shift <= 7);



More information about the mesa-commit mailing list