diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp index ef2ddd3d9b0..bba1a4f60f6 100644 --- a/src/amd/compiler/aco_insert_exec_mask.cpp +++ b/src/amd/compiler/aco_insert_exec_mask.cpp @@ -69,7 +69,7 @@ needs_exact(aco_ptr& instr) } else if (instr->isFlatLike()) { return instr->flatlike().disable_wqm; } else { - /* Require Exact for p_jump_to_epilog because if p_exit_early_if is + /* Require Exact for p_jump_to_epilog because if p_exit_early_if_not is * emitted inside the same block, the main FS will always jump to the PS * epilog without considering the exec mask. */ @@ -467,7 +467,7 @@ process_instructions(exec_ctx& ctx, Block* block, std::vectordefinitions[1].getTemp(); } - instr->opcode = aco_opcode::p_exit_early_if; + instr->opcode = aco_opcode::p_exit_early_if_not; instr->operands[0] = bld.scc(exit_cond); assert(!ctx.handle_wqm || (info.exec[0].type & mask_type_wqm) == 0); @@ -524,7 +524,7 @@ process_instructions(exec_ctx& ctx, Block* block, std::vectoropcode = aco_opcode::p_exit_early_if; + instr->opcode = aco_opcode::p_exit_early_if_not; instr->operands[0] = bld.scc(exit_cond.getTemp()); bld.insert(std::move(instr)); diff --git a/src/amd/compiler/aco_lower_to_hw_instr.cpp b/src/amd/compiler/aco_lower_to_hw_instr.cpp index 5ec32ab004c..a2a0a9353d0 100644 --- a/src/amd/compiler/aco_lower_to_hw_instr.cpp +++ b/src/amd/compiler/aco_lower_to_hw_instr.cpp @@ -2340,7 +2340,7 @@ lower_to_hw_instr(Program* program) handle_operands(copy_operations, &ctx, program->gfx_level, pi); break; } - case aco_opcode::p_exit_early_if: { + case aco_opcode::p_exit_early_if_not: { /* don't bother with an early exit near the end of the program */ if ((block->instructions.size() - 1 - instr_idx) <= 5 && block->instructions.back()->opcode == aco_opcode::s_endpgm) { @@ -2910,7 +2910,7 @@ lower_to_hw_instr(Program* program) block->instructions = std::move(ctx.instructions); } - /* If block with p_end_with_regs is not the last block (i.e. p_exit_early_if may append exit + /* If block with p_end_with_regs is not the last block (i.e. p_exit_early_if_not may append exit * block at last), create an exit block for it to branch to. */ int last_block_index = program->blocks.size() - 1; diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py index ded8ffd6ba6..361535bbf5e 100644 --- a/src/amd/compiler/aco_opcodes.py +++ b/src/amd/compiler/aco_opcodes.py @@ -390,7 +390,7 @@ insn("p_end_wqm") insn("p_discard_if") insn("p_demote_to_helper") insn("p_is_helper") -insn("p_exit_early_if") +insn("p_exit_early_if_not") # simulates proper bpermute behavior using v_readlane_b32 # definitions: result VGPR, temp EXEC, clobbered VCC diff --git a/src/amd/compiler/aco_scheduler.cpp b/src/amd/compiler/aco_scheduler.cpp index c3ec3c94097..5b3de404cbd 100644 --- a/src/amd/compiler/aco_scheduler.cpp +++ b/src/amd/compiler/aco_scheduler.cpp @@ -555,7 +555,7 @@ HazardResult perform_hazard_query(hazard_query* query, Instruction* instr, bool upwards) { /* don't schedule discards downwards */ - if (!upwards && instr->opcode == aco_opcode::p_exit_early_if) + if (!upwards && instr->opcode == aco_opcode::p_exit_early_if_not) return hazard_fail_unreorderable; /* In Primitive Ordered Pixel Shading, await overlapped waves as late as possible, and notify diff --git a/src/amd/compiler/tests/test_d3d11_derivs.cpp b/src/amd/compiler/tests/test_d3d11_derivs.cpp index b14b135c376..ac46dd8e34d 100644 --- a/src/amd/compiler/tests/test_d3d11_derivs.cpp +++ b/src/amd/compiler/tests/test_d3d11_derivs.cpp @@ -116,7 +116,7 @@ BEGIN_TEST(d3d11_derivs.discard) /* The discard gets emitted as demote_if. */ //>> s2: %_:exec, s1: %cond:scc = s_wqm_b64 %_ - //>> p_exit_early_if (kill)%cond:scc + //>> p_exit_early_if_not (kill)%cond:scc //>> v4: %_ = image_sample (kill)%_, (kill)%_, v1: undef, (kill)%_, (kill)%_ 2d pbld.print_ir(VK_SHADER_STAGE_FRAGMENT_BIT, "ACO IR"); END_TEST