From cbcc0368fb30ad872d0b4bbd1c8373241933cd9c 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: (cherry picked from commit 3d4dfae7ebdbaf4bdadced307496ccf5130c6d2c) --- .pick_status.json | 2 +- src/amd/compiler/aco_instruction_selection.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2912735560d..92e2e8f500b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -944,7 +944,7 @@ "description": "aco: fix nir_op_pack_32_4x8 handling", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e0d232c2fc729fd95f3c01bddeead2eebf3d4e9a", "notes": null diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 1fe6918aa51..480a0f590e0 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; } }