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

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

gallivm: convert block_id to discrete values.

There is no reason to stick these 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 1005717e941..de0e63ce3a7 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
@@ -1924,7 +1924,7 @@ static void emit_sysval_intrin(struct 
lp_build_nir_context *bld_base,
    case nir_intrinsic_load_workgroup_id: {
       LLVMValueRef tmp[3];
       for (unsigned i = 0; i < 3; i++) {
-         tmp[i] = LLVMBuildExtractElement(gallivm->builder, 
bld->system_values.block_id, lp_build_const_int32(gallivm, i), "");
+         tmp[i] = bld->system_values.block_id[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 8f750077600..a489108ecf3 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -173,7 +173,7 @@ struct lp_bld_tgsi_system_values {
    LLVMValueRef invocation_id;
    LLVMValueRef draw_id;
    LLVMValueRef thread_id[3];
-   LLVMValueRef block_id;
+   LLVMValueRef block_id[3];
    LLVMValueRef grid_size;
    LLVMValueRef front_facing;
    LLVMValueRef work_dim;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c 
b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index b3b29a7e8ac..810f22c60ae 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -1543,7 +1543,7 @@ emit_fetch_system_value(
       break;
 
    case TGSI_SEMANTIC_BLOCK_ID:
-      res = lp_build_extract_broadcast(gallivm, lp_type_int_vec(32, 96), 
bld_base->uint_bld.type, bld->system_values.block_id, 
lp_build_const_int32(gallivm, swizzle));
+      res = lp_build_broadcast_scalar(&bld_base->uint_bld, 
bld->system_values.block_id[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 efaee973bb7..8850ce54ab5 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_cs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c
@@ -655,10 +655,9 @@ generate_compute(struct llvmpipe_context *lp,
       system_values.thread_id[1] = lp_build_gather_values(gallivm, tids_y, 
cs_type.length);
       system_values.thread_id[2] = lp_build_gather_values(gallivm, tids_z, 
cs_type.length);
 
-      LLVMValueRef gtids[3] = { grid_x_arg, grid_y_arg, grid_z_arg };
-      system_values.block_id = LLVMGetUndef(LLVMVectorType(int32_type, 3));
-      for (i = 0; i < 3; i++)
-         system_values.block_id = LLVMBuildInsertElement(builder, 
system_values.block_id, gtids[i], lp_build_const_int32(gallivm, i), "");
+      system_values.block_id[0] = grid_x_arg;
+      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));

Reply via email to