Mesa (main): broadcom/compiler: better document vectorization implications

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jan 25 09:38:46 UTC 2022


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed Jan 19 09:36:49 2022 +0100

broadcom/compiler: better document vectorization implications

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14648>

---

 src/broadcom/compiler/nir_to_vir.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index e93e754c51a..84c8f57fd6d 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -1830,7 +1830,7 @@ mem_vectorize_callback(unsigned align_mul, unsigned align_offset,
                        nir_intrinsic_instr *high,
                        void *data)
 {
-        /* Our backend is 32-bit only at present */
+        /* TMU general access only supports 32-bit vectors */
         if (bit_size != 32)
                 return false;
 
@@ -1873,6 +1873,13 @@ v3d_optimize_nir(struct v3d_compile *c, struct nir_shader *s)
                 NIR_PASS(progress, s, nir_opt_algebraic);
                 NIR_PASS(progress, s, nir_opt_constant_folding);
 
+                /* Note that vectorization may undo the load/store scalarization
+                 * pass we run for non 32-bit TMU general load/store by
+                 * converting, for example, 2 consecutive 16-bit loads into a
+                 * single 32-bit load. This is fine (and desirable) as long as
+                 * the resulting 32-bit load meets 32-bit alignment requirements,
+                 * which mem_vectorize_callback() should be enforcing.
+                 */
                 nir_load_store_vectorize_options vectorize_opts = {
                         .modes = nir_var_mem_ssbo | nir_var_mem_ubo |
                                  nir_var_mem_push_const | nir_var_mem_shared |



More information about the mesa-commit mailing list