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

Author: Dave Airlie <[email protected]>
Date:   Wed Jul  5 10:19:08 2023 +1000

gallivm: convert grid_size to discrete values.

No use in storing this in a vector

Reviewed-by: Mike Blumenkrantz <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23997>

---

 src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c  | 2 +-
 src/gallium/auxiliary/gallivm/lp_bld_tgsi.h     | 2 +-
 src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 2 +-
 src/gallium/drivers/llvmpipe/lp_state_cs.c      | 7 +++----
 4 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c 
b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
index de0e63ce3a7..7eb32327801 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
@@ -1941,7 +1941,7 @@ static void emit_sysval_intrin(struct 
lp_build_nir_context *bld_base,
    case nir_intrinsic_load_num_workgroups: {
       LLVMValueRef tmp[3];
       for (unsigned i = 0; i < 3; i++) {
-         tmp[i] = LLVMBuildExtractElement(gallivm->builder, 
bld->system_values.grid_size, lp_build_const_int32(gallivm, i), "");
+         tmp[i] = bld->system_values.grid_size[i];
          if (instr->dest.ssa.bit_size == 64)
             tmp[i] = LLVMBuildZExt(gallivm->builder, tmp[i], 
bld_base->uint64_bld.elem_type, "");
          result[i] = lp_build_broadcast_scalar(bld_broad, tmp[i]);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h 
b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
index a489108ecf3..f48bb2f2f0c 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -174,7 +174,7 @@ struct lp_bld_tgsi_system_values {
    LLVMValueRef draw_id;
    LLVMValueRef thread_id[3];
    LLVMValueRef block_id[3];
-   LLVMValueRef grid_size;
+   LLVMValueRef grid_size[3];
    LLVMValueRef front_facing;
    LLVMValueRef work_dim;
    LLVMValueRef block_size;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c 
b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 810f22c60ae..fd288f9cc42 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -1548,7 +1548,7 @@ emit_fetch_system_value(
       break;
 
    case TGSI_SEMANTIC_GRID_SIZE:
-      res = lp_build_extract_broadcast(gallivm, lp_type_int_vec(32, 96), 
bld_base->uint_bld.type, bld->system_values.grid_size, 
lp_build_const_int32(gallivm, swizzle));
+      res = lp_build_broadcast_scalar(&bld_base->uint_bld, 
bld->system_values.grid_size[swizzle]);
       atype = TGSI_TYPE_UNSIGNED;
       break;
 
diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c 
b/src/gallium/drivers/llvmpipe/lp_state_cs.c
index 8850ce54ab5..00cbeab1ab8 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_cs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c
@@ -659,10 +659,9 @@ generate_compute(struct llvmpipe_context *lp,
       system_values.block_id[1] = grid_y_arg;
       system_values.block_id[2] = grid_z_arg;
 
-      LLVMValueRef gstids[3] = { grid_size_x_arg, grid_size_y_arg, 
grid_size_z_arg };
-      system_values.grid_size = LLVMGetUndef(LLVMVectorType(int32_type, 3));
-      for (i = 0; i < 3; i++)
-         system_values.grid_size = LLVMBuildInsertElement(builder, 
system_values.grid_size, gstids[i], lp_build_const_int32(gallivm, i), "");
+      system_values.grid_size[0] = grid_size_x_arg;
+      system_values.grid_size[1] = grid_size_y_arg;
+      system_values.grid_size[2] = grid_size_z_arg;
 
       system_values.work_dim = work_dim_arg;
       system_values.draw_id = draw_id_arg;

Reply via email to