pan/indirect_dispatch: Expand split expressions
authorAlyssa Rosenzweig <alyssa@collabora.com>
Wed, 9 Jun 2021 16:31:10 +0000 (12:31 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 10 Jun 2021 18:06:11 +0000 (18:06 +0000)
Careful algebraic transforms makes these much simpler.

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

src/panfrost/lib/pan_indirect_dispatch.c

index a7aa9ca..7620c1b 100644 (file)
@@ -193,18 +193,10 @@ pan_indirect_dispatch_init(struct panfrost_device *dev)
                 nir_ssa_def *dims = nir_channel(&b, job_dim, 0);
                 nir_ssa_def *split = nir_channel(&b, job_dim, 1);
                 nir_ssa_def *num_wg_x_split = nir_iand_imm(&b, nir_ushr_imm(&b, split, 10), 0x3f);
-                nir_ssa_def *num_wg_y_split =
-                        nir_iadd(&b, num_wg_x_split,
-                                 nir_bcsel(&b,
-                                           nir_ieq(&b, num_wg_x_m1, zero),
-                                           zero,
-                                           nir_iadd(&b, nir_ufind_msb(&b, num_wg_x_m1), one)));
-                nir_ssa_def *num_wg_z_split =
-                        nir_iadd(&b, num_wg_y_split,
-                                 nir_bcsel(&b,
-                                           nir_ieq(&b, num_wg_y_m1, zero),
-                                           zero,
-                                           nir_iadd(&b, nir_ufind_msb(&b, num_wg_y_m1), one)));
+                nir_ssa_def *num_wg_y_split = nir_iadd(&b, num_wg_x_split,
+                                nir_isub_imm(&b, 32, nir_uclz(&b, num_wg_x_m1)));
+                nir_ssa_def *num_wg_z_split = nir_iadd(&b, num_wg_y_split,
+                                nir_isub_imm(&b, 32, nir_uclz(&b, num_wg_y_m1)));
                 split = nir_ior(&b, split,
                                 nir_ior(&b,
                                         nir_ishl(&b, num_wg_y_split, nir_imm_int(&b, 16)),