aco: check if SALU instructions are predeceeded by exec when calculating WQM needs

Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
This commit is contained in:
Daniel Schürmann
2019-11-11 16:21:51 +01:00
committed by Timur Kristóf
parent ee9811a0bb
commit 8657eede8a
3 changed files with 13 additions and 10 deletions
+1 -8
View File
@@ -115,13 +115,6 @@ bool VALU_writes_sgpr(aco_ptr<Instruction>& instr)
return false;
}
bool instr_reads_exec(const aco_ptr<Instruction>& instr)
{
return std::any_of(instr->operands.begin(), instr->operands.end(), [](const Operand &op) -> bool {
return op.physReg() == exec_lo || op.physReg() == exec_hi;
});
}
bool instr_writes_exec(const aco_ptr<Instruction>& instr)
{
return std::any_of(instr->definitions.begin(), instr->definitions.end(), [](const Definition &def) -> bool {
@@ -445,7 +438,7 @@ void handle_instruction_gfx10(NOP_ctx_gfx10 &ctx, aco_ptr<Instruction>& instr,
/* VcmpxExecWARHazard
* Handle any VALU instruction writing the exec mask after it was read by a non-VALU instruction.
*/
if (!instr->isVALU() && instr_reads_exec(instr)) {
if (!instr->isVALU() && instr->reads_exec()) {
ctx.has_nonVALU_exec_read = true;
} else if (instr->isVALU()) {
if (instr_writes_exec(instr)) {