From ef5fc6a764954ed9ae5d9171c167f3d4884e0aa5 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 20 Oct 2022 01:41:51 +0000 Subject: [PATCH] aco: fix tcs_wave_id unpacking on GFX11 Only the first 3 bits are useful. Ported from ac/llvm. Signed-off-by: Samuel Pitoiset Reviewed-by: Rhys Perry Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 8df3b7db762..f2afe92ec5a 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8444,7 +8444,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) /* On GFX11, RelAutoIndex is WaveID * WaveSize + ThreadID. */ Temp wave_id = bld.sop2(aco_opcode::s_bfe_u32, bld.def(s1), bld.def(s1, scc), - get_arg(ctx, ctx->args->ac.tcs_wave_id), Operand::c32(0u | (5u << 16))); + get_arg(ctx, ctx->args->ac.tcs_wave_id), Operand::c32(0u | (3u << 16))); Temp temp = bld.sop2(aco_opcode::s_mul_i32, bld.def(s1), wave_id, Operand::c32(ctx->program->wave_size));