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));
