From fdfc8b980666c197c8a813012f23b1b9064c00f1 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 9 Jun 2021 12:31:10 -0400 Subject: [PATCH] pan/indirect_dispatch: Expand split expressions Careful algebraic transforms makes these much simpler. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/lib/pan_indirect_dispatch.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/panfrost/lib/pan_indirect_dispatch.c b/src/panfrost/lib/pan_indirect_dispatch.c index a7aa9ca713e..7620c1b24bd 100644 --- a/src/panfrost/lib/pan_indirect_dispatch.c +++ b/src/panfrost/lib/pan_indirect_dispatch.c @@ -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)),