diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index bfb268a045f..f7a33054a41 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8349,6 +8349,8 @@ void visit_intrinsic(isel_context *ctx, nir_intrinsic_instr *instr) case nir_intrinsic_mbcnt_amd: { Temp src = get_ssa_temp(ctx, instr->src[0].ssa); Temp dst = get_ssa_temp(ctx, &instr->dest.ssa); + /* Fit 64-bit mask for wave32 */ + src = emit_extract_vector(ctx, src, 0, RegClass(src.type(), bld.lm.size())); Temp wqm_tmp = emit_mbcnt(ctx, bld.tmp(v1), Operand(src)); emit_wqm(ctx, wqm_tmp, dst); break;