Mesa (main): aco: don't ever widen 8/16-bit sgpr load_shared
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 9 12:23:01 UTC 2021
Module: Mesa
Branch: main
Commit: 6334d73fc958af6ef3fbe869ecad47b5bc5f530d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6334d73fc958af6ef3fbe869ecad47b5bc5f530d
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Tue Jun 1 13:39:56 2021 +0100
aco: don't ever widen 8/16-bit sgpr load_shared
Doesn't seem to create incorrect code, but it is suboptimal.
No fossil-db changes.
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11113>
---
src/amd/compiler/aco_instruction_selection.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index ed87d757e03..0a2a66f4673 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -3894,14 +3894,13 @@ Temp global_load_callback(Builder& bld, const LoadEmitInfo &info,
const EmitLoadParameters global_load_params { global_load_callback, true, true, 1 };
-Temp load_lds(isel_context *ctx, unsigned elem_size_bytes, Temp dst,
+Temp load_lds(isel_context *ctx, unsigned elem_size_bytes, unsigned num_components, Temp dst,
Temp address, unsigned base_offset, unsigned align)
{
assert(util_is_power_of_two_nonzero(align));
Builder bld(ctx->program, ctx->block);
- unsigned num_components = dst.bytes() / elem_size_bytes;
LoadEmitInfo info = {Operand(as_vgpr(ctx, address)), dst, num_components, elem_size_bytes};
info.align_mul = align;
info.align_offset = 0;
@@ -6856,8 +6855,9 @@ void visit_load_shared(isel_context *ctx, nir_intrinsic_instr *instr)
Builder bld(ctx->program, ctx->block);
unsigned elem_size_bytes = instr->dest.ssa.bit_size / 8;
+ unsigned num_components = instr->dest.ssa.num_components;
unsigned align = nir_intrinsic_align_mul(instr) ? nir_intrinsic_align(instr) : elem_size_bytes;
- load_lds(ctx, elem_size_bytes, dst, address, nir_intrinsic_base(instr), align);
+ load_lds(ctx, elem_size_bytes, num_components, dst, address, nir_intrinsic_base(instr), align);
}
void visit_store_shared(isel_context *ctx, nir_intrinsic_instr *instr)
More information about the mesa-commit
mailing list