Mesa (main): pan/mdg: Model zero/sign extension for 8/16-bit loads

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 18 15:28:39 UTC 2022


Module: Mesa
Branch: main
Commit: 8d949ecd3ae58d8e8975de698b5b49529038ebaf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d949ecd3ae58d8e8975de698b5b49529038ebaf

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Fri Feb  4 17:36:27 2022 -0500

pan/mdg: Model zero/sign extension for 8/16-bit loads

The destinations are packed as if 32-bit even for 8/16-bit loads, so the mask
needs to be constructed accordingly.

Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14888>

---

 src/panfrost/midgard/midgard_compile.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c
index 793612b7131..4dabf8bf9a4 100644
--- a/src/panfrost/midgard/midgard_compile.c
+++ b/src/panfrost/midgard/midgard_compile.c
@@ -1199,7 +1199,9 @@ mir_set_intr_mask(nir_instr *instr, midgard_instruction *ins, bool is_read)
 
         if (is_read) {
                 nir_mask = mask_of(nir_intrinsic_dest_components(intr));
-                dsize = nir_dest_bit_size(intr->dest);
+
+                /* Extension is mandatory for 8/16-bit loads */
+                dsize = nir_dest_bit_size(intr->dest) == 64 ? 64 : 32;
         } else {
                 nir_mask = nir_intrinsic_write_mask(intr);
                 dsize = OP_IS_COMMON_STORE(ins->op) ?



More information about the mesa-commit mailing list