mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
aco: remove condition operand from branch in invert block
As value numbering only handles logical blocks, this could lead to invalid IR until insert_exec_mask(). No fossil-db changes. Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10894>
This commit is contained in:
parent
2bb1bf78f0
commit
32c7d17120
2 changed files with 2 additions and 3 deletions
|
|
@ -983,7 +983,7 @@ void add_branch_code(exec_ctx& ctx, Block* block)
|
|||
|
||||
if (block->kind & block_kind_invert) {
|
||||
// exec = s_andn2_b64 (original_exec, exec)
|
||||
assert(block->instructions.back()->opcode == aco_opcode::p_cbranch_nz);
|
||||
assert(block->instructions.back()->opcode == aco_opcode::p_branch);
|
||||
block->instructions.pop_back();
|
||||
assert(ctx.info[idx].exec.size() >= 2);
|
||||
Operand orig_exec = ctx.info[idx].exec[ctx.info[idx].exec.size() - 2].first;
|
||||
|
|
|
|||
|
|
@ -9973,10 +9973,9 @@ static void begin_divergent_if_else(isel_context *ctx, if_context *ic)
|
|||
ic->invert_idx = ctx->block->index;
|
||||
|
||||
/* branch to linear else block (skip else) */
|
||||
branch.reset(create_instruction<Pseudo_branch_instruction>(aco_opcode::p_cbranch_nz, Format::PSEUDO_BRANCH, 1, 1));
|
||||
branch.reset(create_instruction<Pseudo_branch_instruction>(aco_opcode::p_branch, Format::PSEUDO_BRANCH, 0, 1));
|
||||
branch->definitions[0] = Definition(ctx->program->allocateTmp(s2));
|
||||
branch->definitions[0].setHint(vcc);
|
||||
branch->operands[0] = Operand(ic->cond);
|
||||
ctx->block->instructions.push_back(std::move(branch));
|
||||
|
||||
ic->exec_potentially_empty_discard_old |= ctx->cf_info.exec_potentially_empty_discard;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue