From 3d4dfae7ebdbaf4bdadced307496ccf5130c6d2c Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 4 Mar 2024 15:07:26 -0800 Subject: [PATCH] aco: fix nir_op_pack_32_4x8 handling I started seeing ACO ERROR: In file ../src/amd/compiler/aco_validate.cpp:98 Operand and Definition types do not match: s1: %44 = p_parallelcopy %158 test_basic: ../src/amd/compiler/aco_interface.cpp:85: void validate(aco::Program*): Assertion `is_valid' failed. since commit 52ee4cf2292 ("nir/builder: Teach nir_pack_bits and nir_unpack_bits about 32_4x8"). Fixes: e0d232c2fc7 ("aco: implement nir_op_pack_32_4x8"). I Suggested-by: Georg Lehmann 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 f274818ea2f..4e38dbd22c2 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -759,7 +759,7 @@ get_alu_src(struct isel_context* ctx, nir_alu_src src, unsigned size = 1) vec_instr->definitions[0] = Definition(dst); ctx->block->instructions.emplace_back(std::move(vec_instr)); ctx->allocated_vec.emplace(dst.id(), elems); - return vec.type() == RegType::sgpr ? Builder(ctx->program, ctx->block).as_uniform(dst) : dst; + return as_uniform ? Builder(ctx->program, ctx->block).as_uniform(dst) : dst; } }